このページの本文へ

開発者を魅了するマイクロソフトの開発プラットフォームを探れ 第9回

NRIデジタルから見たJava on Azureのメリットと使い所

Javaのクラウド活用を学ぶ「Java on Azure Day 2022」が今年も開催

2022年04月22日 10時00分更新

文● 大谷イビサ 編集●ASCII

提供: 日本マイクロソフト

  • この記事をはてなブックマークに追加
  • 本文印刷

 2022年4月21日、マイクロソフトはAzure上のJava活用にフォーカスした「Java on Azure Day 2022」を開催した。基調講演に登壇したMicrosoft Corporationの寺田 佳央氏は、この1年のJava on Azureのアップデートを紹介。また、ヤマト運輸のシステムでJava on Azureを実践しているNRIデジタルの湯川勇太氏をゲストに招いて、クラウド活用のポイントについて聞いた。

Java on Azureのこの1年の進化

 「Javaをクラウドで活用するための最新情報・最適解を学ぶ半日」と題された「Java on Azure Day 2022」。基調講演に登壇したMicrosoft Corporationの寺田 佳央氏は、昨年と同日開催であることをアピールしつつ、この1年のJava on Azureにおけるアップデートを振り返った。

Microsoft Corporation Sr. Cloud Adovocate 寺田 佳央氏

 まずはJavaの開発に利用できる「Visual Studio Code for Java」の紹介。数多くのJava用のエクスティンションが用意されており、Spring Boot や MicroProfile、TomcatやDocker/kubernetes、GitHubとの連携も容易になっている。ユーザーもグローバルで150万人を突破したという。

 また、2021年5月に一般公開されたOpenJDKのサポート付きディストリビューションである「Microsoft Build OpenJDK」も正式リリースされた。Azure上でMicrosoft Build OpenJDKを用いた開発を行なうことで、サポートも提供される。「AzureポータルからOpenJDKについての問題を登録できるので、簡単にサポートを受けられる」と寺田氏はアピール。さらにマイクロソフトがJavaの開発コミュニティである「JCP(Java Community Process)」に加入し、Java開発コミュニティに一層貢献していくという。

Microsoft Build OpenJDKが正式リリース

 その他、寺田氏はkubernetesの運用を容易にする「Azure Spring Cloud Enterprise」やクラスター化された「JBoss EAP Cluster on Azure App Service」のプレビュー版も紹介。「今後もいろいろなアップデートを考えています。すでにリリースされているJava 17、18への対応もしっかりやっていくので、ぜひぜひ今後のアップデートもお楽しみにしていただきたい」とまとめた。

NRIデジタルが考えるJava on Azureの注意点

 続いて寺田氏は、Java on Azureを実践するゲストとしてNRIデジタルの湯川勇太氏をゲストに招き入れる。湯川氏は、前職で家電量販店のECサイトを担当し、2018年にNRIに中途入社。2019年11月からは、宅急便のデジタル化を進めるべく、IT/デジタル関係で1500億円の投資を計画しているヤマト運輸を担当し、Azure上で動いているヤマト運輸のシステムの設計や技術検証、障害対応などを行なっている。

NRIデジタル DXエンジニアリング3 クラウドアーキテクト2グループ アーキテクト 湯川勇太氏

 まずは「なぜパブリッククラウドを採用したのか?」 この寺田氏の質問に対して湯川氏は、オンプレミスでは「新しい技術の採用ができない」「スタートアップ時のスピードが遅い」「限られたハードウェアリソース」という課題があったと背景を説明。しかし、Azureの採用でこれらの課題を解決できたという。

 Azureにおいては、マネージドkubernetesサービスであるAKS(Azure Kubernetes Service)を採用することで、アプリケーションの可搬性も確保された。AKSを採用した背景として湯川氏は、「複数のクラウドを採用するのが最初から決まっており、クラウド固有のものは除外した。今後はOpenShiftの活用も検討している」と語る。

 続いて本番環境でkubernetesを稼働させた際の課題として、ネットワーク障害を挙げる。そもそもAzureのアーキテクチャでは、DBのフェイルオーバー、仮想マシンのフリーズ、ハードウェア障害や機器交換、Azureの不具合によるパケットロスによって、ネットワークの問題が起こることが明記されている。そのためユーザーはネットワーク障害が起こること前提でシステムを構築する必要があるという。

kubernetesとネットワーク障害

 ネットワーク問題の解決のためには、一般的にはリトライ設計が重視されるが、実際はタイマー設計のほうが重要だった。「たとえば、DBの通信で問題が発生した場合、タイマー設計をしっかりしないとアプリケーションからはフリーズしたように見える。失敗をきちんとさせることが重要」と湯川氏は語る。ログインのシーケンスのうち、プレログインに影響を与えられるタイムアウトがソケットタイムアウトのみであることを当初認識していなかったため、一時的にコネクションが減少するという予想外の事態が起こったという。

クラウドで起こったことをすべて受け入れるのは違う

 これからAzureを利用するユーザーに向けては、タイマー設計やリトライなど基本の設計が重要とアドバイス。また、サービスに意図的に障害を挿入するカオスエンジニアリング用の「Azure Chaos Studio」や「Chaos Mesh」などのツールを活用し、サービスの品質を高めることができると指摘した。

 また、「クラウドネイティブなシステムは、決してクラウド上で起こったことをすべて受け入れることではない」と湯川氏は指摘する。クラウド事業者にすべて任せ、依存するのではなく、NRIではマイクロソフトといっしょに問題を調査し、エスカレーションさせたこともある。「障害自体を徹底的に調べてみることで、Azure自体はもちろん、k8sに関しても理解が深まる」とのことで自らの学びにもなり、Azureの品質向上にもつながるとアピールした。

 湯川氏とのゲストセッションを終えた寺田氏は、Java開発を支援するリソースやイベントを紹介した。リソースとしては、マイクロソフトでのJava開発をサポートするドキュメントサイトMicrosoft LearnのJavaコンテンツを紹介。開発チームや寺田氏が所属するアドボケートチームが日々作成やメンテナンスを担当しているという。

 イベントとしては、5月4・5日にはグローバルイベント「Microsoft JDConf 2022」、5月25・26日にはいよいよ「Microsoft Build」 が開催される。

 Java on Azure Day 2022の他のセッションのレポートは別項でお伝えする。なお、イベントサイトからの参加者登録の上、アーカイブが視聴可能となっている。

 

(提供:日本マイクロソフト)

カテゴリートップへ

この連載の記事