Serverless Meetup Tokyo 7 に参加しました。

参加しましたのでブログを書きます!

Serverless Edge

  • fastlyのCTOさんの発表

  • 「人がサーバーで苦しんでいる時に何がサーバーレスだ?」

    • 実はサーバーレスに文句を言っている
    • 概念としては支持している
  • fastlyのコアなものがサーバーレス

    • どのサーバーで実行されているかを考えなくていい
    • fastlyも本質的にはサーバーレス
    • エッジコンピューティングと呼んでいます
  • Serverless vs Edge Computing

    • 境界線がわからないのでは
    • 交差する部分があるのか?
  • サーバーレスは非常に定義がしやすい

    • サーバーを気にする必要がない
  • Edge Computingは定義がしづらい

    • 何を意味するのか?
    • 自分の役目はこういうイベントやジャーナリストに向けて話すこと
    • 「Edgeとはなんなのか?」という問いかけに答えるのに疲れてしまった
    • 今日の発表をビデオに撮って送ろうかな?
  • Edgeとは?と問いかけたら、IT業界でも会社によって答えが違うだろう

    • それぞれの定義が自分の都合の良いものになっている
    • ネットワーク上でコントロールを失う前のポイント
    • 観点による違い
  • インターネットの中にEdgeというものはない

    • アプリケーションをひとつのものと考えがち
  • 実際にはオリジンからユーザーまで広がっている分散システム

    • さらにoriginからuserまでの間にPoP?(Point of Presence?)がある
  • PoPというのはクラウドプロバイダーの中、近隣の基地局、fastlyが提供するノードの中かもしれない

  • Edgeのコンピューティングの公式

    • グラフ理論で表現
    • エッジコンピューティングというのはuserとoriginの間で実行されるもの
  • Serverlessにどうつながるのか?

    • 必然的にサーバーレスになる
    • 経済的な要素
    • マルチテナント(広範囲に分散)
    • 多数のサーバー、帯域、データセンターを必要とする
  • ここでサーバーがバーチャルなものであっても通用する

    • 単純に分散ではなく、透過的に分散
  • 今後エッジコンピューティングとサーバーレスは競合していくものではなく、共生するものと思っている

    • 「今後」というのが大事
  • サーバーレスに比べて、エッジコンピューティングは進歩が遅かった

    • なぜか?
    • 経済的な理由による
    • 非常にコストがかかる、大規模
    • 分散したノードでステートを維持することが難しい
  • CRDTs

    • Conflict-free Database Replicated Data Types
    • デルタCRDTs と論文が出た
  • ラスプというプロジェクトがある

    • エッジコンピューティングの問題
    • データコンフリクティングを解決しようとしている
  • VCLに安全に制限をかけようとしている

    • 制限を掛けることで、安全かつ速いものにしようとしている
    • 任意言語をサポートすることは困難な問題
  • Intelのサポートによって、バーチャル化がより簡単にできるようになった

  • 高度なコンテナ化がここ数年間で非常にいい方法でできるようになった
    • しかしバーチャル化に多額のコストが掛かる

Accelerating DevOps with Serverless

  • Terra Form

    • ディスク使用量等のメンテナンス
    • リソースの制約
    • Ruby, Jenkins, Dockerのバージョン
    • パラレルで実行しづらい
    • スケールがしづらい
  • 新しい要望がきた

    • 複数のバージョンをテスト・デプロイしたい
    • On-demand環境で!ECSで!
  • Serverless Frameworkで解決した!

  • ECSのサービスを作るのは時間がかかる

  • 環境を破棄するのも結構待ちがある

  • Step Functions

    • serverless-stepfunctionsというプラグインがある
    • 「「JSONは人の書くものじゃない」」
    • YAMLで書ける。
    • 最適じゃないかもしれないけど、JSONよりはYAMLかな。
  • On-Demand環境がつくれた!

    • DevもOpsもHappy! :D
  • Servelessをなぜ使ったの?

    • スケールしやすい
    • メンテナンス減る
    • フレームワーク使うとデプロイが速く済む
  • まとめ

    • 満足してる
    • Log Streamがたくさん出るのでつらい
    • Observability(可視性)にみんな頭を悩ませている

Durable Functions

  • NetFlixのマイクロサービスの図

    • とても複雑!!
    • 解決策が欲しい
  • Durable Functions

    • Orchestrators for Azure Functions
  • No JSON schema!

  • Sync & Async Functions Calls
  • Automatic Save of Local State

    • DBいらず
  • Functionチェーン

    • 複数のfunctionをまたぐ場合
  • Orchestrator Function

    • 特別な関数
    • Orchestrator Functionが状態を持っている
  • 1個のFunctionの次が複数のFunctionを呼び、その次は1つのFunctionを呼ぶパターン

    • 複数のときに、いつ終わるかがわからない
  • Human Interactionがイベントに挟まる場合も対応

    • 承認を押さなかった場合、タイムアウトとして扱う場合も定義出来る
  • 起動したらStatefulなマシンはメモリに書き込んだり、データベースに書き込む

Fastlyのログをサーバレスで可視化してみた

  • FastlyとはめっちゃイケてるCDN

  • ELB, EC2の環境をFastlyに置き換えた

    • Fastlyは柔軟なコンフィグができるの最高
  • Rubyがトップ

    • 攻撃受けてるのか?と思ったら、自社だった\(^o^)/
    • ヘルスチェックかなにかで叩いてたらしい
  • GCPのBig Queryへ流す

    • GCS挟んでコストを抑えたい
    • コンテナつかってる?
  • Cloud Functionsのアンチパターン

    • ログファイルが多すぎる
    • 作成されたファイルごとにfunctionが実行されてしまう
  • Big Queryのアップロード回数の上限がある

