クラウドネイティブ/マイクロサービスの世界に向け、Java開発者はどう準備すべきか?レッドハットのリッチ・シャープルズ氏に聞く

エンタープライズJava開発者は、マイクロサービスやクラウドネイティブの世界に向けてどのような準備を進めればいいのか。そして誰が、どのように支援してくれるのか。レッドハットのプロダクトマネジメント シニアディレクターで、JBoss EAPを中心としたアプリケーション開発製品を担当しているリッチ・シャープルズ氏に、詳しく聞いた。

» 2017年04月24日 10時00分 公開
[PR/@IT]
PR

 アプリケーション開発では、マイクロサービスやクラウドネイティブに関する話題が、ますます盛り上がりを見せている。しかし、エンタープライズアプリケーションの基盤となってきたJava EEの将来については、懸念が高まっている。

 このような懸念に応えるような取り組みは、どう進められているのか。Java開発者は、現状のJava EEの向こう側にある世界に向け、どのように準備していくべきか。レッドハットのプロダクトマネジメント シニアディレクターで、JBoss EAPを中心としたアプリケーション開発製品を担当してきたリッチ・シャープルズ(Rich Sharples)氏に、詳しく聞いた。

――多くのエンタープライズJava開発者が抱くJava EEについての懸念と、Eclipse MicroProfilesの取り組みとの関係について、説明してください。

 エンタープライズアプリケーション構築プラットフォームとしてのJava EEの将来が、疑問視されています。

 モバイル、IoT、クラウドなど、業界で非常に大きな変化が起こっているのに対して、Java EEは残念なことにほとんど対応せず、過去数年は進化のペースも落ちていました。もはやオラクルが「Java EEは次世代アプリケーションの構築プラットフォームとして有効だ」などと主張しても、誰かを説得することは非常に難しくなっています。このような現状を踏まえれば懸念が生まれるのは当然です。

 しかし、Java自体が非常に有効なプラットフォームであることに、変わりはありません。そこでレッドハット、IBM、Tomitribeなどが、「オラクルがエンタープライズJavaをクラウドネイティブ、マイクロサービスの世界へ導くことができないのなら、私たちが代わりになる」と決断し、MicroProfileという活動を約1年前に始めました。現在ではEclipse Foundation傘下のプロジェクトとなっています。

 Java EEは、あらゆる機能やAPIなどを詰め込んだ、重量級の基盤です。これに対し、MicroProfileではリソースが限られたクラウドなどの環境に展開されることを想定しているため、最小限の機能のみを定義しています。バージョン1.0には4つのAPIしかありません。Java EEベースでマイクロサービスを展開するため、非常にシンプルなランタイムとしています。

 MicroProfileでは今後も、どうしても欠かせないと判断する場合にのみ、機能を追加します。各ベンダーが周辺に機能を付加して製品化するのは自由ですが、MicroProfile自体は全関係者が依拠するものに限定します。Java EEとMicroProfileの間では継続性が保たれます。

 私たちは単一ベンダーに依存することなく、前進しています。MicroProfileはオープンソースの価値を示す、良い例だと思います。

――今後のロードマップはどうなっているのですか? 最小限の機能だけに絞るのはいいですが、Java EEが提供してきたサービス機能はどうなるのでしょうか。

 JAX-RS、JSON-Pに、Javaオブジェクトをバインドする機能、CDI、そしてWebコンテナ。当面必要なのはこれだけの予定です。

 今後はセキュリティに関する定義、シングルサインオンなどの機能を検討します。マイクロサービスのデザインパターン、クライアントサイドの負荷分散も考える必要があります。また、メッセージングトランスポートについてはREST以外も考えなければならなくなると想定していますし、マイクロサービスの管理や監視も非常に重要です。

 とはいえ、他で開発されているものをあらためて生み出す必要はありません。他のオープンソースプロジェクトや標準化作業との連携を推進します。「このような機能があればいいね」という理由で新たにMicroProfile自体を機能拡張することはあり得ません。どうしても必要な機能のみを実装していきます。

 非常に大きな変化が起こっている業界に対して、Java EEのように3年といったリリースサイクルはあり得ません。私たちは、MicroProfileで6カ月あるいは3カ月ごとのリリースを目指していきます。

MicroProfileとコンテナプラットフォームの連携で生まれる世界

