Azure Managed Service Column <Azure運用コラム>

マイクロサービスアーキテクチャとは?メリットとAzureでの実現方法について解説

Category: 実践編

2021.09.13

企業がサービスを素早くリリースするためには?アジャイル時代の最適な方法とは

近年、システム開発において、マイクロサービスアーキテクチャを採用する例が増えています。マイクロサービスアーキテクチャとは、マイクロサービスと呼ばれる小さなコンポーネントを組み合わせてシステムを実装する手法です。個々のサービスごとに独立して開発できる柔軟性と、他のサービスへの影響を最小限に留める保守性の高さがメリットです。

マイクロソフトのクラウド「Microsoft Azure」では、マイクロサービスアーキテクチャを実現するためのサービスとしてAzure Functionを提供しています。Azure Functionとは、Azure上でコードをサーバーレスで実行するサービスで、こうしたサーバーレスの技術を活用することでマイクロサービスを実装することができます。本記事では、マイクロサービスアーキテクチャの概要やメリットを踏まえ、Azure Functionによるマイクロサービスの実装について解説します。

1. マイクロサービスアーキテクチャとは

マイクロサービスアーキテクチャという言葉を聞きなれない方も多いと思います。まず、マイクロサービスアーキテクチャとは何か、概要とメリット、使われている技術について解説します。

1.1 マイクロサービスアーキテクチャの概要

マイクロサービスとは、システムが提供するサービスを、マイクロサービスと呼ばれる小さな独立したコンポーネントを組み合わせて実装する手法です。サービスを小さなコンポーネント単位に分割することで、コンポーネント間の関係性をシンプルにして、それぞれのマイクロサービス単位に独立して開発、デプロイ、アップデートすることを可能とした開発手法です。

1.2 マイクロサービスアーキテクチャの特徴とメリット

マイクロサービスは、下記の特徴を持っています。

  • 疎結合で独立したプロセスとして動作する
  • 独立してデプロイやアップデートができる
  • ネットワーク経由で通信してタスクを実行する

この特徴を活かすことで下記のメリットが得ることができ、俊敏で生産性の高い開発が可能となります。

  • 高い機敏性とスケーラビリティ
  • 小規模チームによる高い生産性
  • 依存関係を最小限に抑えられる
  • 最適なテクノロジーの選択

1.2.1 高い機敏性とスケーラビリティ

 

マイクロサービスは個別にリリースが可能なため、バグ修正や機能単位のリリースが行いやすくなります。アプリケーション全体をリリースせずにサービスの更新が可能なため、バグ改修を行いながらも新機能を素早くリリースすることもできます。また、マイクロサービス単位で拡張・縮小が可能となるため、アプリケーション全体をスケールアウトする必要がなく、柔軟なスケールができます。

1.2.2 小規模チームによる高い生産性

 

マイクロサービスは規模が小さい機能であるため、小規模なチーム編成で機敏性の高い開発を行えます。大規模なチームにありがちなコミュニケーションコストや管理オーバーヘッドが不要のため、生産性を高めることができるでしょう。

1.2.3 依存関係を最小限に抑えられる

 

マイクロサービスは個々のサービスが他のサービスと依存しない疎結合のアーキテクチャです。疎結合の実現により、他のサービスが障害を起こしてもそれ以外のサービスは影響なく動作可能です。また、マイクロサービスごとにデータを分離するため、データ更新時の影響を最小限に抑えることができます。

1.2.4 最適なテクノロジーの選択

 

マイクロサービスは独立性が高いため、他のアプリケーションに流用することが可能です。アプリケーションの必要に応じて適切なマイクロサービスを選択・組み合わせることで最適なテクノロジーを選択することができます。

1.3 マイクロサービスアーキテクチャで使われる技術

マイクロサービスアーキテクチャの特徴である独立性の高さは、共通的に使われる下記の技術により実現されています。

  • コンポーネント間通信
  • 同期/非同期メッセージ通信
  • サービスメッシュ

1.3.1 コンポーネント間通信

 

マイクロサービスアーキテクチャでは、各マイクロサービスがほかのマイクロサービスと「メッセージ」と呼ばれる情報をやり取りして処理の実行を行います。基本的に、メッセージのやり取りが処理のトリガーとなります。

