こんにちは、エンジニアの春藤です。
11/2,3 に開催されたServerlessConf Tokyo 2017に参加させてもらいました。
もともと一般枠に参加を申し込んでいたのですが、Serverlesss Framework のコミッター Twitter 氏にワークショップの手伝いの話をいただいて、運営のお手伝いというかたちで参加しました。
11/2(木) 18:00 - 21:00 のワークショップで参加者の方の質問に対してサポートするという役割だったのですが
事前のリハや内容のすり合わせの準備と当日の参加者のヘルプ以外は、一般参加者として普通に楽しんでいました(笑)
会場の様子
※私が会場の写真撮ってなかったため牛尾さんのtwitterを引用
Serverless conf! pic.twitter.com/zUCZY9GLcH
— Tsuyoshi Ushio (@sandayuu) 2017年11月2日
1日目 (11/2)
ワークショップの日でした。
10:00〜18:00まで、昼休憩を除いてがっつりワークショップを行い、18:00〜21:00まで今回運営をお手伝いするワークショップに参加しました。
Create A Trainable Bot as a Service
GitHub - Azure-Samples/azure-serverless-workshop-team-assistant at lang/jp
今回はパーソナルアシスタント、いわゆるBotを作成するワークショップを選択しました。
業務では普段AzureのPaaSサービスのWeb Appsを使っており、この機会にAzureの他のサービスとも仲良くなりたいと思ったのと、Botを作ったことが無かったので作ってみたかったからです。
作業手順は全てGithubに書いてあるため、それを見ながら進めていく形式でした。
どこを書き換えるか、どんなコマンドを打つかは全て書いてあるため、前提知識は必要無い様になっていましたが、Azure、Node.js、npmなどの知識が無いと結構難しそうな内容でした。
作業量としてはそこまで多くは無かったのですが、Microsoft Bot Frameworkを初めて触ったため、そこで結構ハマって時間がかかってしまいました。
Bot以外にも応用できそうなノウハウもありました。例えば、今回Azure Functionsを使ってBot用のAPIを作成したのですが
AngularやReactなど、フロントエンドのJavaScriptフレームワークでWeb APIを使いたい場合
ブラウザでクロスオリジン制約が問題となりうるのですが、Azureにある機能で対処法が2つ紹介されていました。
- FunctionsにCORSの設定する。
- Function proxyを利用して、同じドメインにまとめる。
ワークショップは時間内に全て終わらなかったのですが、Functions、Logic App、Bot Frameworkなど
たくさんの技術を触ることができました。
また、素晴らしいことに、Kenichiro Nakamuraさんがワークショップの内容の解説記事を書いてくださっていて
時間内ではただコピペで流していた部分の意味を復習することもできました。
Azure Serverless ワークショップ Deep Dive : モジュール 1 - 2 | Microsoft Learn
Azure Serverless ワークショップ Deep Dive : モジュール 3 | Microsoft Learn
Azure Serverless ワークショップ Deep Dive : モジュール 4 | Microsoft Learn
Azure Serverless ワークショップ Deep Dive : モジュール 5 | Microsoft Learn
Azure Serverless ワークショップ Deep Dive : モジュール 6 | Microsoft Learn
Azure Serverless ワークショップ Deep Dive : モジュール 7,8 | Microsoft Learn
Introducing a new event-driven world
今回お手伝いとして参加したセッションです。
Event Gateway(EG)というのはイベントとして抽象化してServerless Framework
ワークショップではローカルでEGのサーバを立てて(EG自体はGoで書かれている)
lambdaの関数をEGに登録して、EGを経由して叩いてみるというデモを行いました。
また、KubelessというOSSのサーバーレスフレームワークを使用して
GCPのコンテナ上にFaaSを立ててみるデモを行いました。
実は今回Event Gatewayを初めて知りました。
また、kubernetesやGCPもほぼ触ったことがありませんでした。
私自身の知識が少なかったのもあり、私のヘルプにつたない部分があり申し訳なかったです・・・
2日目 (11/3)
この日がメインカンファレンスでした。
セッションも企業ブースも混み合っていてとても賑わっていました。
サーバーレス"を語るときに僕が語ること
「サーバーレスをコスト削減、サーバー管理からの解放だけの観点で語るな」というのは完全に頷きました。
多分その考え方はサーバーレスの人には結構浸透しているのかなと思います。
イベントドリブンという仕組みに関連する技術として、Durable Functions(Azure)、Event Gatewayが紹介されていました。
これらの仕組みはまだで始めたばかりでベストプラクティスもない状態みたいです。
これが、来年くらいにはどの様な勢力図なっているのか個人的に興味深いです。
Continuous Delivery strategies for serverless world
Azure Functionsのローカルデバッグ、テスト、CI/CD、インフラ構築など、実業務で開発するにあたって必要となるエッセンスが書いてあります。
スライドではMicrosoft社のVisual Studio Team Services(VSTS)でCI/CDの説明をしていましたが
クロスプラットフォーム(Windows, Mac)のコマンドラインツールを公式で提供しているので他のCIサービスでも問題なさそう。
ちなみに、私たちもgitリポジトリやカンバン、CIビルドなど、VSTSを業務でガッツリ使っています。
完全に余談かつ宣伝なのですが、去年あたりにかけて牛尾さんはじめMicrosoftの方々には大変お世話になっていて
VSTSの紹介としてMicrosoft Tech Summit 2016の基調講演に弊社の子会社カラダメディカの十日市氏(水色のTシャツの人)も登壇しています。
真のサーバレスアーキテクトとサーバレス時代のゲーム開発・運用
サーバーレスでよく語られる様な課題に対して具体的に対応方法が書いてありました。
- コールドスタート対策として、一つのLambdaファンクションに全ロジックを入れる
- Push通知の実現(コネクションを貼りっぱなしにする必要)にAWS IoTを使用する
など。AWS IoTは名前からIoT機器にしか使えないものと思っていたので興味深かったです。
他にもここに書いていないセッションがたくさんあるのですが、長い文章を書きなれてないため、時間が足りなくなってしまったのでここまでにしようと思います。
カンファレンスに参加した内容をすぐに発信している方は本当にすごいと思いました。
感想
個人的には今回のServerlessconf「イベントドリブン」が大きなキーワードだった気がします。
ワークショップで触ったEvent Gatewayは正にそのためのものという感じです。
ただ、イベントドリブンはよく考えて設計しないと依存関係の管理が大変になったりPub/Subのスパゲッティーになったりで
結構ハードル高い技術だと思っています。
なので開発者がちゃんとシステム設計できることがこれまで以上に必要だと思います。
それから、Microsoft AzureやGCPには、Functionsなどサーバーレス系のサービスの拡充と進化に期待しています。
今までサーバーレス=AWS lambdaという前提の、技術選定や課題への対処法を発表した内容が多かったと思います。
もちろんそれ自体は価値のあるものなのですが、各クラウドベンダーの独自色が出てきて差別化要因が増えれば
もっとサーバーレスの本質的な設計論なども多く聞けるのではないかと思います。
www.slideshare.net
最後に、このブログで発表しようと思ったきっかけの一つは、仲山 昌宏さんのLTで紹介されていた言葉
「アウトプットしないのは知的な便秘」
というのがあったからです。私の便秘期間が長くて、久々のアウトプットに一週間以上かかってしまいました・・・
仲山さんが入り口で販売していた「Serverlessを支える技術」も買いましたが、各クラウドベンダーのサービスの特徴がよくまとまっていて大変参考になりました。
本当に最後になりますが、主催の吉田真吾さん、誘ってくださった堀家さん、イベントスタッフ、スポンサーの皆さんに心から感謝いたします。
ありがとうございました!