AWS認定試験の合格に必要な知識を確認します。
アプリケーション間をつなぐ必要性
アプリケーションを開発するうえで,ビジネスの要求に対するサービスの変更のしやすさを表す柔軟性は非常に重要です。柔軟性を高めるためには,モジュールの強度(独立性)を高めて,かつ各コンポーネント間の結合度を弱めて疎結合な状態にする必要があります。そうすることで,影響範囲の限定が容易になるだけでなく,開発やテストを容易に行うことができるようになります。
各コンポーネントを疎結合な状態で連携させるためには,「イベント」と呼ばれるサービス間で共有される状態変化の情報をやり取りするメカニズムが必要になります。イベントのデータ形式には,連続性に意味をもたせないメッセージング方式と,連続的な順序性に意味をもたせるストリーミング方式があります。メッセージング方式としては,キューやトピック,イベントバスなどが挙げられます。これらのイベントを扱うことができる主なAWSサービスは,以下の通りです。
かなりざっくりとしたイメージですが,イベントストアはサーバ,イベントルーターはロードバランサのイメージをもつとよさそうです。例えば,Webアプリケーションは拡張性をもたせるためにサーバ単体では動かさずにロードバランサを前段に置くように,メッセージングイベントの伝搬でも,SNS-SQSのようにイベントストアの前にイベントルーターを置くことがあります。
これらのサービスの違いを把握するためには,下記の観点が必要です。
同期/非同期 | 連携タイミング | 処理の依頼先 |
---|---|---|
同期:連携元の完了を待つ | push:送信側が操作 | P2P:単一 |
非同期:連携元の完了を待たない | pull:受信側が操作 | pub/sub:複数 |
特に,トピックとキューを扱う非同期メッセージング方式のサービスは重要です。
P2PはPoint to Point,pub/subはPublish Subscribe方式の略称です。P2Pでは送信側はプロデューサ,受信側はコンシューマとよばれ,pub/subでは送信側はPublisher,受信側はSubscriberとよばれます。
コメント