今日 9/8 に横浜で開催された CROSS 2017 で,パネルディスカッションに参加してきた.テーマは Serverless Ninja Warriors で,サーバレスのガチ勢に囲まれて緊張したけど,楽しかったし,モチベーションも高まった.ありがとうございました!
資料
自己紹介として,簡単な資料を作成して最初に話をした.SpeakerDeck にアップロードするほどでもないため,そのまま画像で貼ってしまう.
話した内容としては,ザッと以下のような感じ.僕のポジションとしては「非ガチ勢」だったので,サーバレスに興味があるけど試したことがない人や,Lambda を管理コンソールで実装していて運用に困っている人などの参考になれば良いなと思っていた.
- 個人的なサーバレスの定義は「FaaS の特性(ある意味で制約とも言える)を活かしたアーキテクチャ全般」と考えている(今のところ…)
- サーバレスに限らず,スモールスタートを意識してチームに成功体験を作ると,導入障壁が下がる
- そのために社内ツール系は最適
- デプロイ/テストなど,ラストマイルも意識するとプロダクションレディな知見が得られる
- CircleCI + Apex の組み合わせは非常に便利
- Apex は複数ファンクションの管理も,複数環境へのデプロイもできる
- ローカル環境は python-lambda-local を使っている
質疑応答など
「CloudWatch Events など,Lambda 以外の AWS リソースはどのように管理しているのか?」という質問があり,ここは現状だと管理コンソールでポチポチしている.サービス全体で CloudFormation を導入するべきだと思うし,Apex + Terraform の構成にしても良いけど,現時点では既存のリソースへの影響が怖くて対応できていないという感じ.やらなきゃ!
「環境ごとにどのようにデプロイしているのか?」という質問もあり,これは Apex の Multiple Environments 機能を使っている.さらに Lambda の環境変数を Multiple Environments の定義ファイルに書けるため,それで invoke する Lambda の ARN などを管理している.あと IAM でも厳格にリソースを制限している.詳細は以下の記事を参照してもらえればと!
補足など
ローカル環境の話が全体的にあまり無かったけど,僕は python-lambda-local を使っている.詳しくは以下の記事に!
今日は話すタイミングが無かったけど,Apex の話をすると「Go 動くんでしょ?」とよく聞かれたりする.前に発表した資料の後半にまとめているけど,結局は Node.js の子プロセスで Go バイナリを動かして,プロセス間通信をしているだけなので,絶対に必要なら検討しても良いけど,AWS 公式でサポートされるまで待っても良いのでは?というのが個人的な判断かな.
今回紹介したアーキテクチャは CloudWatch Events で Lambda を起動して SQS からメッセージを取得するため,ポーリング系の処理になっている.現時点では SQS のキュー操作は Lambda のイベントになっていないため,イベントドリブンにはなっていないけど,公式サポートが入ると嬉しいなとは思う.
会場で感じたこと
会場の各ホールが分離されていないため,隣のセッションの声がガンガン入ってきたり,マイクで音を拾えないと後ろの席まで届かなかったり,大規模カンファレンスの会場としては適していないのではないかなと思った.パネルディスカッションの序盤でそれに気付いたため,僕はかなり大きな声で話すようにした.
まとめ
今回パネルディスカッションに参加させてもらえて非常に刺激的だった.サーバレスとは何か?という疑問を自分なりに考え直せたことも良かったし,なによりも,パネルディスカッションに一緒に参加した皆さんの技術レベルが本当に高く,ディスカッションをするだけでも楽しかった.モチベーションも高まったし,もっともっと攻めて行かないとなと感じた.本当にありがとうございました!