サービス指向アーキテクチャからマイクロサービスに移行する方法と理由

こんにちは、私の名前はアレクセイです。ルネッサンスクレジットバンクのチーフITアーキテクトです。 約10年前、私たちは多くの企業と同様に、サービス指向アーキテクチャ(SOA)のおかげで開発を加速しました。 しかし、時間の経過とともに、アーキテクチャの要件が変化し、このパラダイムに対して深刻な疑問が生じ始めました。 最終的に、ESB統合バスからマイクロサービスに移行することにしました。 この例では、なぜSOAの有効性について考える価値があるのか​​、そしてこのモデルもあなたに合わない場合に何ができるのかを説明します。







新しいESBの問題



それはすべて、統合バスの構造に感謝したという事実から始まりました。 この図は、ESBの統合フローの典型的な状況を示しています。







このようなブロックは数十(最大で数百!)あり、それらは密接に絡み合っています。 新しい製品を作成して変更する必要がある場合、この巨大なモノリスを処理するのに十分なリソースはありません。 そして、これは単なる一般的な見方です。 すべての側面からSOAを調査し、7つの主要な問題を特定しました。





新しい顧客のニーズ



複雑で遅いプロセスを備えた従来のウォーターフォール指向のサービスタイヤは、市場に適合しません。 今日、顧客はアジャイル開発の方法論を認識しています。 彼らはアジャイルとウォーターフォールの違いを知らないかもしれませんが、最初の結果-アイデアから運用中のプロトタイプまで-6-8ではなく、2-3か月で、しかし一般的にはより良い結果を得たいです。 それをMVPにしますが、顧客がビジネスアイデアをできるだけ早く確認し、ソリューションが開始されることを理解することが重要です。



このような状況では、従来の水平志向のチームは垂直志向よりも劣り、対話チャネルからバックエンドまで、製品のすべてのコンポーネントで機能します。 エッジは疑問を提起します:サービスの再利用のためにモノリスに変わった統合バスをどうするか? 新しい技術的アプローチが必要です。



新しいアプローチの基盤



基本要件のステートメントを使用して、SOAの代替案を作成し始めました。



  1. アイデアをすばやくパイロットする機能。 これには、システム間の接続の単純な(通常の、繰り返しの)構造、迅速な展開、およびバージョン管理が必要です。

  2. アジャイル開発のサポート。 新しい垂直チームの簡単な接続、「開発工場」のレベルへのアクセス、および日常的なタスクの自動化。

  3. さまざまなタイプの開発チームを持つエコシステムの存在 :内部、外部、パートナーシップ。 外部アクセス用のインターフェースを提供し、このアクセスと請求を制御します。



技術ピラミッド



要件に従って、テクノロジーのピラミッドを形成しました。









次に、各レベルのコンポーネントについて個別に説明します。



1.方法論のレベル





2.インフラストラクチャレベル





3.適用されたアーキテクチャ





物件

説明

1

インターフェースとサービス実装の分離

このプロパティはSOAから継承されるため、実装を変更してもインターフェイスを変更する必要はありません。 サービスへの呼び出しには、サービスの実装の複雑さを理解することなく、インターフェイスの知識のみが必要でした。

2

良い粒度

マイクロサービスは比較的小さく(「2ピザルール」)、互いに分離し、対象領域の機能の変更が最大1つのマイクロサービスに集中するようにします。

3

すべてのレベルでのサービスの分離

マイクロサービスは互いに完全に分離する必要があります。 インターフェイスレベルおよび実行レベル-それぞれに独自の実行コンテナがあります。 データレベルでは、マイクロサービスは「その」データにのみアクセスでき、近隣のマイクロサービスのデータベース機能については何も知りません。

4

統一された相互作用

マイクロサービスが他のマイクロサービスがアクセスを提供するデータを必要とする場合、インターフェース呼び出しは機能するはずです。 データベースを介して隣接回線にアクセスしないでください。



注:MSA には必須の再利用要件はありません



4.データモデルのレベル





5.統合のレベル。





アーキテクチャの変更



テクノロジーの新しい組み合わせに基づいて、私たちは何になりたいかを提示しました。 以下の図は、統合バスを備えた現在のインフラストラクチャの図です。 近くに私たちが目指しているスキームがあります。







何が変わっていますか? 当初、バックオフィスレベルでは、ABSにはビジネスロジックとデータソースがあります。 バックオフィスシステムは、変更がほとんどないストレージと「核」機能のみに限定されるように努めています。 また、製品ロジックはマイクロサービスのレベルに移行しているため、ドメインごとに分割された製品を柔軟に変更および作成できます。



チャネルの規模では、マイクロサービスに基づいて、フロントエンド層に沿って「広がる」ロジックを形成および管理する計画を立てています。 その結果、フロントエンドアプリケーション自体には、チャネルロジック、つまり、要求の処理に必要なチャネルを自動化するネイティブアプリケーションのみが含まれます。



すべてのアクセス制御は、すべてのAPIが説明および公開されるAPI管理ポータルを介して実行されます。 ここで、すべての開発者がそれらに関するすべての情報を取得し、開発工場に参加できます。 GitLabテクノロジーの助けを借りて、計画、開発、テスト、リリース、運用などの継続的な作業サイクルがGitLabテクノロジーで編成されます。





API管理とOpen APIスキーマ



次は?



この大きさの変化は困難なしには行かない。 それらは主に、モノリシックボックスシステムをマイクロサービスに分割すること、およびESBとデータサイロのブラックボックスの接続を復元することに関連しています。 マイクロサービスのモデルでは、ビジネスプロセスの構築にBPMエンジンを使用すると、その関連性が著しく失われます。 そして今、その代替の問題-イベント駆動型アーキテクチャと振り付けは私たちにとって非常に重要になっています。 また、純粋なDevOpsからITSec要件を含むDevSecOpsに移行し、データサイロをドメインに分割する予定です。 これらのタスクを実行するには、説明した概念の使用をテストし、最大限に活用するために、経験を積極的に収集する必要があります。



All Articles