マイクロサービスの考え方

最終更新日: 2020年7月7日
R8 | R9

一般的に知られているマイクロサービスアーキテクチャ

"マイクロサービスアーキテクチャ" (Micro Service Architecture, MSA) とは、1つのアプリケーションをビジネス視点で分割した複数のサービスに分割し、疎結合に連携したアーキテクチャのことです。

MSA のメリットはいくつかありますが、ここでは "開発チームごとに独立してアプリケーションの入れ替えができること。" とします。

よく知られている MSA のイメージを示します。マイクロサービス単位で開発言語やデータベースは異なっており、必要に応じて双方で通信を行います。(通信の方式は REST を使うことが一般的です。)ただし Redis や MQ などはサービス間で共有されることもあります。

図1 よく知られているマイクロサービスアーキテクチャ

Wagbyによるマイクロサービスアーキテクチャ

図1に示すアーキテクチャにはデメリットもあります。それは "連携時のパフォーマンス" です。Wagbyに適用した場合、次のような問題が生じます。

トランザクション処理や参照連動のパフォーマンスの大幅な劣化。Wagbyで開発したアプリケーションは多くの場合、複数のモデルが連携したトランザクション処理や、モデル間の参照連動が含まれます。REST API 経由の通信は(ローカルで完結する場合と比較して)何十倍も遅いため、複雑なモデル構造では致命的になります。

これらの問題を回避しつつ、MSAのメリットである "独立したアプリケーションの入れ替え" を享受するため、Wagby ではデータベースを共有することを前提としたアーキテクチャを採用します。以降、これを "Wagby マイクロサービスアーキテクチャ (W-MSA)" と呼びます。

図2 Wagbyマイクロサービスアーキテクチャ(W-MSA)

W-MSA の基本方針は次の通りです。

  • アプリケーションをビジネス視点で分割する。(人事、在庫、営業など)
  • それぞれのアプリケーションが、データベースのトランザクション境界となる。アプリケーションをまたぐトランザクション処理は行えない。(必要な場合はMQを経由した非同期処理などで更新を行う。)
  • アプリケーション単位でオートスケールを可能とする。
  • すべてのアプリケーションでデータベース、Redis、MQ といったサービスを共有する。これらのサービスはそれぞれスケールアップ、スケールダウンできるものとする。
  • それぞれのアプリケーションは "固有部" と "共通部" をもつ。
  • 固有部の変更であれば、アプリケーション単位での入れ替えを可能とする。

ワンポイント

W-MSA はマイクロサービスの単位にデータベースを含めないため、アプリケーションの独立性を低下させますが、連携時のパフォーマンスに関する問題を回避します。同時に、RDBが提供するトランザクション処理を利用できるようにします。その結果、範囲を限定した上でアプリケーションの入れ替えを行えるようにします。

データベースの扱い

W-MSA のポイントはデータベース(リレーショナルデータベース)の扱いにあります。エンタープライズシステムで必須要件となる "トランザクション処理 " と "テーブルスキーマの維持管理" を保ったまま MSA のメリットを享受するため、データベースの拡張性はスケールアップ方式を採用します。

図3 DBのスケールアップとスケールアウト

多くのパブリッククラウドが提供するデータベースサービスはスケールアップ方式を提供しています。W-MSA はパブリッククラウドで運用されることを前提にしており、データベースもフルマネージドサービスとして提供されているものを採用します。

一般的に知られている MSA は、データベースの拡張はスケールアウト方式を採用しています。しかし W-MSA はこれまで説明した理由からスケールアップ方式を採用します。

運用担当者

W-MSAを有効にしたとき、マイクロサービスとして扱われる複数のアプリケーションがビルドされます。

本ガイドでは、AWS (Amazon Web Service) 環境で運用するための方法を説明します。はじめに、次の担当者を決めてください。

担当者 必要性 説明
AWS管理者 必須 (外注可) 本ガイドに示す「初期設定」を行います。また、運用開始後は定期的に AWS の状況確認とルーチンワーク(データベースのバックアップなど)を行います。
ドメイン管理者 必須 (内部で決めること) AWS環境が利用可能となったあと、ビルドしたアプリケーションを転送し、必要に応じてデータベースのスキーママイグレーションおよび初期データのインポートを行います。
データ管理者 任意 扱うアプリケーションが増えてくると、共通モデルおよび複数のドメインで利用されるモデルの扱いで、複数のドメイン管理者と調整する必要が生じます。このとりまとめを行う方を決めておくことを推奨します。

AWSの初期設定

AWS管理者は、いくつかの「初期設定」が必要です。こちらは AWS の知識を有するエンジニアに直接、サポートします。Premium Support でお問い合わせください。

ライセンスの確認

Wagbyマイクロサービス(W-MSA)は Unlimited または Corporate ライセンスで利用できます。

トライアルキット、評価用ライセンス、Project ではご利用いただけません。(設定しても無視されます。)

ワンポイント

Wagby Designer を起動する前に、ライセンスキーを配置しておいてください。

進め方と技術サポート

次ページより W-MSA に対応したアプリケーションのビルド方法と AWS への転送、そしてサービス単位の入れ替えを含む運用方法を説明していきます。