まだ本格的な実践の手前「なんちゃってマイクロサービス」が多い?
「徹底討論!マイクロサービス開発におけるJavaの最適解」と題した「Oracle Developer Days 2022 - Spring」の パネルディスカッションはモデレーターを東京ガスiネットから上田志雄氏、パネリストはコミュニティからロジ子氏(普段の業務はアプリケーション開発支援など)、ベンダーからレッドハットの須江信洋氏と日本オラクルの古手川忠久氏が務めた。
最初のテーマは「マイクロサービスの潮流をどう考えているか?」。上田氏は「マイクロサービスを全く否定しないし、進めたいと思う。しかし"なんちゃってマイクロサービス"と感じるものがある」と問題提起した。用語は浸透しつつも、実践がまだ不完全なケースも散見されるのだ。
レッドハットの須江信洋氏は業務でクラウドネイティブやコンテナを提案している立場だ。「残念ながら、日本の開発環境でマイクロサービスを使いこなせているケースはそう多くない」と明かす。ただしマイクロサービスとは「手段であって、目的ではない。目的にしてしまうと、問題が起こる」と強調する。
海外で主にマイクロサービスの目的として掲げられているのがアジリティだ。さまざまな環境変化にビジネスが素早く適応できるようにするために、アプリケーションを小さくして組み合わせ、柔軟な構成にすることが多い。一方、日本はユーザー企業がSIerに丸投げしがちだ。ユーザー企業は要件さえ満たせば中身にはあまり興味がないため、開発を請け負う側は今まで通りモノリシックになりやすい傾向がありそうだ。
日本オラクルだと古くからの基幹システムを抱えている顧客が多い。そのためディスラプターのサクセスストーリーのような最先端最新鋭の事例は現実味を伴わないのかもしれない。そうは言いつつも古手川忠久氏は「取り組もうとしているお客さまがいるのは確かです。典型的な例はライフサイクルの異なるフロントとバックを分ける。モノリシックだけどAPIゲートウェイに取り組むなど、マイクロサービスに近いものを導入するケースは増えています」と言う。
コミュニティの視点からロジ子氏は「マイクロサービスは理解されている。ただし実際にやろうとするとつながらない感じ。大きなモノリシックから(機能を)切り出そうとしているけど、うまく切り出せず、結果として大きなコンテナが動いているだけ。それをマイクロサービスと呼べるのか疑問。徐々に進むとは思うが、まだ時間がかかるのかもしれない」と所感を述べた。
おおよそ参加者の認識は合っているようだ。新たに始めるならやりやすいかもしれないが、レガシーを抱えるような大企業がマイクロサービスに着手する時、どういうアプローチをすればいいのかが分からず困っている企業は少なくないのではないだろうか。
そこで須江氏は「マイクロサービスはあくまで手段。関係者がどうすれば幸せになれるかを考えていく必要がある。現在トラディショナルなエンタープライズシステムで起きているのは、業務分析のレベルでモジュラー化が行われていない」と指摘する。メインフレーム時代から根本的なところは変化せず、似たような機能やデータが散在していて、解きほぐせなくなっている。「ドメイン駆動設計を利用して、ビジネスのレベルからきちんと疎結合のアーキテクチャを考えるべき」と提案する。
古手川氏は別の視点で切り出した。ある書籍で「マイクロサービスとはオン・オフのようなスイッチではなく、つまみを回していくダイヤルのようなもの」という説明を見て共感したそうだ。マイクロサービスには善し悪しがあるため「つまみをどう回すかがポイント」と言う。そこは顧客とよく相談し、モノリシックかとマイクロサービスかというような二元論的な発想をやめて、両者ががうまく共存する世界を補完できるようにしないと「マイクロサービスは定着しないのではないか」と述べた。
ロジ子氏は、昔は上司から指示があれば従わざるをえないことが多かったが、今では(現場やエンジニアが)マイクロサービス導入の是非を意見できることが増えたという。「正しく理論武装した上で進めていけるといい」と話した。
果たしてマイクロサービスにJavaは適しているの? ベンダーの戦略は?
次のテーマは「マイクロサービス開発にJavaは適しているか」、これに合わせてJavaの魅力についても再考する。
古手川氏はマイクロサービスの先駆者となった企業の多くがJavaやScalaをベースとして運用し、その成果をOSSに提供してきたという事実を挙げる。その背景にはJavaのエコシステム、例えば優秀なIDE、ツール、ライブラリなどが充実していて、技術者も多いことは有利になるだろう。また「ベンダー非依存で体系的に整理されたAPIをみんなで決めて尊重しようというJavaの世界がある。こうした風土がJavaの良いところ」と強調する。
須江氏は前職のスタートアップでサーバーレスに近いものを自前で構築したことがある。Javaだとメモリを大量に消費してしまい、クラウドなので非経済的かつ起動が遅く、一度はJavaを諦めてJavaScriptやPythonに切り替えた。ただし幸せになれたわけではなかった。「例えばロギングフレームワークにしてもJavaはすごく整っていると分かりました。あとライブラリの厚み。他言語だとライブラリがピンキリですが、Javaなら定番がオープンソースで改良され続けます。基幹システム領域でJava以外の言語を使うなら、それなりの覚悟やノウハウを持って臨むべきではと感じました」と話す。他を経験してJavaの良さを再認識したようだ。
ロジ子氏の職場周辺で見ると、半分弱くらいをJavaが占めているそうだ。「エコシステムもありますし、Java 9以降、コンテナで稼働する際の8の途中からコンテナ対応やメモリ管理などなどを始めとして綿々と機能強化がされており追加があり、マイクロサービスに有利だと思います」と述べた。
パネリスト全員がJavaのエコシステムを評価した。このエコシステムに該当するものとして、IDE、トラブルシューティングのツール、使いこなしのノウハウ、ベンダーのトータルサポート力、後方互換性などが挙げられた。周辺が充実しているため、安心して使えるという良さが生まれている。
しかし、良さはありつつも、気になる点もあるようだ。ロジ子氏はベンダー側に今後のエンタープライズJava関連の規格やJakartaがどのような方向に進むのか、特に似たような機能セットを持つ、Eclipse MicroProfileとJakarta EE Core Profileそれぞれのプロファイルの違いについてベンダーの2人に説明を求めた。
古手川氏は「Core ProfileはシンプルにJakarta EEのサブセットであるのに対し、 Eclipse MicroProfileマイクロプロファイルは最初からマイクロサービスを稼働させるために策定されたの仕様なので、例えば大規模にデプロイした時に必要なオブザーバビリティなどマイクロサービス特有の要件が考慮されているもの。一方、コアプロファイルはフルプロファイルの一部でしかない」と説明した。混同してしまいがちだが、うまく活用するのがよさそうだ。須江氏は「選択肢があることが重要」と言う。Spring Bootを使うのもありだし、Java EE/やJakarta EEやMicroProfileもある。ロジ子氏は「選択肢がたくさんあるので、その時々で選択できる自由がユーザーにあるのは喜ばしい」と理解を示した。
先の現状認識でも出たように、まだしばらくはモノリシックとマイクロサービスが共存していきそうなので、オラクルの古手川氏は「オラクルは従来からのシステム企業にはJava EEベースのWebLogic ServerJakarta、マイクロサービスにはMicroProfileベースのHelidonという2本立てで提供していくのが基本的な戦略になります」と説明した。
ITに携わるすべての開発者とエンジニアにお届けするオンラインイベント 「Oracle Developer Days 2022 Spring」
「未来を創造する最新テクノロジーを今、あなたの手に。」をテーマに2022年5月20日・27日に開催された オンラインイベント 「Oracle Developer Days 2022 Spring」
各セッションのアーカイブ動画と資料公開中!(登録不要)ぜひ、ご覧ください!