SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

AWSの深いところ見せちゃいます! by AWSクラウドサポートエンジニア

クラウド・ネイティブのお作法(1)「非同期処理」~24時間365日ダウンタイムがゼロのシステムのために必要なこと

AWSの深いところ見せちゃいます! by AWSクラウドサポートエンジニア 第6回


非同期処理 - ユーザー画面はレスポンス良くしたい(2)

ELBおよびSQSを用いた非同期処理のシステム構成

 便利なリクエストキューではありますが、単一のサーバーで実装してしまうと単一障害点になってしまいます。

 AWSでは、リクエストキューのために、Amazon SQSというサービスを提供しています。先ほどの事例で言えば、図6のような位置でリクエストを受け付けることが可能です。

 Amazon SQSでは、複数のサーバーにリクエストを保持し冗長化しています。また、メッセージが増加しても高スループットで処理することが可能で、簡単に使用することができます。

図6 ELB_SQS
図6 ELB_SQS

ポーリング(pull型)とイベント(push型)

 非同期処理を実装すると、利用者は待たされることがなくなりますが、キューイングされたリクエストが実際に処理完了したか否かについては、別途確認しなければなりません。また、処理完了後に実行させたい処理もあるかもしれません。このとき、プログラム設計のアプローチとして2通り考えることができます。

 1つめのアプローチとして、データ更新を依頼したアプリケーションが自ら定期的にステータスを確認する方法が考えられます。これをポーリング、もしくは、データを引っ張ってくるという意味合いから、pull型と呼びます。

 2つめのアプローチとして、実際のデータ更新を担当するバックエンド側プログラムが、アプリケーションに対して、「データが完了した」という旨のイベント通知を行う設計も考えられます。アプリケーションに対してイベントをプッシュするという意味合いでpush型と呼びます。

AWS APIにおける非同期処理

 AWSのAPIには、同期処理を想定したAPI(同期API)と非同期処理を想定したAPI(非同期API)があります。多くのAPIは非同期処理を想定して実装されています。

 先ほどご説明した通り、非同期APIの場合、APIのレスポンス返信時点では処理は完了していないため、当該処理の完了を別途確認する必要があります。また、その確認方法として、ポーリング(pull型)とイベント(push型)が考えうることをご説明しました。

 AWSのAPIでは、ポーリング(pull型)の手法として、リソースの状態をDescribeするAPIを繰り返し発行することを想定しています。後続の処理を記述したい場合には、ポーリングを繰り返すループ処理によって状態変化を検知したのち、後続の処理を行います。

 イベント(push型)の場合、リソースの状態変化はイベントとして通知されます。このイベントを契機に後続の処理を加えることができます。

次のページ
非同期処理 - ユーザー画面はレスポンス良くしたい(3)

この記事は参考になりましたか?

AWSの深いところ見せちゃいます! by AWSクラウドサポートエンジニア連載記事一覧

もっと読む

この記事の著者

小武 三博(アマゾン ウェブ サービス ジャパン株式会社)(コタケ ミツヒロ)

 AWSクラウドサポートエンジニア。国内SIerにて業務システム、障害監視システムの設計・開発に携わる。その後、国際税務コンサルに転職し、社内ITとしてデータセンター運用、オフィスネットワーク設計構築、セキュリティ監査対応、税務システム開発などに携わる。アプリケーションからインフラまで、また、Lin...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10402 2017/10/12 18:48

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー