こんにちは、cloudpack の @dz_ こと大平かづみです。
Prologue – はじめに
先日は、今注目の AWS Lambda の勉強会に行ってきました!
この魅力的なサービスを率先して手中に収めていくツワモノたちのセッションは、非常に意欲をそそるものばかりでしたっ!
セッション全体を通しての感想
AWS Lambda 利用のポイント
拝聴できたセッションを通して、私が大事と思ったポイントはこちらです。
利用者からの声から見えてきた課題
- 処理結果を受け取るのが難しい
- タイムアウトもあるので、多くのエラー処理はできない
- スケジューリング機能はない
- 処理結果を受け取りに難があるので、ジョブ管理には向かない
これをふまえると、シンプルに使ってあげるのが Lambda を使いこなす決め手となりそうです。
工夫・利点
- 処理をシンプルに
- エラー処理も減るので扱いやすい
- 他のAWSサービスをフル活用するためのつなぎ役に
- Amazon S3へ保存と組み合わせる
- Amazon DynamoDBでデータの管理
- Amazon SNSで通知
- などなど…
見れなかったセッション…
※ 遅れての参加でしたので、3セッションしか拝聴できませんでした…(泣) 見れなかったセッションに関してはご了承いただければ幸いです。
「LambdaとKinesisで作るど根性Tシャツ」
by 清水崇之 (@shimy_net) さん
RaspberryPi – Lambda, Kinesis, Raspberry Pi で IoT シャツを作ろう [前編] – Qiita
※ slideshare はまだ上がってないようでした。
「AWS Lambdaを紐解いてみた」
by 篠崎祐輔 (@bad_at_math) さん
※ ご本人さんの資料を探しきれなかったので、見つかり次第更新します。
セッションのご紹介
「Lambda × Mobileの可能性」
by 諏訪悠紀 (yuki0211s) さん
モバイルアプリの制作をメインにされている諏訪さんの視点でAWS Lambda を紹介くださりました。
AWS Lambda の気になるところ
- イベントドリブン
- サービス同士の連携が可能
- サーバーレス
- モバイルで行わせたくない処理も実行可能
モバイルアプリとAWS Lambda の連携の例
Cognitoでのユーザ管理からはじまり、データの保存にS3やDynamoDBを利用、Lambdaで次の処理に連携(データの保存やSNS通知、配信)という実用的な例を紹介してくれました。
肝は、ユーザ端末におきたくないデータ(ユーザ情報や大きいデータ)をAWS側で扱う際の連携に AWS Lambda が活躍しそうというお話でした。
- 写真管理アプリ
- Cognitoでユーザを特定、S3写真を保存 → Lambda メタデータ取得 → DynamoDBに保存
- アプリでLike機能
- Cognitoでユーザを特定 → DynamoDBにメッセージ保存 → Lambdaで、DynamoDBから送受信先のデータ取得 → SNSで通知
- キャンペーン配信
- Cognitoで非登録ユーザでも個別認識 → DynamoDBにユーザ情報保存 → Lambdaで、SNS通知やコンテンツ配信
本当にサーバーレスでいけるのか?
AWS SDK for iOS ではまだ AWS Lambda が未対応だったので、リポジトリから Fork して Lambda 対応をしてしまったそうです!すごい!
(エンドポイント(?)の末尾のスラッシュの有る無しが厳密なシーンがあるらしく、はまったそうです…)
懸念点
- 対応しているイベントがまだ少ない
- Functionの実行結果を受け取れない
- バッチ処理ができない
- テストがしにくい
「AWS Lambdaで作るクローラー/スクレイピング」
by 佐々木拓郎 (@dkfj) さん
前半はクローラーやスクレイピングの基本の話で、後半に実際に AWS Lambda を用いてみたお話でした。
佐々木さんの勘所
- 単一の処理に限定すると、エラー処理がしやすいだろう
- → 成功/失敗のどちらかに倒す
- Lambda はスケジュール、ジョブ管理には向かないので、別途用意する必要があるかも
- バグって暴走したら、ファンクション消してください!
実行元のサーバについて検証してみた
- 基本的には1日の単位内では同一のサーバで実行されてているようだ
- 負荷をかけるとどうなるの?
- → 同一サーバ(IP)で実行されていた
- さらに負荷をかけると、負荷に応じて自動的にスケールされているのがわかったそう
- → EC2のスケールより早い気がする
負荷をかける実験を経て、最後に佐々木さんは、こんなことを…(笑)
- Lambdaは簡単に、暗黒面に陥る
- Lambda からLambdaを呼び出すと…
- DDoS攻撃ツールなどになり得るので、扱いには十分に注意してください
「Lambdaによるクラウド型言語の実装」
by 菅原元気(@sgwr_dts) さん
AWS Lambda はまだプレビューなのに、Lambchop など、すでに便利ツールを作るところまでに至っている菅原さんは、なんとクラウド型言語なるものまで実装してみたというお話でした!
セッション前半でのキーワード
- 1日動かしても大した金額ではなかった
- Lambdaはフィルタ (スケジューラやジョブキューではない)
- 処理結果が把握しにくい
- CloudWatch Logsで受け取れるが、グルーピングや時系列の不順で追いにくい
- エラーハンドラがしにくい
クラウド型言語 Clala
AWS Lambda のファンクションで使う言語の Node.js なら文字列から関数実行できるらしい。
これを利用して、ローカルで定義した関数を、AWS Lambda で実行!
クラウド側の scheme (?) で関数を実行できるんだそうです。
これは、実装はできたが、まだ実用的なものではなく、さらなる進展を期待しているそうです。
デモは、私には難しくて時間内に細部まで理解できなかったので、また AWS Lambda の勉強を進める上で見ていきたいと思いました。
Epilogue – 終わりに
自力で理解して AWS Lambda を使おうと思っているところに、既に使った話を聞いてしまっては楽しみ半減してしまうと思ったのですが、全くそんなことはありませんでした!
むしろ、気をつけなければならないところがわかり、かなり有益な情報を得られた Meetup でした!
懇親会でも、Lambda をさらに使い倒す話で盛り上がったり、最近出た Amazon EC2 Container Service の話、また、Lambdaから離れても、皆持ち前の技術分野で行動分析の話などで盛り上がりました。
久々に、猛者の集まる魅力的な勉強会でした!
次回は私も利用してる側で参加できるように、精進します!