マイクロサービスは最新のソフトウェアを開発するためのアーキテクチャ・アプローチです。それぞれのコアな機能(サービス)は個別に構築およびデプロイされる関連するビジネス・コンテキストを表します。マイクロサービスは、アプリケーションの構築と保守のアジリティを実装しており、レガシー・ソフトウェア開発のモノリシック・アプローチとの対比を表しています。現在、アプリケーションの最新化はマイクロサービスと同義です。
マイクロサービスの詳細は、モノリシック・アーキテクチャ、マイクロサービス・アーキテクチャを採用するための考慮事項、通信メカニズム、12要素のデプロイメント方法、Kubernetesでのデプロイメント、データ永続性、サービス・メッシュ、およびマイクロサービスを設計するためのベスト・プラクティスとの対比を参照してください。
サービスのデプロイ・モデルをサポートする継続的な統合と継続的なデプロイを実現して、新機能の市場投入までの期間を短縮します。
機能の要件を満たすために、サービスごとに個別にサービス・コンテナまたはデータ・プラットフォームを拡張します。
アプリケーション全体に影響を及ぼさずに、独立したサービスを置換または廃止します。アプリケーション全体をクラッシュするのではなく、サービスを低下して、個別のサービス障害を適切に処理します。
Oracle Cloud Infrastructure(OCI)でマイクロサービスを構築する方法を学びます。
データドリブン・マイクロサービスの重要な側面は、さまざまなデータ・タイプをデプロイし、コンテナで複数のデータベースをサポートし、自律的な管理機能を実装するデータ管理プラットフォームをデプロイすることです。OCI上のOracle Autonomous Databaseは、インテリジェントでデータ駆動型のマイクロサービスを構築するための導入を容易にします。
アプリケーションの最新化を実現するために、複数のテクノロジーを統合して、適切なマルチ クラウド・マイクロサービス基盤を構築する必要があります。Oracle LiveLabsでは、オラクルのツールとテクノロジーにアクセスして、さまざまなラボとワークショップを実行できます。このようなワークショップでは、オラクルとともにオープン・テクノロジーを使用して、柔軟にデプロイできるわかりやすいアーキテクチャを構築する方法を説明します。Autonomous Database、Helidon、Micronaut、MicroTx、WebLogic Server、Java、Docker、Kubernetes、Istio Service Meshなど、OCIで使用可能なクラウドおよびハイブリッド・コンポーネントを使用して、Oracle LiveLabsでマイクロサービスを構築します。マイクロサービス・ジャーニーを開始するために、モノリシック・エンタープライズ・アプリケーションのモダナイズや、この道をすでに始めてしまった場合の簡素化に役立つ複数のラボがあります。
このOracle LiveLabは、GrabDishというモバイル・フード・デリバリ・アプリケーションを構築して、最新の開発スタックを使用してデータ・アーキテクチャのシンプルさを強調します。これは、従来は業界でラムダ・アーキテクチャおよびカッパ・アーキテクチャとして採用されていた特殊な目的データベースの複雑さ(リレーショナル、テキスト、空間、グラフおよびメッセージング・システム用の別々のシステムを使用)と、Oracle Converged Databaseによるデータ主導型のマイクロサービスの構築のシンプルさとの対比です。このラボは、開発者およびアーキテクト向けで、新しい顕微鏡サービスを設計します。また、DBAはアプリケーション・モダナイゼーション・プロジェクトにおけるOracle Databaseの役割を理解するのに役立ちます。Autonomous Database、dockerコンテナを含むKubernetesクラスタ、Oracle Advanced QueuingおよびTransactional Event Queues、およびHelidonは、Kiali、Jaeger、PrometheusおよびGrafanaで設定されたトレースおよび監視を使用して、リレーショナル、JSON、空間およびグラフ・データを操作するJava、Node.jsおよびPythonマイクロサービスを表示するために使用されます。イベント・ソーシング、CQRS、SAGAなどのマイクロサービス・パターンは図のとおりです。
マイクロサービス・アーキテクチャの普及に伴い、各マイクロサービスには通常独自のデータベースまたは他のリソースがあるため、開発者はデータの一貫性に関連する問題に遭遇することがよくあります。MicroTxは、トランザクションに参加している様々なデータベースの状態の一貫性を維持するためのトランザクション調整マイクロサービスを提供します。MicroTxでは、XA、長時間実行アクション(LRA)、try-confirm/cancel (TCC)など、複数の分散トランザクション・プロトコルがサポートされています。Java、node.js、C/C++、PL/SQLなどの多言語マイクロサービス間の分散トランザクションをサポートします。このLiveLabでは、開発者はサンプル・アプリケーションで使用される様々なマイクロサービス間でデータの一貫性を実現する方法を学習します。
マイクロサービス向けの完全なオープン・プラットフォーム
アプリケーションの最新化を実現するために、複数のテクノロジーを統合して、適切なマルチ クラウド・マイクロサービス基盤を構築する必要があります。Oracle LiveLabsでは、オラクルのツールとテクノロジーにアクセスして、さまざまなラボとワークショップを実行できます。このようなワークショップでは、オラクルとともにオープン・テクノロジーを使用して、柔軟にデプロイできるわかりやすいアーキテクチャを構築する方法を説明します。有益なマイクロサービス・プラットフォーム・スタックで、OCI、Autonomous Database、Helidon、Micronaut、WebLogic、Java、Docker、Kubernetes、およびIstioサービス・メッシュで提供されているクラウドおよびハイブリッド・コンポーネントによって、Oracle LiveLabs内のマイクロサービスを構築しましょう。マイクロサービスへの移行を開始するか、この移行をすでに開始している場合は、簡素化するために、モノリス・エンタープライズ・アプリケーションの最新化に役立つ複数のラボがあります。
サーバーレス - 永続的な状態がデータ・ストアで不要であり、タスクはオンザフライ・スタイルおよび忘却スタイルで実行されます。たとえば、ラムダ関数やAPIゲートウェイなどです。
API駆動 - マイクロサービスは、APIゲートウェイなどのREST APIを使用して相互に通信します。各マイクロサービスにはAPI定義があります。
非同期マイクロ・サービス - Oracle Advanced QueuingやApache Kafkaなどを使用して、キューまたはストリーミング・ソフトウェアを介した非同期メッセージングで疎結合を実現します
ワークフロー・アクション - たとえば、Camunda、Zeebe、temporal.ioフローなどのBPMNフレームワークを使用した、長時間実行されるトランザクションを表すビジネス・フロー(ループ内の人間を含む)。
自動的なワークフロー - Apache Airflow、Argo(CNCF)など、自動的な方法(ループに人間を含まない)によって、分りやすいワークフローとして実行されるタスク。
データドリブン - データ・アーキテクチャは、通常、Oracle Converged Databaseや特別な目的のデータベースなどの永続ストアを使用して、運用と意思決定のためにアプリ内のデータの消費を促進します。
クラウドネイティブ - たとえば、CNCFコンポーネントおよびOCIサービスを使用して、クラウド用に完全に開発されたアプリケーション。
ハイブリッド・クラウド・マイクロサービス - お客様のデータ・センター(プライベート・クラウド)とパブリック・クラウド間で機能するマイクロサービス。たとえば、Kubernetes/サービス・メッシュを使用して、プライベート・クラウドとパブリック・クラウド(クラウド・バースティングのユース・ケース)間でオーケストレーションします。
マルチ・クラウドのマイクロサービス - 少なくとも2つのパブリック・クラウドと1つのプライベート・クラウドで動作するマイクロサービス。たとえば、Kubernetes/サービス・メッシュを使用して、複数のクラウド間でオーケストレーション(リスク軽減、および1つのパブリック・クラウドへのロックインの防止)を行います。
マイクロサービスは、アプリケーションの最新化と同じ意味であり、すべてのアプリケーション開発を推進する方法です。マイクロサービス・アーキテクチャにさらに効率的な移行するための考慮事項がいくつかあります。