Fowler)氏が提唱したマイクロサービスは、一時はバズワードと呼べるほどトレンド化しました。クラウドの世界ではデフォルトのアーキテクチャスタイルに位置付けられ、キャッチコピーとして雑誌/Webの記事やアナリストレポートにも登場し、近年では政府のシステム入札案件の要件としても見かけるようになってきました。基盤構築・デプロイ自動化」の第1回でもマイクロサービスアプリケーションのメリットについて触れましたが、提唱された当初と比べて、マイクロサービスが実現を目指す領域は広がりつつあります。従来、マイクロサービスでは、下図のような構成によって、以下に示すメリットが得られるアーキテクチャを目指してきました。近年では下図のように、Webアプリケーション、モバイル、運用端末といったマルチクライアントに加え、サードパーティサービスに利用されることを想定し、ビジネスロジックを切り出してAPI化したマイクロサービスアーキテクチャを検討する動きも目立ち始めています。Architecture)やマッシュアップなど、マイクロサービスが提唱される以前からありました。サービス連携時のセキュリティ対策の複雑さや多数のクライアントが接続するための拡張性に難があるなど、広く普及させるには障害となる多くの問題を抱えていました。近年このような潮流が再び巻き起こっているのは、クラウド化によってスケーラビリティが容易に確保できるようになったことや、OAuth2、OIDCなどの標準化されたセキュリティ技術の普及により、技術的なハードルが下がってきたことが背景にあります。一方で、このようなマイクロサービスアーキテクチャでアプリケーションを構築するのは容易ではありません。サービス分離によるトランザクションの分割/通信エラーの発生や、データベースが分離された構成での一貫性担保の問題、揮発性のあるサーバ環境での永続化処理の実行、各サービス自体のスケーラビリティの確保、さまざまなクライアントから実行される場合の認証/認可といったセキュリティ対策など、アプリケーション実装も相応に複雑になります。APIとして切り出した場合、以下のようなアーキテクチャ上の検討課題が浮上します。Webアプリケーション以外にも、モバイルなどのSPAクライアント、サードパーティサービス連携がある場合のサービス分割/ビジネスロジックの分離方針こうしたなかで、AWSではマイクロサービスアーキテクチャベースのアプリケーション構築をサポートする以下のサービスが提供されています。LoadBalancerで構成されるサービス。詳細は、連載「AWSで作るクラウドネイティブアプリケーションの基本」の第5回を参照してください。マイクロサービスアプリケーションがデプロイされたDockerコンテナを実行するコンテナオーケストレーションサービスです。コンテナの死活監視やオートスケーリングなどを実行します。マイクロサービスアプリケーションがデプロイされたコンテナを実行する、オープンソースのコンテナオーケストレーションツールKuberntesのマネージドサービスです。複数のマイクロサービスアプリケーションのデータ共有のためのキャッシュストレージとして利用できるサービスです。マイクロサービスアプリケーションのAPIゲートウェイとして利用できるサービスです。APIの定義やデプロイ、サービスへのHTTPリクエスト/レスポンス変換などを実行します。サーバレスでマイクロサービスアプリケーションの実行が可能なサービスです。認証/認可サービスです。クラウドリソースのDNSサービスです。オープンソースのサービスメッシュプロキシEnvoyのマネージドサービスです。マイクロサービスアプリケーションを分析することができるサービスです。マネージドキューサービスです。マイクロサービス間の非同期メッセージ連携などで利用します。Publish/Subscribe型のメッセージ配信サービスです。複数のマイクロサービスへメッセージを連携する場合などで利用します。Kafkaのマネージドサービスです。非同期メッセージ連携などで利用します。マイクロサービス間の非同期メッセージ連携などで利用します。メッセージの到達保証を担保したい場合に利用しますただし、当然これらのサービスがマイクロサービスアーキテクチャにおける課題を全てカバーしてくれるわけではありません。必要に応じて、さまざまなオープンソースのプロダクトを組み合わせながらアプリケーションを構成/実装していく必要があります。本連載では、AWSのマネージドサービスを駆使しながら、マイクロサービスのメリットを最大限享受できる、SpringBootをベースとしたアプリケーションアーキテクチャの実装例を紹介していきます。この分野の技術は栄枯盛衰が激しく、各プロダクトの機能追加や新たなサービスの登場によってベストプラクティスは変わっていくので、AWSクラウド上での実装例の1つとして捉えていただくと良いと思います。次回以降は、マイクロサービスアプリケーションを構築していく上で難しいハードルの一つである認証/認可処理について、その実現方法の全体像を解説します。NTTデータ金融機関システム業務アプリケーション開発・システム基盤担当、ソフトウェア開発自動化関連の研究開発を経て、デジタル技術関連の研究開発・推進に従事。Professional等の資格を持ち、アプリケーション基盤・クラウドなど様々な開発プロジェクト支援にも携わる。Ambassadors選出。共通点は○○だったAI時代に「必要とされる人材」とは??」4月1日より...71%の人が仕事を辞めたいと思った経験あり。レポートランキングをもっと見るもっと見るIaaS※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。システムやソフトウェアの開発に携わるエンジニアに向けた最新情報など仕事に役立つ話題などを提供していきます。Corporation。