
Leading the Way: Payara Platform Community 7 Beta Now Fully Jakarta EE 11 Certified
We’re excited to announce that Payara Platform Community 7 Beta application server is now fully certified as Jakarta EE 11 […]
今日、マイクロサービスのコンセプトは単に新しいだけではなくなっています。DevOpsの登場、コンテナ技術ブーム、デプロイ自動化ツールによって、マイクロサービスは開発者が手掛けるアプリケーションの構造を変えつつあります。マイクロサービスはJava EE開発者にとっていかにして有効な選択肢となり得るのか、そしてPayara Microとそれが提供する完璧なプラットフォームによってどのようなメリットが得られるのかについてみてゆきましょう。
マイクロサービス・アーキテクチャの主な目的は、アプリケーションをより小さな独立したコンポーネントに分割して、より扱いやすく、デプロイしやすく、スケールしやすく、長期間にわたってメンテナンスしやすくすることです。どこかで聞き覚えがあることでしょう。それもそのはずで、これらは多くの開発者が大昔からずっと取り組んできていることなのです。カプセル化、凝集性、サービス指向アーキテクチャへの正しい理解により、私達は長い間に渡ってこのような「分割統治法」をソフトウェア・アーキテクチャに適用してきました。おそらく、これから先もそうなることでしょう。
では、マイクロサービスの長所とは何でしょうか。マイクロサービスは対極となる従来型の手法であるモノリシック・アプリケーションと比較すると理解しやすいでしょう。
モノリシック・アプリケーション、あるいは単にモノリスともいいますが、それは通常大きな業務アプリケーションで、単一のデプロイ可能なパッケージとして構成されています。もし新しいコンポーネントもしくは既存コンポーネントのアップグレードを行いたい場合には、モノリス全体を一度アップデートしなければなりません。これは業務アプリケーションを開発する通常の方法であり、多層構造の考え方(UI、ミドルウェア・サービス、永続化、データ)に注目して、各層単位で関心事を分割します。
モノリスは従来型の考え方に基づく普通のアプリケーションであるのに対して、マイクロサービスのアプローチはアプリケーションを独立したコンポーネント(またはサービス)に分割し、各コンポーネントは以下のような基準を満たすものとなります。
では、すべてのケースにおいて、従来型のモノリシックなアプリケーションの代わりにマイクロサービスを使うべきなのでしょうか。決してそうとは限りません。マイクロサービスは単に新しいアーキテクチャのスタイルを定義するものではなく、アプリケーションの開発チームに対して異なるやり方も要求するためです。
モノリスを使用する場合とマイクロサービスを使用する場合で、それぞれ以下のような利点と欠点があります。
モノリス |
マイクロサービス |
変更によるコストはすべての層にまたがるため高い。単一機能の変更がユニット全体の再デプロイを意味する。 |
変更は実装容易で、コストも対象となる特定のサービスに限定されるため高くない。 |
すべてのコンポーネントが単一のユニットとなり、通信のオーバーヘッドがない。 |
サービス間の通信のためリモート呼び出しが必要で、これはアプリケーションのパフォーマンスのオーバーヘッドになり得る。 |
開発チーム全体がアプリケーション全体の設計と構成に習熟していなければならない。 |
各サービスは個別のチームで分担することが可能で、関心事の分割と応答性の都合に合わせる。 |
技術スタックを考慮して開発が行われ、1つまたは2つの言語が使用される。主な言語・フレームワークはソフトウェア・アーキテクチャに影響を与える。 |
各サービスは要求と必要性に応じて異なるフレームワークで開発することができる。各サービスが正しいツールとして発展させることを優先するため、標準は捨て去る。 |
デプロイおよびクラスタ化が容易。 |
サービスの数とサービス間の通信が増加するにつれてデプロイとクラスタ化が複雑化。 |
コンポーネントの欠陥がアプリケーション全体の不良とユーザー・エクスペリエンスが妨げられる原因となる。 |
サービスの欠陥は特定のサービスのダウンだけで収束し、そのためサービスは互いに切断される。 |
各層とその連携に注力する。 |
ビジネス上の必要性とチーム間のコミュニケーションに注力する。 |
利点として考慮すべき事柄は緑、欠点として考慮すべき事柄は赤、ソフトウェア要求または組織の環境によってメリットが変化するものはオレンジで示す。
マイクロサービスは組織がアプリケーションを構造的な方法で開発する助けになります。しかし、アプリケーションはビジネスにとって重要ではなく、品質指標 (パフォーマンス、可用性、スケーラビリティ、セキュリティ等) がない場合など、伝統的なモノリシックなアプローチの方が十分適している場合もあります。
Java EE仕様はモノリシック・アプリケーションの作成を容易にします。Java EE開発者にもたらす主なメリットは、特定のコンテナ・サービスがネットワーク処理、トランザクション管理、リソース・ライフサイクルのような技術的な関心事を取り扱うため、それらに煩わされる必要がないことです。これにより開発者の仕事がシンプルとなり、代わりにビジネスの関心事に注力することができます。
Java EEの場合、モノリシック・アプリケーションの例は以下のような特性を持つe-コマース・アプリケーションでしょう。
こうして見ると複雑に感じられることでしょう。上記のシナリオは初期のJava EEで用いられたものです。しかし現在では、Maven、OSGi、Java EEアプリケーションのモジュラー化、アプリケーション全体の単一WARファイルによるデプロイにより、Java EE上でのモノリスの開発は容易になっています。しかし、このe-コマース・アプリケーションをマイクロサービスとして開発するには、シンプルなWARは十分ではありません。
マイクロサービスを作成するのにGlassFish (およびPayara Server) のようなJava EEアプリケーション・サーバーに含まれるAPIを使用することには何の技術的な制約もありません。ただし、いくつかの注意点があります。
Payara Micro はこれらを考慮して開発しました。より小さなサイズで、JARとしてパッケージ可能で、開発者は以下のシンプルなコマンドでマイクロサービスを容易に実行することができます。
java -jar payara-4.1.1.163.jar –deploy user-service.war
各サービスをこのコマンドで実行しても、サービスが起動するまで長い時間を待つ必要や、サーバーを何度もインストールする必要はありません。Payara MicroはJava EE Web Profileをベースとしており、複雑でレガシーなAPI (例えばJMS、JCA、JAX-WS) は使用できなくなっています。ただし、マイクロサービスの技術的要求を考慮すると、これらがなくても問題ありません。依然としてサーブレット、JSP、JSF、CDI、JAX-RS、JPA、JSON-P等が使用可能だからです。
{{cta(‘ff953ff1-4db6-44cc-89b4-bce1530a0b79’)}}
これだけでは、Payara Microだけでマイクロサービス・アプリケーションを構築するのは十分ではありません。以下にJava EEでマイクロサービスを構築する際に私が個人的にお勧めしている方法を挙げます。
java -jar payara-4.1.1.163.jar –deploy login-service.war –clusterName loginService
Payara Microはマイクロサービスに向いていますが、開発者がずっと小さなフットプリントでサービスを実装するための要求を満たすには十分とは言えません。そこでPayara、Red Hat、IBM WebSphere Liberty、Tomitribe、London Java Communityによって構成される新しいコミュニティ・グループは、エンタープライズJava開発者をターゲットとしたマイクロサービスのイニシアティブ、MicroProfileを提唱しています。MicroProfileの主な目的は、アプリケーション・サーバーがマイクロサービス環境を対象とするコンパクト版のランタイムを実装する際に使用できる機能一式をデザインすることです。
現時点ではMicroProfileはCDI、JAX-RS、JSON-Pの各仕様への準拠に集中しています。このプロジェクトを進めていく上で、同じように含めた方が良いと思われる他のAPIや機能について投票してください。
{{cta(’05ad14c7-2a48-4870-a771-627991e0b939′)}}
マイクロサービスはすぐそこまで来ています。大企業もスタートアップもそこに十分なメリットが得られるのであればマイクロサービス・アーキテクチャの実装を検討すべきでしょう。それだけにJava EEを置き去りにすることはできず、また開発者がこのスタイルに移行するためJava EEは進化しなければなりません。Payara Microは理想的なスタート地点であり、特に既にGlassFishやPayara Serverに慣れているのであれば、Java EEアプリケーションをデプロイし動作させるのはとても簡単です。
マイクロサービスは銀の弾丸ではなく、共有された知識に過ぎないことに注意してください。伝統的なモノリシックなアプローチは依然として有効であり、マイクロサービスへの切り替えはメリットが必要性と用途に合致する時に行ってください。マイクロサービスへの移行は皆さんが直面する技術的なチャレンジを良く理解するだけに留まらず、同様に組織とビジネスにとってのチャレンジでもあることを理解しておいてください。
{{cta(‘363ebe49-5f9f-44fd-bae1-f7b47d43d873’)}}
Share:
We’re excited to announce that Payara Platform Community 7 Beta application server is now fully certified as Jakarta EE 11 […]
If your Java EE 8 applications run on Red Hat JBoss Enterprise Application Platform (EAP) 7, you can’t afford […]
Every software evolves, until it reaches its natural end of life, even the strongest one. This is valid for […]