JeffConf Hamburgラップアップ & Event Gatewayの未来

  • JeffConfに行ってきました

    • ヨーロッパ中心にやっているサーバーレスのカンファレンス
    • 1日、1つのトラック、1つのコミュニティ
    • ディスカッションや参加者同士のコミュニケーションを大事にする
  • なぜJeff?

    • 「Serverlessなんてただの名前。もしかしてjeffって呼んでたかもしれないよ。」
  • ハンブルクの歴史ある美術館で開催。

    • 特に装飾せずに、そのまま開催。
  • 次回から「jeffconf」は「serverless days」に変わる

  • Event Gateway とは

    • マルチクラウドできるAPI Gatewayのようなもの
    • 各プロバイダの仕様の違いを意識せずに実現できる
  • 最近でかいサーバレスアーキテクチャをよく見かける

    • Serverless FrameworkのYAMLが大変なことに。
  • Event Gatewayを使うと関係のあるものごとにまとまる

  • S3にデータを置いて、Big Queryで解析したい

    • Event Gatewayをはさむことで簡単
  • 今はHosted Versionにのみ注力。

  • 将来的にはSaaSとして提供されるらしい

あなたの知らない S3 Select の世界

  • データ解析を担当
  • S3 Selectとは?
  • S3に対して、コマンドFができるような感じ
  • CSVだけでなく、TSV, PSVもいける

  • Ahtena, EMRの裏側がS3 Selectに置き換わっていく

  • AWS SDK, CLIからのみ使用可能

  • プレストコネクターもあるが、EMR用

  • クエリで検索
  • *, データ型も対応

  • 現状、S3 Selectの料金体系が謎

ServerlessなWordpressホスティングサービス

  • 2人でやっている会社さん STOVE

    • フリーランスでやってきて、フリーランスってあんまり儲けられてないな
    • フリーランスの人が儲かるサービスを作りたい
  • ReadyShipというサービスをWordPressつかって開発中

    • Serverlessなホスティングサービスの設計、をしたが断念した
    • なので今回の発表はほぼ妄想です!
  • 画面描画はS3等におまかせ

  • WordPress自体はECSに置き換え

  • Fargate

    • コンテナが実行される時間だけ、課金される

諦めた原因

  • FargateのコストがEC2より割高になってしまった

    • バッチ処理向き
  • ALBマッピングができない

  • EFSマウントできない

JavaScriptだけで完結する 簡単サーバーレス決済 Client-side RES

スマートなcronを考案した

  • 今までのcronとは…?
  • 5分毎に立ち上げる
  • 時間帯によって無駄があるんじゃないかな?

  • Lazy cron

  • ユーザーのアクセスをtriggerに起動する

  • CDNのキャッシュでやっちゃえばいんじゃね?

    • Firebaseだと実は簡単にできる
  • Cloud Functionsを使ってキャッシュの設定をする

    • クライアント側から叩いてもらえればよしなに
  • firebaseのCDNはfastly

    • ちょうかんたん
  • めりっと

    • 計算資源の削減
  • でめりっと

    • キャッシュが消される場合が…
    • DoS攻撃の可能性
    • 古い情報を配信する可能性…

フロントエンドのサーバーレス SPA編

  • サーバレスが好きな一般市民

  • SPAを置きたい

  • インフラ詳しくないからマネージドがいいな

  • CloudFrton + S3

    • bucket policyのJSONがつらい

    • 柔軟なキャッシュ設定できるの便利

    • 設定理解するのに時間がかかった
    • 30分程度かかるので見するとつらい
    • カスタムドメイン使うと使うサービスが増える
  • App Engine

    • プロジェクト切り替えを忘れずに!

    • カスタムドメインの設定も簡単

    • 海外リージョンでも速い
  • Firebaseホスティング

    • SPA用に勝手に設定してくれる
    • スキマが空いててみやすいなあ
  • 一番簡単だった

  • CLI, GUIも簡潔

  • 構築はCLIのみで完結できない

  • アクセス制限できない
  • Terraformでできない

  • Terraform使いたいならCLoudfront

  • バックエンド App Engine Standard を使ってるならApp Engine

Conclusion - 2018年のサーバーレス

  • サーバーの抽象化
  • イベントドリブンなスケール

  • マイクロサービス志向

  • リアクティブなアーキテクチャ

  • 開発生産性の上げ方

  • Observability

  • どんどんナレッジを共有していこう

  • 今年もServerlessconfやります!

雑感

  • 普段、AWSしか触らないのでAWSで実現できるサーバーレスしか想像できていなかったのですが、Azure, GCPを使った場合にどんなサービスを使えば実現できるのかイメージがつきました。

    • Azure Durable Functionsがわかりやすい解説だったのもあって、イメージがついて特に気になりました。
    • C#で書けるので、JSONをStepFunctionsより設定しやすそうです。
  • エッジコンピューティングのエッジってグラフ理論のエッジのことだったんですね。

    • やっぱり情報技術のベースは数学ですね。もう一回勉強し直したい…
  • FirebaseはFastlyで動いているというのも驚きました。

    • Googleが使うくらいイケてるCDNなんですね。
  • Observabilityは大事な言葉。覚えて帰りました。

    • どこで問題が起こるのか把握できるよう見える状態にするのは、サービスを維持するためには大事なことですよね…!
  • 私もサーバーレスが好きな一般市民になろうと思います!(笑)

B!