――MicroProfileは、コンテナベースのアプリケーションプラットフォームとどう連携していくのでしょうか。

 各ベンダーは、それぞれのやり方でMicroProfileの実装を提供していきます。レッドハットの場合、LinuxコンテナとKubernetesによるオーケストレーションの組み合わせが、アプリケーションプラットフォームに関する全ての活動の前提となっています。このため、レッドハットのMicroProfile実装である軽量アプリケーションプラットフォームのWildfly Swarmは、コンテナベースアプリケーションプラットフォームであるOpenShift Container Platformとの連携を深めていくことになります。MicroProfileをKubernetesベースのコンテナプラットフォームと組み合わせるという点が、レッドハットならではのユニークな部分です。

 レッドハットはコンテナがマイクロサービスに限らず、あらゆる迅速なアプリケーション開発・展開の基礎になると考えています。今後、既存のモノリシックな(一体型の)アプリケーションをコンテナ化し、自動デリバリーシステムを通じて迅速にアプリケーションをデプロイする取り組みが進むと考えています。そして、コンテナはマイクロサービスにおいても必須な技術です。

 結局のところ、コンテナとは非常に軽量な仮想化層であり、どれだけ軽量化が図れるかが勝負です。レッドハットはソフトウェアのフルスタックをコントロールできる数少ないベンダーです。最小限のOSを提供し、ミドルウェアも最小化とモジュール化を進めています。これより、例えば100のマイクロサービスによるメモリ消費を、単一のモノリシックアプリケーションと同等のレベルに抑えるように取り組んでいます。

 これに関連して、Wildfly Swarmは、「コンポーザブルアプリケーションサーバ」という役割を果たしていきます。これまでのアプリケーション/サービス/ミドルウェアとの関係ではなく、アプリケーションが必要とする最低限の機能のみを組み込んだ、非常に小さなランタイムで構築できます。レッドハットでは、アプリケーションを構成するソフトウェアをまとめてDockerイメージにラッピングし、自己完結型のコンテナアプリケーションとして動作するようにしていきます。

 Wildfly SwarmはJBoss Enterprise Application Platform(EAP)をベースとしています。そのため、世界中の大企業の基幹アプリケーションを支えてきた同一の技術と知識を活用して、開発者がアプリケーションを提供する方法を、大きく改善することができます。

ニーズとコストのバランスを考え、段階的に進めばいい

――Java開発者がマイクロサービス時代への移行を進めるとき、注意すべき点は何でしょうか? どんな変化に留意すべきでしょうか?

 私はよく、マイクロサービスについて、「Good, Bad and Ugly」(良いことも悪いことも、不快なこともある)と言っています。どんな選択肢も利点と欠点があり、トレードオフがあるものです。マイクロサービスの場合は、十分な能力を備え、適切なレベルの開発チームがいる組織が取り組めば、高品質のソフトウェアを、従来よりも迅速にデリバリーできます。他のアーキテクチャで、同様な機動性を実現することは困難です。

 ただし、複雑性が大幅に増大しますので、成功に導くにはさまざまなスキルも必要です。このため、マイクロサービス化でメリットが得られるアプリケーションを慎重に吟味する必要があります。

 マイクロサービス化するアプリケーションの選択は、ビジネスニーズに基づいて行うべきです。「ビジネス上でアプリケーションを機動的なものにする必要があるのか?」という点を最初に考える必要があります。

 もし必要性があるならば、そのアプリケーションを多少小さな単位のサービスに分割するだけで十分なのかを次に考えます。全てを再設計が必要だと判断する場合、別の開発言語を使う必要があるのかどうかも考える必要があると思います。これらは、全てコストを伴いますので、ビジネスへの貢献度を基に検討しなければなりません。

 一方、十分なスキルがあるかどうかも重要です。分散アプリケーションを開発するスキルが、社内に蓄積されているでしょうか。

 ビジネスニーズとスキルがあったとしても、プロセスは整備されているでしょうか。例えば1日5回アプリケーションのデリバリーを行いたいなら、継続的インテグレーション、継続的デリバリーを可能にする自動化の仕組みを持っていることが必要です。

 また、少人数のチームがサービスあるいはアプリケーションのオーナーシップを持ち、開発から本番導入までの責任を持つ体制はできているでしょうか。

 このような要件を全て満たせるなら、マイクロサービスで成功を収められるでしょう。一方、どれか欠けている部分があれば、赤信号です。

 テクノロジーに詳しい人たちは、どうしても最新のホットな技術をいち早く採用したくなります。しかし、マイクロサービスの場合は潜在的な効果が大きい反面、失敗した場合のコストが高くつきます。

 私たちは、「プロセス」「プラットフォーム」「アーキテクチャ」と、段階を踏んで取り組みを進めるべきだと考えていて、そのようにアドバイスをしています。

 プロセスとは組織としての対応です。アジャイルなソフトウェア開発やDevOpsにこれまで取り組んできたか、という点です。

 次に、ソフトウェアを迅速に提供できるプラットフォームを持っているかです。自動化ツールは導入しているか、開発者向けのセルフサービスツールはどうか。継続的インテグレーションの環境は整っているかをチェックします。

 この2つの要素さえ備われば、既存アプリケーションのアーキテクチャを変えずに、例えば週1回程度のソフトウェアデリバリーができるようになります。そして、約9割のアプリケーションについては、DevOps、アジャイル開発、ソフトウェアデリバリプロセスの自動化を進め、大きな改善効果が見込めます。残りの1割については、マイクロサービスなどの新しいアーキテクチャを採用した、さらなる改善が必要になるかもしれません。