1.3.2 同期/非同期メッセージ通信

 

マイクロサービス間でやり取りされるメッセージは、同期通信と非同期通信の2種類の通信方法があります。同期通信では、メッセージ送信元は送信先の処理結果を受け取るか、検知するまで処理を一時停止します。一方、非同期通信では、送信されたメッセージは「メッセージキュー」に格納され、メッセージキューへの格納が完了したらすぐに次の処理に取り掛かれます。同期通信と非同期通信を必要に応じて組み込むことで複雑な処理を素早く柔軟に実行できるようになります。

1.3.3 サービスメッシュ

 

各マイクロサービスは、IPアドレスなどの識別情報が動的に変動することが多いため、通信先のマイクロサービスを特定するための仕組みが必要です。このように動的に変動する識別情報を管理し、適切な送信先にメッセージを送信するための仕組みをサービスメッシュと呼びます。

2. Azure Functionとは

Azure Functionとは、マイクロソフトのクラウド「Microsoft Azure」が提供するサービスのひとつで、サーバーレスアーキテクチャを実装するためのサービスです。Azure Functionを活用することでAzure上にマイクロサービスアーキテクチャを実現することが可能です。

2.1 サーバーレスアーキテクチャ

サーバーレスアーキテクチャとは、サーバーを意識することなくアプリケーションの処理を行う技術であり処理の実行基盤です。サーバーレスは、メール受信など、起動条件が整った際に処理を実行するという特徴があり、マイクロサービスアーキテクチャと親和性の高い技術と言えます。

2.2 Azure Functionの概要

Azure Functionとは、Azure上で関数(コード)をサーバーレスで実行できるサービスです。Azure Functionによりサーバーの構築や保守が不要となり、必要に応じてスケーリングも行ってくれるため、利用者はサーバーを意識することなくアプリケーション開発に集中することができます。

また、Azure FunctionはC#、Java、JavaScript、Pythonなど多くのプログラミング言語に対応しており、トリガーとバインドという機能により他のアプリケーションを起動し、アプリケーション実行結果の受け渡しを行うことができます。これらの機能により、マイクロサービスアーキテクチャに必要なコンポーネント間通信や、同期/非同期通信などを実現することが可能です。

2.3 Azure Functionの料金体系

Azure Functionは基本的に従量課金制ですが、下記の3通りのプランがあります。

  • 従量課金プラン
  • Premiumプラン
  • App Serviceプラン

2.3.1 従量課金プラン

 

従量課金プランでは、Azure Functionsにより関数が実行された際のリソース使用量と、実行時間、実行回数に基づいて課金されます。

2.3.2 Premiumプラン

 

Premiumプランでは、Azure Functionsにより関数を実行した際のvCPUとメモリ使用時間に基づいて、1秒単位で課金されます。

2.3.3 App Serviceプラン

 

AzureのWebアプリケーションサービスであるApp Serviceの料金プランとして課金することも可能です。App Serviceを他のアプリケーションのために使用する場合は、追加コストを支払うことなく、同じプランの中で関数を実行することが可能です。

まとめ

マイクロサービスアーキテクチャは、企業がサービスを素早くリリース・改修し、目まぐるしく変化する市場に合わせてビジネスを発展させるためのアーキテクチャです。Azure Functionはマイクロサービスアーキテクチャを実現するためのサービスのひとつですが、ひとつの技術に囚われず、柔軟にサービスを使い分けることが重要です。ぜひ活用を検討してみて下さい。

Azure Function と Azureキューでシンプルなマイクロサービスを作ってみました。こちらもあわせてご確認ください。

あわせて読む:非同期メッセージングとマイクロサービス

Azure設計・構築を任せたい

Azure構築サービス

Azure構築サービス

Microsoft Azureを利用したシステムの設計・構築を代行します。お客様のご要件を実現する構成をご提案・実装いたします。

Tag: Azure Functions マイクロサービスアーキテクチャ

Contactお問い合わせ

お見積もり・ご相談など、お気軽にお問い合わせください。

single.php