본문 바로가기

OpenDev

애저 앱 서비스! Java SE 8 지원, 인프라 고민 없이 코드에 집중하기 좋은 세상

개발자를 위한 클라우드 서비스인 애저 앱 서비스(Azure App Service)가 Java SE 8을 지원합니다. 요즘 라이선스 이슈로 개발자 커뮤니티에서 시끄럽긴 하지만 일단 Java SE에 관심을 끊고 살 수는 없죠. 하여간 애저 앱 서비스 환경에서 Java SE 8 기반 앱을 개발하고 운영할 수 있다는 것은 좋은 소식이긴 합니다. 

현재 프리뷰 단계이긴 하지만 지금 바로 Java SE 8 기반 앱을 애저 앱 서비스에 올릴 수 있습니다. 현재 리눅스 상에서 운영하는 것만 지원되는 데요 정식 출시되면 윈도우 서버에서도 이용할 수 있을 것으로 예상합니다. 

Java SE 8 기반 앱을 개발해 둔 것이 있다면 일단 한번 올려 보시죠. 없다면 샘플 코드라도 올려 보시죠. 클라우드 스케일의 확장성을 제공하는 인프라, 스스로 패치를 하는 웹 호스팅 서비스 환경의 이점은 생각보다 큽니다. 자바 개발자가 왜 편해지는지 6가지로 이유를 풀어 보겠습니다. 

(1) 매니지드 서비스 기반 엔터프라이즈 플랫폼: 로그 수집, 이메일 통보, 애저 포탈을 통한 통보, 자동 패치 등 개발자가 인프라에 신경 쓰지 않도록 상당한 수준의 관리를 마이크로소프트가 대신합니다. 

(2) 성능 모니터링: APM 기능이 포함되어 있어서 클라우드에 올린 자바 앱의 성능을 지속해서 살필 수 있습니다. 

(3) 글로벌 수준의 확장과 고가용성 보장: 99.95% 수준의 업타임을 보장하며, 확장의 경우 오토스케일링을 이용하거나 매뉴얼 방식으로 직접 할 수 있습니다. 확장은 마이크로소프트 데이터센터가 위치한 세계 곳곳의 센터를 대상으로 할 수 있습니다. 

(4) 보안과 규제 준수: ISO, SOC, PCI DSS, GDPR 등 각종 규제 준수도 그저 믿고 맡기면 됩니다. 패치 작업 등도 마이크로소프트가 하기 때문에 보안 걱정도 덜 수 있습니다. 

(5) 사용자 인증: 애저 액티브 디렉토리 기반 인증 서비스가 기본으로 제공됩니다. 따라서 역할 기반 접근 제어(RBAC) 정책을 토대로 IP 주소를 통제하고 관리할 수 있습니다. 

(6) CI/CD 지원: 지속적 통합과 배포 기반의 자동화 역시 간편히 이용할 수 있습니다. 메이븐, 젠킨스, 비주얼 스튜디오 팀 서비스 등이 지원될 예정입니다. 

실습 간단히 해보시죠. 작성한 코드가 있다면 해당 앱을 올려 보면 되고, 없다면 다음과 같이 샘플 코드를 불러와 실습하면 됩니다. 

$ git clone https://github.com/spring-projects/spring-petclinic.git


다음에 할 일은 애저 웹 앱에 메이븐 플러그인을 적용하는 것입니다. 

<build>

<plugins> <plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>1.2.0</version> <configuration> <!-- Web App information --> <resourceGroup>${RESOURCE_GROUP}</resourceGroup> <appName>${WEBAPP_NAME}</appName> <region>${REGION}</region> <pricingTier>S1</pricingTier> <!-- Java Runtime Stack for Web App on Linux --> <linuxRuntime>jre8</linuxRuntime> <deploymentType>ftp</deploymentType> <!-- Resources to be deployed to your Web App --> <resources> <resource> <directory>${project.basedir}/target</directory> <targetPath>/</targetPath> <includes> <include>app.jar</include> </includes> </resource> </resources> <appSettings> <property> <name>JAVA_OPTS</name> <value>-Djava.security.egd=file:/dev/./urandom</value> </property> </appSettings> </configuration> </plugin> </plugins> <finalName>app</finalName> </build>

평소 메이븐을 이용해 하듯이 빌드, 패키지, 배포를 해봅니다. 
bash-3.2$ mvn package azure-webapp:deploy [INFO] Scanning for projects... [INFO] [INFO] ---------------------------------------------------------------------- [INFO] Building petclinic 2.0.0 [INFO] ---------------------------------------------------------------------- [INFO] ... ... [INFO] --- azure-webapp-maven-plugin:1.2.0:deploy (default-cli) @ spring-petclinic --- [INFO] Start deploying to Web App myjavase-07262018aa... [INFO] Authenticate with Azure CLI 2.0 [INFO] Target Web App doesn't exist. Creating a new one... [INFO] Creating App Service Plan 'ServicePlan1af9c8f0-3f71-43a8'... [INFO] Successfully created App Service Plan. [INFO] Successfully created Web App. ... ... [INFO] Finished uploading directory: /Users/selvasingh/GitHub/selvasingh/spring-petclinic/target/azure-webapps/myjavase-07262018aa --> /site/wwwroot [INFO] Successfully uploaded files to FTP server: waws-prod-bay-081.ftp.azurewebsites.windows.net [INFO] Starting Web App after deploying artifacts... [INFO] Successfully started Web App. [INFO] Successfully deployed Web App at https://myjavase-07262018aa.azurewebsites.net [INFO] ---------------------------------------------------------------------- [INFO] BUILD SUCCESS [INFO] ---------------------------------------------------------------------- [INFO] Total time: 03:06 min [INFO] Finished at: 2018-07-13T18:03:22-07:00 [INFO] Final Memory: 139M/987M [INFO] ----------------------------------------------------------------------


이제 남은 일은 브라우저를 열어 사이트를 열어 보는 것입니다. 샘플 코드를 이용했다면 다음 화면이 보일 것입니다. Java SE 앱을 이렇게 쉽게 올려 쓸 수 있다니 참 편한 세상입니다.