ServerlessConf Tokyo プレカンファレンスに参加してきた
はじめに
2016年9月30日にアマゾンウェブサービスジャパン(目黒)で開催された ServerlessConf Tokyo 2016 のプレカンファレンス「Zombie Apocalypse Workshop: Building Serverless Microservices」に参加してきました。翌日に行われるカンファレンス(本番)もありますが個人的にはこのプレカンファレンスを目的に参加しています。この記事ではこのワークショップに参加して私自身が感じたことをメモしておきたいと思います。(有料イベントですので、ワークショップの具体的な中身やソースには触れません)
Zombie Apocalypse Workshop: Building Serverless Microservices とは
Zombie Apocalypse Workshop (ゾンビ・アポカリプス・ワークショップ) は昨年の AWS の re:Invent で開催され好評だったワークショップです、今ではサンフランシスコやニューヨークだけでなく、ロンドンやベルリンなどでも開催され、大変人気を博しているワークショップです。今回、ServelessConf Tokyo で遂にその日本版を開催します。
2016 AWS Zombie Microservices Roadshow
なぜ参加したのか
小規模なウェブサイトの開発から運用まで一通りを担当してきてモノリシックなサーバ運用の辛さを感じていました。静的コンテンツの配信は Amazon S3/CloudFront を活用していますが動的な部分もサーバレス化していくために、サーバレス・アーキテクチャの概要を理解する足がかりにはぴったりなイベントだと思い参加することにしました。
ワークショップ
このワークショップではゾンビに主要な大都市を乗っ取られたことを想定して生存者同士を繋ぐためのコミュニケーションシステム(チャット)を構築します。
シナリオ
ゾンビに主要な大都市が乗っ取られました。AWS Lambda Signal Corpsは残った生存者同士を繋ぐためのコミュニケーションシステムを構築しています。 本ワークショップでは、プロビジョニング、管理、サーバのスケーリングを全く必要としない、イベントドリブンなマイクロサービスを構築するためのプラットフォームをAWS Lambdaがどのように提供しているかを学習します。このワークショップでは、AWS Lambda、API Gateway、DynamoDBそしてS3を使ったサーバレスなマイクロサービス構築の基本を紹介します。参加者の皆さんは、世界中からアクセス可能なセキュアでスケーラブル、そして信頼性の高いチャットサービスを我々の提供するブループリントを使って構築します。
スライドとガイド(英語版)
ガイドに沿ってマネジメント・コンソール上から各サービスの設定を行い AWS Lambda や API Gateway 等の使い方について学ぶ形式になっています。すべて一から作るのではなく、Blueprint(CloudFormation) が用意されているのでこれを使って一通りの環境を準備します。この中にはAWSの環境 HTML と JS でできた シングル・ページ・アプリケーション(SPA)も含まれます。ドキュメントもしっかりしているので個々のサービスの利用経験がなくても進めることができました。
プレカンファレンスのスライドは日本語に翻訳されたものが提供されていますが、同じ内容で公開されている英語版はこちらです。
ワークショップのお題
Blueprintをもとにシンプルなチャットサービスを構築し、それを拡張していくのが今回のお題になります。用意されたお題は以下の5つ。このお題が終わったら、シナリオに沿った追加のチャレンジも用意されています。この記事では細かい紹介はしませんが、気になる方は上記のスライドとガイドをチェックしてみてください。
- タイピングインジケータ
- Twilio による SMS のインテグレーション
- Elasticsearch を使った検索
- Slack からのメッセージ送信
- Zombie Sensor with Intel Edison (Edisonが必要なのでワークショップ内では行わない)
私がワークショップの時間内で実装できたのはタイピングインジケータと Twilio による SMS のインテグレーションの2つでした。これだけでも Amazon Cognito (en) の UserPool セットアップ方法からAPI Gateway/AWS Lambda の概要、SMS を使ったインテグレーションが学べ私にとってはとても有意義なワークショップでした。まだ終わっていない残りの2つは時間を見つけてチャレンジしたいと思います。
SMSを使ったインテグレーション
Twilio で取得した電話番号に対して SMS を送り、その Webhook から API Gateway -> Lambda Function を起動するサンプル。
送信したメッセージがチャットにリアルタイムで表示される。
ハマったこと
Cognito の UserPool セットアップを行って、用意されている SPA からサインアップする際、電話番号のバリデーションが上手く通らず(形式は合っているが通らない番号が存在する)仮の電話番号(8012345678
)でサインアップを済ませて、最終的に DynamoDB の値を直接編集した。
もうひとつは Twilio の Webhook に指定するエンドポイントの URL がガイドのドキュメント上には明確に指定されていなかった(考えればわかる事だが・・・)ためそこに気づくの時間がかかってしまった。
ワークショップに参加して良かったこと
ワークショップのガイドに沿って設定を行うことでサーバレス・アーキテクチャの概要を理解できることはもちろんですが、提供されるリソースにすべてのコードとドキュメントが含まれているので、特定の Lambda Function でどんなことが行われているのか後から見返すこともできるのも良い点でした。これを切っ掛けにもう少し噛み砕きながらそれぞれのサービスを理解していきたいと思います。
素敵なイベントを提供してくださったServerless Communityの皆様、会場提供いただいたアマゾンウェブサービスジャパン様、カンファレンスのスポンサー各社様、ありがとうございました。
お知らせ:2016年11月9日に Serverless Meetup Tokyo というServerless Community(JP) 主催のイベントがあるようです。