ESB/EAIとは何か? 疎結合なサービス同士のデータ連携を実現する仕組みと考え方
エンタープライズシステムのためのマイクロサービスアーキテクチャの実現 第2回
前回、マイクロサービスでシステムを作ったものの、事業が成長してそれらの疎結合が課題になってしまうケースがあり得るということを示しました。今回、それらを未然に防ぐための知識や考え方、そして、それらの技術やアーキテクチャについて紹介します。
想定するマイクロサービスでの課題
前回、マイクロサービスの大きな課題点は疎結合ゆえに生じる課題が多いということを説明しました。
例えば、図1のように現在ログインしているユーザに従ってお勧め商品の一覧を表示したいという機能を考えてみます。機能が分割しているために、複数のサービスの横断が必要になってしまい、何度もリクエストしなければならないことから、複雑になってしまうケースをよく見かけます。
こういった環境では、操作の煩雑さだけではなくパフォーマンス上の問題も発生しやすく、想定しない事象が発生したときに問題の解決方法がわかりにくくなります。しかし、その一方で、その疎結合がマイクロサービスのメリットであるので、単純に結合型アーキテクチャとしてすべて作り直せばいいというものではありません。
また、既に作ったシステムを運用ニーズが変わる度に作り直す、というのも現実的な考え方ではありません。また、実際にシステムを作り直してしまうと、そのシステムのやり方を元に別の業務最適化も行われ、このループが終わらないという状況に陥ります。
それでは、既存のシステム資産を生かして、できるだけニーズに応えた連携を実現するには、どのようにしたらよいでしょうか。
連携を担うシステム拡張の方向性
既存のシステムを生かした形でシステムを連携する場合、できるだけ既存システムに手を加えずに問題解決するならば、まず考えられることがあります。図2のように、それぞれのサービスを横断的にアクセスする代理機能を設ける方法です。
この場合、単純に機能を作っては、UI/UXを担当していたところの複雑性がそのまま、代理サービス側に移動したに過ぎません。そのため、できるだけ同じ処理は繰り返さず、必要なデータはできるだけ事前に準備したくなります。
また、同じ処理の中で同じサービスに対して異なるリクエストが何度も発生することも避けたいため、やはり、そういう観点からもデータを事前に作成しておくというやり方が考えられます。
図では「キャッシュデータ」と記述しましたが、ここでのキャッシュとは、各サービスがもつデータを使っていつでも同じデータが復元できるという意味でのキャッシュになります。従って、結果データの再利用という狭義の意味でのキャッシュという意味も含みますが、一時データという程度に捉えてください。
もう一つのケースは、図3のように中核的事業機能を担うサービスを結合型アーキテクチャ型に成長させていくというケースです。
こちらは前回「アーキテクチャの選択パターン」で示した内容とかぶっているところもありますが、事業におけるメインビジネスを担う機能はやはり、複雑化していく傾向にあるため、最初からこのようなことを想定して作る方が、その後の対応がしやすいと筆者は思っています。
この記事は参考になりましたか?
- エンタープライズシステムのためのマイクロサービスアーキテクチャの実現連載記事一覧
-
- ESB/EAIを利用し、データ連携とコンポーネントで成長するシステムを構築する
- ESB/EAIとは何か? 疎結合なサービス同士のデータ連携を実現する仕組みと考え方
- エンタープライズシステムにおけるマイクロサービスの課題とは? マイクロサービスと統合型シス...
- この記事の著者
-
WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)
< WINGSプロジェクト について> 有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 ...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
