Amazon Web Serviceには「EC2」とか「S3」などの、いかにもクラウドなサービスの中に、地味だけど非常に便利なSimple Queue Service(以下、SQS)というサービスがあります。これはいったい何?という感じですけど、使いようによっては非常に有用なサービスです。日本語の解説は少ないのですが、この辺にありますね。
自分が手がけているWebのサービスでは、このSQSが結構重要な役割を果たしています。その経験を交えて解説してみようかな?という試みです。
そもそもWebのシステムでキューが必要なのか?という疑問がふつふつとわき上がってくるかと思いますが、最近ではWebで大量データを扱うなんて事は日常茶飯事ですから、結構使い道があるのじゃないかなぁ?と思います。
要は、時間のかかる処理を非同期で行いたいときに、キューがあれば便利だぜ!という事です。
自分の場合は、PDFを扱っています。そのPDFは、テキストも多いですが、ネット上の画像を収集して随時張り込んで行く必要があり、点数が多いとかなりの時間がかかってしまいます。そのためPDFの作成要求があれば、いったんフロント側に立っているサーバーがメッセージをキューに放り込んで、別のサーバーがメッセージを取りに行く、と言った様なフローを作っています。
絵がしょぼくてすみませんorz
「受付のひと」は直接エンドユーザーに画面を提供するフロントエンドのサーバーです。
「PDFを作るひと」は、エンドユーザーからは見えない所にいるPDF生成専門のサーバーです。
「受付のひと」は、どういった内容のPDFを作るかをメッセージの中に書いて、キューに放り込み、「PDFが出来たらお知らせするから待っててね!」という画面をエンドユーザーに表示します。
「PDFを作るひと」は、定期的にキューをチェックして、メッセージがたまっていれば1つ取り出し、メッセージの内容に従ってPDFを作ります。出来上がったらエンドユーザーに「出来たよ!」メールを送信し、1つのジョブが完了です。その後は、またキューをチェックして・・と、延々と繰り返します。
おおざっぱに言うとこのような流れです。この話は、SQSに限った話じゃなくて、一般的なキューを扱う話になります。次回では、なぜSQSだと嬉しいのか?について書いて行きたいと思います。
自分が手がけているWebのサービスでは、このSQSが結構重要な役割を果たしています。その経験を交えて解説してみようかな?という試みです。
キュー!
キューなんてものはあまりにも基本すぎて、特別な事じゃない感じがします。ですが、たとえプログラミング言語レベルで簡単に出来るとしても、実際にシステムで信頼性のあるものを作ろうとすると、なかなか大変です。また、そういったビジネスとは直接的に関係のない周辺層の部分を作るのは、限られた開発リソースだと苦しいものがあります。そもそもWebのシステムでキューが必要なのか?という疑問がふつふつとわき上がってくるかと思いますが、最近ではWebで大量データを扱うなんて事は日常茶飯事ですから、結構使い道があるのじゃないかなぁ?と思います。
要は、時間のかかる処理を非同期で行いたいときに、キューがあれば便利だぜ!という事です。
非同期処理
一口に非同期と言ってもいろいろなレベルがあると思いますが、ここで言うのは、一つの処理に数分から数時間かかってしまう・・というレベルというものです。SQSの解説では、動画の変換なんかが例に挙げられていますが、動画がサーバにアップロードされると、サーバー側では変換処理のメッセージをキューになげて、すぐさま「受け付けました」画面を出す・・みたいな事を想像されると解りやすいかなと思います。自分の場合は、PDFを扱っています。そのPDFは、テキストも多いですが、ネット上の画像を収集して随時張り込んで行く必要があり、点数が多いとかなりの時間がかかってしまいます。そのためPDFの作成要求があれば、いったんフロント側に立っているサーバーがメッセージをキューに放り込んで、別のサーバーがメッセージを取りに行く、と言った様なフローを作っています。
絵がしょぼくてすみませんorz
「受付のひと」は直接エンドユーザーに画面を提供するフロントエンドのサーバーです。
「PDFを作るひと」は、エンドユーザーからは見えない所にいるPDF生成専門のサーバーです。
「受付のひと」は、どういった内容のPDFを作るかをメッセージの中に書いて、キューに放り込み、「PDFが出来たらお知らせするから待っててね!」という画面をエンドユーザーに表示します。
「PDFを作るひと」は、定期的にキューをチェックして、メッセージがたまっていれば1つ取り出し、メッセージの内容に従ってPDFを作ります。出来上がったらエンドユーザーに「出来たよ!」メールを送信し、1つのジョブが完了です。その後は、またキューをチェックして・・と、延々と繰り返します。
おおざっぱに言うとこのような流れです。この話は、SQSに限った話じゃなくて、一般的なキューを扱う話になります。次回では、なぜSQSだと嬉しいのか?について書いて行きたいと思います。
0 件のコメント :
コメントを投稿