このページの本文へ

前へ 1 2 次へ

米MS AzureCAT成本氏が「マイクロサービス」の設計パターンを解説

マイクロサービスの境界を決める「DDD」とは?

2018年04月06日 09時00分更新

文● 羽野三千世/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

Azureでのマイクロサービスのインフラ選定

 ドメインモデルができたら、次に、各ドメインに対応するマイクロサービスをマッピングし、各マイクロサービスのクラウド機能を設計していく。

マイクロサービスの設計フロー。ドメインモデルができたら次はサービスマッピング

 マイクロサービスの実装において、「必ずではないが」(成本氏)、コンテナー化するメリットは大きい。各マイクロサービスをコンテナーイメージとして配布し、レジストリを経由してホスティング環境に手軽にデプロイできるためだ。

 Azureでは、コンテナーオーケストレーターとして、Kubernetes、Docker Swarm、DC/OS、Azure Service Fabricが選択肢になる(Kubernetes、Docker Swarm、DC/OSはのクラスター管理をマスターノードで行う、Service Fabricはマスターノードとクライアントノードを区別しない)。Azure上でのマイクロサービスの設計では、市場シェアが大きいKubernetesか、.NETのツールと親和性が高いService Fabricのどちらかを推奨している。

Azureでのコンテナーオーケストレーターの選択肢

 マイクロサービスを運用するコンピュートの選択肢には、ACS Engineを利用する「Azure Container Service(ACS)」、マネージドのKubernetesサービス「Azure Container Service(AKS)」、秒課金で使えるコンテナーサービス「Azure Container Instance(ACI)」、前述のAzure Service Fabric、FaaSの「Azure Functions」がある。「ACSは間もなくAKSになる。ACIは専用VMのインスタンスを持たずにコンテナーを直接管理するサービスだが、Kubernetesのフル機能がない。簡単に使いたい場合はACI、プロダクトで使うならAKS」(成本氏)。また、Service Fabricは.NETの世界でやりたい人向け、Azure FunctionsはイベントドリブンのFaaSで実装できる簡単な処理の選択肢になる。

Azureでのコンテナーインフラの選択肢

 マイクロサービスではすべてをコンテナー化する必要はないが、ただし、AKSとAzure Functionsを組み合わせたアプリケーションの場合、AKSのサービス間連携は同一のクラスターで行われているのに対して、AKSとFunctionsの連携はクラスター外で行われる。「クラスター外通信が多いとレイテンシで損をする」(成本氏)。

ワークフロー管理、サービスメッシュの選定

 マイクロサービスでは、各サービスを連携して動作させるワークフロー管理、サービス間通信も重要な要素になる。Azureでのマイクロサービスのワークフロー管理ツールとしては、「Logic Apps」、Azure Service Fabricのほか、マイクロソフトリサーチがオープンソース化した「Orleans」、オープンソースの「Akka」などが選択肢になる。成本氏が作成したドローン配送サービスのシナリオでは、「毎秒1万リクエストを管理する仕様を想定したため」(成本氏)、Akkaを採用している。ほとんどのケースではそこまで必要なく、ノンコーディングで使えるLogic Appsでも十分対応できるという。

Azureでのワークフロー管理ツールの選択肢

 サービス間通信は、プロトコルをどうするか、サービス更新直後の他サービスとの連携はどうするか(どうマイグレートするか)、呼び出し先のサービスが応答しなかったときにリトライ(サーキットブレイキング)する仕組みをどうするかといった検討が必要になる。このような、サービス間通信のモニタリングと制御の処理に担うのがサービスメッシュと呼ばれるテクノロジーであり、Kubernetesの機能に内包されているほか、オープンソースの「Istio」や「Linkerd」などもサービスメッシュの機能を提供する。ドローン配送システムのシナリオでは、各サービスを検証したところIstioが遅かったためLinkerdを採用している。

Azureでのサービスメッシュの選択肢

 以上のようなサービス選定をした結果のアーキテクチャが次のとおりだ。

ドローン配送サービスのマイクロサービスアプリケーションアーキテクチャ

 ACS(まもなくAKSへ移行)のKubernetesクラスター上に、コアとなる「デリバリースケジューラー」のマイクロサービス、スケジューラーに呼び出される5つのマイクロサービスが実装されている。さらに、宅配完了などのイベントをトリガーにメール配信や課金を行うマイクロサービスをAzure Functionsに実装しており、計7つのマイクロサービスで1つのドローン配送アプリケーションを構成している。

 デリバリースケジューラーは、Azure Event HubsとAkkaで構成される。アプリケーションは毎秒1万リクエストをコンスタントに処理する設計になっているが、ピーク時には10万リクエストを受け付ける想定になっている。「1万リクエストを超過した分はEvent Hubsにバッファとしてためておく。AkkaがEvent Hubsからの呼び出しの速度を落としてくれる」(成本氏)。

 また、このアプリケーションでは、デリバリースケジューラーからの1トランザクションでバックエンドの5つのサービスを呼び出す処理を行う。「5つのサービスの呼び出しののうち1つでも失敗したらどうするか、マイクロサービスではこの仕組みを必ず実装しておかなければいけない」(成本氏)。ここではバックエンドを呼び出すトランザクションをAzure Service Busに入れておき、失敗した際のリトライ、連続リトライに失敗したらキャンセルするなどの処理を行っている。

* * *

 Azureアーキテクチャセンターには、今回紹介したマイクロサービスの設計パターンのほかにも、Azureを初めて導入検討する初心者向けの導入ガイドから、マイクロサービスを含む各種アプリケーションアーキテクチャガイド、データアーキテクチャガイド、コンピューティングとデータストアーの選択を助ける情報、AWSプロフェッショナルのためのAzureガイドなど、入門から応用まで幅広い情報が掲載されている。間もなく、成本氏の新作としてIoTの設計パターンが公開されるそうだ。

前へ 1 2 次へ

カテゴリートップへ

本記事はアフィリエイトプログラムによる収益を得ている場合があります

アクセスランキング

  1. 1位

    トピックス

    “持たない家電”ランキング、もはや定番のアレがやっぱり1位なような

  2. 2位

    ビジネス・開発

    こんどは“市区町村の財政状況”が丸わかり デジタル庁「ジャパン・ダッシュボード」に地方財政データ追加

  3. 3位

    ITトピック

    管理職ほど機密情報をAIに入力している実態、なぜ?/27卒学生の就職人気、IT業界トップ企業は/最新インシデントの傾向10パターンまとめ、ほか

  4. 4位

    トピックス

    若い人ほど「しっかり睡眠」、中高年は眠れないのか眠らないのか

  5. 5位

    トピックス

    【無双状態】2025年、最も雑誌の表紙を飾ったのは「えなこ」! 1万誌を調査して見えた圧倒的カバークイーン

  6. 6位

    トピックス

    その発想はなかったー! 「中古の船」を海上データセンターにする構想がすごいぞ!

  7. 7位

    TECH

    技術ニュースを毎朝スマホで流し読みしたい、だから自分専用サイトを開発した話

  8. 8位

    トピックス

    「寝不足だから仕事休むね」世界は7割、日本では4割が経験

  9. 9位

    トピックス

    【人材争奪戦】大手企業の8割超が「高度IT人材」採用に危機感! 今一番欲しいのは「AI」と「セキュリティ」のプロだぞ

  10. 10位

    トピックス

    【世界最下位】「男女平等は十分に進んだ」と思う日本人、なんとたったの28%! 世界から取り残される日本のリアル

集計期間:
2026年04月26日~2026年05月02日
  • 角川アスキー総合研究所