ServerlessConf Tokyo 2017に参加してきました

こんにちは。iPhone Xを横目にGalaxy Note8を買った木村です。
今の所、一部音ゲー(デレ・ミリ)でノーツ抜けが発生する以外は最高の端末で大変満足しています。

さて、先日(11/3)はServerlessConf Tokyo 2017(のDay2)に参加してきました。
朝行って夜戻ってくる弾丸日程でしたが、それだけの価値がある1日で大変満足しました。

今回はそんな中から、気になったセッションを中心に振り替えってみたいと思います。

Software Productivity and Serverless

この数年、性能はパワフルになっている上に技術的なイノベーションが起きているにも関わらず、生産性が(数字の上では)落ちているという話が印象的でした。
スライドにあったグラフでは、昔は日本が圧倒的トップだったのに今では他国と同等もしくはそれ以下になっていたグラフも。

何故そうなっているかと言うと、「抽象化せず0から再度作り始めてしまうような手段を取っているため、コストも時間もかかりすぎている」ためという話がありました。

同氏はこれを解決するための手段の一つとしてサーバレスを挙げていて、

  • スケーリングを切り離せる
  • グローバルに簡単に展開できる
  • 安く実験できる
  • テクノロジーもスケールアップできる
  • 最新のテクノロジーも利用しやすくなる
  • カスタマイズが容易になる
  • データへのアクセシビリティも向上する
  • コードの再利用がしやすくなる
  • Low/No-Code(コードを(極力)書かない)開発が可能になる

という9つの特徴があるとの事でした。

Serverless on Microsoft Azure

AzureのFaaSといえばFunctionsだよなくらいの認識だったのですが、Logic AppsとかEvent Gridを使う事でかなり柔軟な構築ができる、というのをわかりやすい技術デモで示してくれました。
Event Gridではただ通知するだけではなく、ユーザーが起こせるアクションもそのメールに含む事ができるという発見もありました。その辺もコード書かなくていいのはすごい便利。

探したらデモサイトとサンプルのリポジトリがありました。
https://carreview.azurewebsites.net/
https://github.com/Azure-Samples/customer-car-reviews

そんな中、Functionsのデバッグをローカル(VSCode)から行っていたのが凄く印象的でした。
Lambdaはデバッグが面倒大変なので、すごい開発しやすそうですね…。

FaaS周りの環境整備はやっぱりAzureが一歩先を行っているな、という感じでした。

Growing up Serverless

今度はAWSのお話。
AWSのFaaSといえばLambdaですが、あくまでLambdaはコンピュートのサーバレスであり、S3(ストレージ)やDynamoDB(データベース)もサーバレスに当てはまるそうです。確かに…。

印象的だったのが「サーバレスがセキュアである」という部分で、

  • 全てパッチ適用済み
  • SSH不要
  • リクエストか監査可能
  • そして短命

という理由でした。
全てパッチ適用済みというのは、Lambdaの場合は1日数回・数時間単位でパッチを当てているそうです。

その他、X-Rayの紹介やGreengrassLambda@Edgeの話もありました。Greengrassはつい最近東京リージョンでも使えるようになってましたね。
X-Rayは名前だけ聞いてましたが、実際に動作してるイメージを見るとかなりトレースしやすそうな印象を受けました。
組み込みも簡単で使いやすそうです。

真のサーバレスアーキテクトとサーバレス時代のゲーム開発・運用

ここからは午後のセッションになります。

どちらかというと現場よりの実践的な内容で大変ためになりました。
ほぼサーバレスでくみ上げたというのもすごいなぁとしみじみ…。その分知見も溜まっているようで惜しみなく披露して頂けました。

ゲーム開発よりの内容かと思いましたがそんな事は無く、様々な場面で応用できそうな内容でした。
特にコールドスタートの採択やログ周りについては、サーバレスの開発をするにあたって先ず引っかかりそうな部分なので参考にする機会が多いと思いました。

Google Cloud Platformで実現するServerlessの今

Azure・AWSときてGCPの話です。
GCPでいうFaaSって何になるんだろう(AppEngineは違う)と思ってましたが、Cloud Functionsというそのままのサービスがありました…。(ベータ版)
LambdaやFunctionsと違ってNodeのみという制約がありますが、逆に言うとNodeで作っておけば様々なサーバレスなサービスで再利用できますね。
ちなみに、Cloud Functionsもローカルでデバッグできるそうです。

後は、話の中で「1つの関数で色々やると難しくなるので分けた方が良い」「個々に特化すべき」という話もありました。上で言った再利用の面を考慮したり、複雑化するのを避けるという面で考えるとその通りだなと思いました。
午前中のAzureの例もかなり細かく分かれていましたし。

Biz Serverless お客様のサービスを支えるサーバレスアーキテクチャーと開発としてのビジネスの課題

今までは自社サービスをサーバレスで構築した話ですが、こちらは案件ベースでサーバレスで構築した話です。
「会社として受けるなら…」という視点で考えた場合、一番現実に近い内容だったなと思います。
サーバレスで構築した場合の具体的な構成図や運用方法について聞ける事ができたので良かったです。

ところで、「コンペで負けやすい」という話が出たときは(´・ω・`)←こんな顔になりました…。
確かにサーバレスは構築段階でのコスト高になりやすそうです。場合によっては学習コストもかかりますし。
部分的に使うという手段もあるので、そこはバランス良く考えなければなりません。

まとめ

技術面で見ると、サーバレスという概念が生まれてから2年しか経ってない割にはかなり発展してきたなと実感しました。
Lambda一人勝ちの状態が続いてましたが各社ともサービスを色々出してきて選択肢が広がるのは良いことですし、これによってもっと運用しやすくなる環境が整う事を期待しています。
(LambdaもSAM LocalとかLocalStackを使えば実行できますが…。)

変わってビジネスの視点から見ると、今は「サーバレスは自社プロダクトを持つ所が負荷が高い所等部分的に使用する」というフローが主流だなという感じを受けました。

自社プロダクトを持つ所という部分は、細かく言うとインフラの選択権を持つ所がサーバレスのメリット及びデメリットをある程度把握しておく必要があるという所です。
まだ若い技術という事や、(世界的な流行はさておき)日本という国の保守的な所を考慮するとある程度の規模の企業以外ではサーバレスを利用したプロダクトの採用というのはまだまだ進まないのではないかなと思いました。

部分的な利用の部分は、サーバレスの性格上ある程度仕方ないのかなとも思います。
現状、CGIでやってるような処理を全てサーバレスで構築しようとすると、あっちで組んでこっちも設定してそれを繋げて…のようにやることが多くなってしまいます。
後はコスト面やメンテナンス等々…まだまだ未知数な部分が多いのでいきなりフルで利用するよりは、徐々に移行したり部分的な利用に止めるという使い方が現段階での最適解な気がします。

おわり

そんな訳で、熱く濃い1日の様子を簡単な感想と共にお送りしました。
これからどう変わっていくか楽しみな技術なので、ぼちぼちと試してみたりしながら発展していく様子を見守っていきたいと思います。