Azure App Service で Java SE on Linux をサポート

執筆者: Joaquín Vano (Principal aSoftware Engineering Manager, Azure App Service)

このポストは、2018 年 7 月 25 日に投稿された Azure App Service now supports Java SE on Linux の翻訳です。

 

このところ、Java と活気ある Java コミュニティに大きな変化が起きています。Java は開発者や企業の間で最も広く使用されているプログラム言語であり、Oracle の Java SE と Eclipse Foundation の Jakarta EE (旧称 Java EE) の間で共有されています。現在は、世界中の 1,200 万人以上もの Java 開発者が最新アプリケーションを開発し、多くの IT 企業でデジタル トランスフォーメーションが進められています。今日のクラウドの繁栄において Java は非常に重要な存在となっています。

既存または開発が進められているさまざまな Java アプリでは、クラウド サービスのメリットを最大限に活用して、時間とコストを抑えながらすばやく安全にアプリケーションを開発することができます。また、世界中の地域で広く利用できることもあり、開発者にとって非常に魅力的なクラウド ソリューションといえます。

このたび、Azure App Service のパブリック プレビューとして Java SE 8 ベースの Linux アプリケーションのサポートを開始します。今回以降のバージョンは、近日リリース予定の LTS バージョンと同様、サポート期間が延長されます。これにより、マイクロソフトが管理するバグ修正やセキュリティに関する更新プログラムが自動で適用されるスケーラビリティの高い Web ホスティング サービス上で、Java Web アプリの構築やデプロイを行うことができます。さらなるパフォーマンス機能として、インテリジェントな動的スケーリング構成では、複数のインスタンス、アプリケーション、リージョンで数百万以上のユーザーをサポートすることができます。
 

Java Web アプリのメリット

Azure App Service では、エンタープライズ クラスのインフラストラクチャに必要なさまざまな処理が自動化されており、開発者は作業の生産性を高めることに注力できます。これは、グローバル セキュリティ コンプライアンスや DevOps 機能などの厳しいテストをクリアした Microsoft Azure のインフラストラクチャが基盤となっています。さらに、Java Web アプリは生産性の向上に効果的な以下の機能を備えています。

  • フル マネージド型のエンタープライズ プラットフォーム – ログの集約、メール通知、Azure ポータルのアラートなどを使用できます。近日リリース予定のバージョンでは、更新プログラムの自動適用にも対応します。
  • パフォーマンス監視 – お好みのアプリケーション パフォーマンス管理 (APM) 製品と統合して、アプリケーションを監視および管理することができます。
  • グローバルなスケーリングと高可用性 – マイクロソフトのすべてのグローバル データセンターでは、低レイテンシ、自動/手動スケーリング (スケールアップ/スケールアウト) をサポートすると共に、99.95% の可用性を保証しています。
  • セキュリティとコンプライアンス – App Service は ISO、SOC、PCI、GDPR に準拠しています。
  • 認証と承認 Azure Active Directory に組み込みの認証機能では、ロール ベースのアクセス制御 (RBAC) を使用して IP アドレス制限を管理することができます。
  • 自動ビルドと CI/CD のサポート – 一般提供時には、Maven、Jenkins、Visual Studio Team Services をサポートする予定です。

Azure に Java Web アプリをデプロイする方法には、Azure ポータルから作成する方法、テンプレートを使用する方法、Maven から作成およびデプロイする方法の 3 種類があります。今回は、Maven を使用して Spring Boot アプリをデプロイする方法をご紹介します。
 

Maven と Spring の使用方法

お好みの Java Web アプリのクローンを作成するか、こちらのサンプル (bash-3.2$ git clone、英語) を使用します。

Azure Web Apps 用 Maven プラグインをアプリ プロジェクトの POM ファイルに追加し、サーバーのポート番号を 80 に設定します。​​

 <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> 

通常の手順に従って Maven でビルド、パッケージ化、デプロイを実行します。

 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] ----------------------------------------------------------------------

お好みのブラウザーでサイトを開きます。

これで Azure App Service に Java Web アプリがデプロイされました。
 

さらに便利な Java ツールを開発中

プロジェクトごとに最適な開発ツールは異なります。マイクロソフトは、今後も生産性や効率を向上させるツール スイートの拡充を続けてまいります。近いうちに、Gradle と Jenkins をサポートする予定です。
 

次のステップ

Azure App Service なら、簡単にすばやくクラウドで Java Web アプリを実行できるようになります。以下の関連資料をお読みになり、ぜひ Azure サービスで Java Web アプリを作成してみてください。

Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してお試しください。