Vodafoneギリシャはギリシャで2番目に大きな電気通信会社で、600万人以上の加入者に固定電話および携帯電話サービスを提供しています。Vodafoneギリシャは、オンプレミスとクラウド上で多くのアプリケーションを実行しているため、クラウドリソースの消費コストは同社にとって非常に重要だ。その目標は、今後何年もVodafoneのデジタルサービスの中核になることだ。Streams、Redisなどの技術を活用して、旧サービスの応答性を800%以上改善すると同時に、それらをRESTフレンドリな汎用APIに変換する。Bootを使って実装されていて、完全にクラウド上で動作します。彼らはメモリリソースの大量消費と長い起動時間を経験していたため、これらを削減する方法を探し始めました。Vodafoneギリシャにとってもう1つの重要な懸念事項は、アプリケーションの起動時間が長いことでした。Vodafoneギリシャは起動時間を改善するために、DXLにさらに多くのクラウドリソースを割り当てることができましたが、これはクラウドコストの増加を意味していました。そこで彼らは、DXLを最適化してクラウドのリソースを消費を減らすようにする方法を見つけようと試みました。Bootを使ってマイクロサービスの大部分を実行している。Bootをベースにしているが、彼らはNode.jsによるマイクロサービスも混在しています。Bootに代わるものを見つけるための彼らの選択プロセスの主な基準は、開発者の効率性、クラウドリソースの消費の低減、アプリケーションの起動時間の短縮だった。後者はユーザ体験の改善だけでなく、クラウドリソースの消費コストにも大きな影響を与えると考えた。彼らはネイティブにコンパイル可能なフレームワークであるNode.jsとVert.xなど他の技術やフレームワークを見て評価した。彼らは、Java開発者がJavaアプリケーションを学び、Javascriptに移行するのは負担であるため、Node.jsは彼らにとって良い選択肢ではないと判断した。いくつかのフレームワークは、大きな堅実な支援者やスポンサーを求めていたため、どちらも基準を満たしていなかった。ひとつのネイティブコンパイル可能なフレームワークは、その時点ではMongoDBドライバのコンパイルに失敗するという理由で選択されなかった。MongoDBドライバをネイティブモードで使用することはサポートされておらず、ネイティブにコンパイルできないMongoDBドライバの部分をスキップする方法もなかった。彼らが危うくVert.xを選びそうになった理由は、その優れた状況伝播能力と卓越したパフォーマンスにある。2019年の4月にQuarkusについて知り、それがVert.xをそのスタックに含め、メモリと起動時間の最適化を提供していたため、彼らはQuarkusを採用することを決めた。Sotiriou氏によると、Quarkusは「我々が必要としていた性能の向上を提供すると同時に、優れた支援者(レッドハット)を持ち、実戦でテストされた技術に依存しているように思われた」という。2019年6月、VodafoneギリシャはQuarkusで書き換えられた共通ライブラリの一部を利用したマイクロサービスのデプロイに初めて成功した。競合する技術よりもQuarkusが選ばれたもう1つの理由は、開発者が独自の拡張を作成できることだった。Hat開発者の数などのプロジェクトの高い活動特性は、彼らがQuarkusを選択するための肯定的な指標でした。HatがスポンサーとなっているQuarkusを選択することが、同社は正しい選択をしていることを確信しました。BootからQuarkusへ移行し始めた。共通ライブラリは、次のような分野横断的な関心ごとを網羅している。Bootでは非常に困難でしたが、Quarkusではこの新しい共通ライブラリの作成は実行可能であり実現可能でした。Bootよりも再利用性が高く、国を横断したチームの簡単な配置も可能になりました。現在、15のQuarkusマイクロサービスがあり、そのうちの5つは2019年9月末に本番環境へ移行した。取り組みに関しては、開発者2名がこれら最初の5つのマイクロサービスの開発に専念し、これらは現在JVMモードで稼働している。間もなく、彼らのチームは今後3ヶ月で20のマイクロサービスの提供に取り組んでいる。BootからCDIベースのフレームワークへの移行には多くの労力を必要としなかった」と言うことは言及する価値がある。APIの互換性があるが、Vodafoneギリシャはそれを使用する計画はない、なぜなら「マイクロサービスに2つのプログラミングモデルを混在させるのは意味がない」とChristos氏は言う。コードを清潔に保つため、Christos氏の言葉を借りればVodafoneギリシャは、「Spring構文で混乱させずにQuarkus構文のみを使用する」である。Bootはまったく必要ありません。利点Vodafoneギリシャは、Quarkusを使用することで多くのメリットを得ています。その1つは、JVMモードではメモリリソースの消費が半分になったことだ。最適化を行わなくても、起動時間がほぼ4分の1に短縮されました。これらのマイクロサービスの多くは複雑なものだ、彼らは「多くのKafkaやデータベースと接続している」とChristos氏の説明するKafkaを使用する同社のロギングシステムは、サイズの大きいメッセージを処理してJSONに変換するため、大量のメモリを使用する。Bootを使用している時にはいくつかのマイクロサービスは1GBのメモリを必要としていた。本番環境で現在稼働しているQuarkusマイクロサービスは512MBで導入できるようになりました。「80個あるマイクロサービスにとって、これは大きな節約になります!」とChristos氏は強調し、「Quarkusが最適化せずにJVMモードでデフォルトで提供するものは、Springが最適化後(依存関係の管理、JVMオプションの操作など)に提供するものに比べて50~60%軽量化されている」と加えた。起動時間に関しては、その時間の大部分を占めるのはメッセージブローカやデータベースが接続の受け入れを待っている時間です。Bootマイクロサービスが約50秒で起動させました。Quarkusマイクロサービスを使えば、そのうちの四分の一以下で起動できる(14秒)。彼らが経験した開発者効率の大きな利点は、予想外で、嬉しい驚きだった。BootからCDIベースのフレームワークへの移行には、Spring開発者の多大な労力を必要としないことに気付きました。第二に、Quarkusのライブコーディング機能(別名:devモード)を利用することで、開発者の生産性が向上した。これをChristos氏は「経験としてとても良いこと」と表現した。Christos氏によると、各開発サイクルは開発中のロジックの複雑さに応じて1~2スプリント(1スプリント=2週間)で構成される。Bootに比べて開発者の生産性が30~40%向上する事が分かった。Boot開発者のためになる。彼らに感銘を与えたもうひとつの機能は、QuarkusがエンタープライズJavaを使用する方法、例えばCDIを非同期メソッドのコンテキスト伝播と組み合わせて使用する簡潔な方法などの有効性だ。Messaging拡張を通じて、Quarkusと容易に連携することができる。実際、「MicroProfileは、開発ツールとしてQuarkusを気に入っている良い理由です。」とChristos氏は述べた。次へ次のステップとして、Vodafoneギリシャのマイクロサービスの数は、彼らがやろうとしていることのほんの一部しかカバーしていない。マイクロサービスの数とこの構想に専任する開発者の数を2倍にしたいのです。この目標を達成するために、同社は今後三ヶ月で20のQuarkusマイクロサービスをリリースする予定だ。Christos氏によると、成長するにつれ、「組織化と開発者の生産性は、彼らが消費するリソースにとってさらに重要になるだろう。現在はMongoDBとのインターフェース時にJVMモードでQuarkusを実行しているが、将来的にはMongoDBとネイティブコンパイルを使用することも検討している。VodafoneギリシャがQuarkusを使い始めた数ヶ月前には、MongoDB用の拡張機能は含まれていなかったが、今ではMongoDBクライアント拡張機能が含まれて利用できる。耐障害性のサーキットブレーカのようなQuarkus拡張をより多く使用し、より広くMicroProfileリアクティブメッセージング仕様を採用する予定である。JVMモードで実行しているが、Quarkusではメモリ消費と起動時間をすでに半分以上に削減している。将来的にはQuarkusマイクロサービスをネイティブモードで実行し、メモリ消費と起動時間をさらに改善する計画だ。ミドルウェアのサポートをしている三浦です。エンジニアリングの佐藤匡剛です。各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。