――マイクロサービス化については、影響の小さいところから少しずつ試し、実績を積み重ねていくべきだということですか?

 はい。マイクロサービス化は、業務上不可欠なアプリケーションから始めることをお勧めしません。既存アプリケーションはできるだけ変えないことを出発点とすべきです。明確なビジネス上のニーズがあるなら、既存のモノリシックアプリケーションの分割を考えればいいと思います。その際も、既存のアプリケーションと並行して動かし、A/Bテストを実行すべきです。こうして、業務上不可欠ではないアプリケーションを対象にマイクロサービス化を試し、まず、成功体験を1つつくることにより、次に繋げていくことができます。

 しかし、既存アプリケーションの再設計は、例外といえると思います。繰り返しになりますが、既存アプリケーションのアーキテクチャを変えることなく、開発とデプロイを高速化することもできます。このようなアジリティを実現するために、OpenShiftのようなツールを活用できます。

――レッドハットは、企業におけるアプリケーションの展開や運用の最適化を、どのように支援しているのでしょうか。

 米国レッドハットではInnovation Labsという、デジタルトランスフォーメーションを進めたい企業を対象としたコンサルティングサービスを提供しています(日本でも今後提供予定)。このサービスではまず、組織としてどのようなアプリケーションを開発しており、どのようなビジネスを展開していて、どのようなスキル、強みを持っているのかをまずアセスメントします。

 こうしたアセスメントを踏まえ、どのアプリケーションを現状のまま維持するか、さらに分割を考えるべきかを見極めます。

つまり、どのような組織にも当てはまるような共通のアドバイスはありません。特定の企業が持つ能力と、各アプリケーションの性質に大きく依存します。

――レッドハットのミドルウェアは全体的に、今後どのように進化しようとしているのでしょうか。これを含めて、レッドハットはJava開発者が新しい世界へ進んでいくことを、どのように支援しようとしているのかを教えてください。

 レッドハットは、新時代のアプリケーション開発・運用環境に向けた回答としてKubernetesを使ったコンテナアプリケーションプラットフォームのOpenShiftを推進しています。これはソフトウェアデリバリーのプロセスを完全に自動化できる、素晴らしい環境です。

 2017年には、これに対するミドルウェアサービスの追加を進めていきます。当社では既存のミドルウェア(JBoss)をコンテナ化し、OpenShift上で提供する、「xPaaS」という取り組みを進めています。これは同時に、ミドルウェアを複数の用途別にサービス提供できるように分解するものです。また、Vertex、Wildfly Swarm、Node.jsを通じ、マイクロサービスのためのランタイムを整備していきます。これにより、新しいアプリケーションを開発する際の選択肢を広げます。

 Wildfly Swarmは移行技術として大いに役立ちます。既存のJava EEに慣れ親しんでいる開発者が、成熟した関連技術やスキルを活用しながら、マイクロサービスあるいはクラウドネイティブな世界への移行を図れるからです。

 私たちは、クラウドネイティブ/マイクロサービスに向けては、複数の道筋があると考えています。新しいやり方で、グリーンフィールドのプロジェクトに飛び込むこともあるでしょうし、既存のモノリシックなJava EEアプリケーションの移行をしたい場合もあるでしょう。それぞれについて、実績に基づく移行パスを用意する必要があります。

 そのため、レッドハットはコンテナやWildfly SwarmをJava開発者に提供し、リスクを低く抑えながら、未来に向けて前進させるための牽引役を目指します。また、レッドハットでは、企業が必ずしもアプリケーションを全面的に再設計し直したり、やり方を変えたりせずに、未来を手にすることができるよう、支援を続けています。

Copyright © ITmedia, Inc. All Rights Reserved.


提供:レッドハット株式会社
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2017年5月24日

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。