こんにちは、サイオステクノロジー技術部 武井です。本日、マイクロソフト本社で行われた『JJUG ナイトセミナー 「Java on Azure まつり@Microsoft」』に参加をしてまいりました。そのレポートをさせて頂きます。
※アイキャッチ画像は、本イベントで頂いたステッカーです
概要
本セミナーは、Azure上でJavaを使うためのノウハウや悲喜こもごもを、その道の各スペシャリスト達が、持ち時間の中で熱く語るという形式で進みました。アジェンダは以下のとおりです。
- 「20 分でお届けする Java on Azure 2019 のいま」by 寺田佳央
- 「メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service」by 根本征
- 「ZOZOTOWNリプレースにおけるJavaアプリケーションとAzure Kubernetes Service(AKS)」by 可児友裕 / 堀口真
- 「JavaをCloud Nativeに最適化するQuarkusの衝撃」 by 須江信洋
20 分でお届けする Java on Azure 2019 のいま
マイクロソフトのJavaスペシャリスト 寺田佳央さんのセッションでした。Azure上で利用できるJavaの各種プラットフォーム(App Service、Azure Functions、もちろんAKSも)について、短い時間ながらもわかりやすくご説明されていました。Javaを利用できるAzureの各種サービスが、スライド一面にずらっと並んでいるのを見て、マイクロソフトがものすごくJavaに力を入れているというのを肌で感じ、また同時に時代の流れも感じました。もう私の知っているマイクロソフトではない(もちろんいい意味で!!)ということを改めて実感しました。
AKSの仮想ノードはとても便利だなと思いました。ACI上でプールされているノードを必要に応じて、取り出すようなイメージでしょうか?瞬時に起動できる、起動している時間にしか課金されないというのがメリットのようで、この次に行われるセッションでもAKSの仮想ノードを活用したソリューションが紹介されていました。
Azul SystemsのZuluも紹介されていました。やはりAzure上でJavaといえば、これ一択のようです。私の担当したプロジェクトでも使用しております。
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
あのメルカリで品質保証を担当するエンジニア根本征さんによるセッションでした。Seleniumを活用した回帰テストに関する話題がメインであり、私が注目したのは、テストにかかる時間やテスト環境構築の手間を軽減するための、たゆまない努力と工夫に感激をしました。
私もSeleniumを自社のプロジェクトで利用しておりますが、こういった使い方は想像もつきませんでした。
まず、普通にSelenium単体で利用した場合、246ケースのテストが2時間ほどかかっていたそうです。まぁ、普通に人力で行えば数日かかる作業ですから、これでも驚くほどの工数削減と言えます。
ただ、DevOpsのパイプラインに乗せるには、2時間というのはまだ十分でなく、次なる試みは、Selenium Gridを利用した分散テスト環境でした。これで15分にまで短縮出来たそうです。
Selenium Gridで確かにテスト時間の短縮は実現出来たそうですが、テスト環境構築に課題があったそうです。確かにSeleniumの環境作るって結構手間です。ブラウザごとのWebドライバー入れたり、もちろんJava自体もインストールしなければならないですし、、、。
そこで、AKSを導入したそうです。Seleniumにはその環境を簡単に構築できるDockerイメージが配布されているので、それをAKS上に乗せて、簡単にテスト環境を構築できるようにしたとのこと。
さらに、次なる創意工夫は、先程ご紹介した、AKSの仮想ノードを利用して、SeleniumのDockerイメージが立ち上がっている時間だけ課金されるようにして、大幅なコスト削減に成功したようです。確かにSeleniumなどのテストソリューションは、テストしているときだけ起動しれいればいいので、今までのAKSのようにVirtual Machineに立ち上がっているのは、もちろん大きな無駄と言えます。
これらのテストにかける創意工夫には、ただただ頭が下がる思いでいっぱいですm(_ _)m
ZOZOTOWNリプレースにおけるJavaアプリケーションとAzure Kubernetes Service(AKS)
あのZOZOTOWONのシステムリプレースに関するセッションでした。リプレース先はもちろんAKS!!こういったセッションでは、採用したプロダクトのメリットのみが語られることが多いのですが、本セッションでは、デメリットについても述べられていました。私思うに、やはり、新しいプロダクトやソリューションを導入する前に、課題や懸念事項は事前に洗い出したいものであり、そんなときにこういった率直なご意見って非常にありがたく思います。
で、ASK導入の際の障壁は以下のようなものでした。(マイクロソフトさん、すみません)
- AKSはマネージドサービスだが、運用やトラブルシュートには、ネットワークの基礎知識は必須
- 必要なノード数の割り出しや、ノードを構築するための仮想マシンのサイジング(CPUやメモリ)は必須
と、書いてみましたが、これってデメリットであるかのように見えますが、エンジニアには必須の能力かと思いました。IT技術は日進月歩であり、あらゆるサービスがマネージド化されていますが、やはりそれを使うのにも、顧客の要望に合わせた設計が必要ですし、障害が発生すればトラブルシュートも必要になります。そんなときに必要なのは、OSI基本参照モデルやTCP/IPなどのプロトコルの理解なくしては、扱えないかと思っております。
どんな時代でも基礎はやっぱり大事だと感じました。
また、他にも参考になる情報がありました。システムリプレースの際、その開発言語にはJavaとPythonの両方が候補に上がったそうです。Javaが採用となったとのことですが、その理由は以下の通りだそうです。
- 情報量が多い
- APIを開発する際に有用なツール(Spring Bootなど)が多い
- 開発者が多い
禿同です。私自身も上記の理由でJavaを採用することが多くございます。
JavaをCloud Nativeに最適化するQuarkusの衝撃
Quarkusのお話でした。Quarkusは「GraalVMを利用してJavaアプリケーションをネイティブコンパイルし、高速起動(100倍)と省メモリ(1/10)を実現するためのフレームワーク」という説明がございました。
QuarkusでNativeコンパイルしたアプリケーションを載せたDockerコンテナを、OpenShift上で100台起動するデモは圧巻でした。
Javaというとメモリを大量に消費するという印象がありますが、Quarkusを使えば解決(^o^)
まとめ
Azure上でJavaを扱うための有用なTips満載でした(^o^)サンドイッチも美味しかったし。そして、Javaのセミナーがマイクロソフトスポンサーで開催され、会場もマイクロソフト本社っていうのが、非常にうれしみーでした。
最後にマイクロソフト寺田佳央さんにまた色々ご相談してしまいました。お忙しい中ありがとうございましたm(_ _)mこの場を借りて御礼を申し上げます。