まだ本格的な実践の手前「なんちゃってマイクロサービス」が多い?
「徹底討論!マイクロサービス開発における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」
各セッションのアーカイブ動画と資料公開中!(登録不要)ぜひ、ご覧ください!
今後のベンダーの意気込み、開発者やユーザー企業は何をすべきか
最後のテーマは「これから何をどう目指していけばいいのか」。
須江氏は現状に触れて「まだマイクロサービスが体感できていないというか、自分の道具箱にないという印象があります。まずは怖がらずにちょっとからでも使っていただきたいです。『いまの仕事に関係ないから興味ない』とせず、興味をもつことで技術動向を知り、『自分が作ったあの機能、もっとよく作れたかもしれない』と気づくかもしれません」と呼びかける。一方で企業に対しては「小さなプロジェクトでもいいので、開発者が経験を積む機会を作っていただきたい」と要望を伝えた。
古手川氏は先にマイクロサービスの導入は「スイッチではなくダイヤル」と繰り返し、メリットとデメリットを見極めることの重要性を強調した。モノリシックとマイクロサービスの選択肢があるなか「いまマイクロサービスは何らかの形で検討する必要があるでしょう。そこで勘違いしてはいけないのがマイクロサービスは目的ではないということです。オラクルはアドバイザーやコンサルタントとしてバランス・ポイントをお客様と一緒に見つけてバランス・ポイントをお客様と一緒に見つけてよく一緒に考えられるアドバイザーやコンサルタントとして位置づけてもらえるように、混在環境をうまくまとめていけるられるプロダクトソリューションを紹介提供していけるように精進していきたいです」と述べた。
こうしたベンダーからの意気込みを聞いてロジ子氏も同意しながら「やはり新しいものは触りたくないという人もいます。食わず嫌いだと評価できなくなります」と述べた。続いて要望として「ベンダーは体験講座やハンズオンセミナーを提供してくれていますが、できれば、ロックインされるようなものではなく、ニュートラルなマイクロサービス入門のようなハンズオンをお願いします」と言う。そうすれば参加者は善し悪しを実感できて、マイクロサービスがいいかこれまで通りがいいか判断できるようになるためだ。「お客さまにはいい判断ができるような理論武装をしてもらいたいです。コミュニティやサービス提供の実装者はキャッチアップできるようにしていきたいなと思います」と今後の展望も語った。
最後に上田氏は「やはりユーザー企業にいるエンジニアはベンダーに比べたらテクニカルなレベルでは遅れをとってしまいます」と前置きしつつ、「我々に求められているのはベンダーのような専門的な知識を持つことではなく、ワインのソムリエのような存在だと例えています」と述べた。道具としての言語やツールが多種多様にあるなか、リストを見るだけではだめで、高いプロダクトやサービスが適しているとも限らない。その時の料理(システムや環境)に合うのはどれかを選ぶ必要がある。
「ソムリエとして最低限の知識を持ち、テイスティングもして、新しいものが出たら事前にセッティングして食わず嫌いにならず、どのワインが合うのかをしっかり見極める目を持つことがユーザー企業の本当の務め」と上田氏は言う。
加えて現場の切なる思いとして、「システムはカットオーバーしてからが本番。カットオーバー前はどれだけバグが出ても後で直せばいい。しかしカットオーバー後は翌日までに修正しないといけないのでスピード感が違います」と述べた。こうしたメンテナンスのスピードを考えると「モノリシックを続けるのか、マイクロサービス化がいいのか、ユーザー企業はしっかり判断していく必要があります」と説明し、ベンダーに対してユーザー企業への教育を後押ししていくこと、業界を盛り上げていくことへの期待を述べてパネルディスカッションを閉じた。
ITに携わるすべての開発者とエンジニアにお届けするオンラインイベント 「Oracle Developer Days 2022 Spring」
「未来を創造する最新テクノロジーを今、あなたの手に。」をテーマに2022年5月20日・27日に開催された オンラインイベント 「Oracle Developer Days 2022 Spring」
各セッションのアーカイブ動画と資料公開中!(登録不要)ぜひ、ご覧ください!