Serverless Meetup Tokyo #4 レポート #serverlesstokyo

serverless-200x200

こんにちは、臼田です。

Serverless Meetup Tokyo #4が開催されましたのでレポート致します。

こちらは編集中です

セッションレポート

体育会系サーバーレス:汗、友情、勝利、テニス

竹原竜児氏 (ソニー)

  • Smart Tennis Lesson(STL)で利用しているサーバレスについてのお話
  • STLとは
  • Serverlessへの期待と疑問
    • 期待
      • 自社の問題領域の解決に集中できる、早くリリースできる
      • NWレイヤまでの保守運用、脆弱性対応などを限りなく0に近づける
      • インフラコストが安くなる
      • SWアーキテクチャ上 凝縮度が高い、結合度低い設計に誘導される
    • 疑問
      • SQLベースのB2B2Cという固めの案件にうまくServerlessで対応できるのか?
  • 今日の発表内容
    • SQL DBを使ったサービスへのServerless導入が成功するまでの重要アクションとTipsを共有
      • Serverlessに適合させたテスト、運用!
    • 友情
      • 既存SQLスキルをデータ連係、グループアクセス制御
    • 勝利
      • パフォーマンス向上
  • STL System構成
    • テニスコートにIoT機器
      • テニスネットのポールにカメラを設定
      • リアルタイムにストリーミングして動きを確認
      • テニスのグリップにつけるセンサーでボールの当たった位置、スイングスピードなどを取得
      • Bluetoothで送信している
    • AWS側
      • API Gatewayで取得してLambdaで処理、RDSに格納
      • 家に帰った後も生徒さんが確認できるようにフロントも用意

汗編

  • ServerlessでもTest First! CI整備に汗をかく
    • Nodeのテストツールであるmochaを利用
    • LocalテストにはAPI Gatewayからのデータをダミーで渡して、Local, Remoteで同じテストコードで実施
    • 判定はistanbulを利用, C0/C1共に80%以上にしている
    • CIはapexを利用
      • Serverless Frameworkと違いエイリアスに対応している
    • API GatewayでCustom Domain Switchで切り替える
    • Sig4Clientを入れて認証
  • Lambda運用監視のお手軽構築テンプレを作る
    • 標準のLambdaログだと見にくいので独自のLoggerで必要項目を必ず出力している
      • リソースパスやログレベルなどを埋め込んでおく
      • MetricFilters, Alarm, SNSはセットで構築できるようにCloudFormationテンプレートを用意
  • Serverless時代になってテストと運用設計スキルはより重要になってきている
    • テストと運用の提携をプロジェクト初期に決めておいてテストを実行する

友情編

  • ServerlesにSQL(Aurora)を組み合わせることについて
    • いくらでもフロントがScaleするのにRDBはlimitが存在する
    • VPC Lambdaを使わないといけない
  • B2Bでのデータ連係で既存SQLスキルフル活用
    • 主要な要件はSQLで完結、LambdaはSQL連続発酵とログ出力だけ
    • AuroraへのCSV->テーブルの取り込みはLOAD DATA FRO< S3文
  • 認可、権限コントロールもCognito + SQLで強力かつ柔軟
    • 効力に守るところはCognito, API GWに任せる
      • DoSが来てもLambdaまで負荷は来ない
    • 柔軟に表現したいところはSQLの関連としてチェックする
      • 構造化された関連をたどるものはSQLなら1行で自然に表現

勝利編

  • VPC Lambda
    • Aurora(RDS)を使うため必須
    • API Callからデータにたどり着くまで長い
    • Localでは100ms程度だがAPI経由だと1秒以上応答がかかる
    • 10秒以上かかるときもある
  • VPC Lambda ENIの仕組みを知る
    • 分析にはCloudTrail
    • Create/Delete NetworkInterfaceを調べた
    • 対策としては定期的にENI, Lambdaを暖気
  • Lambda初期化処理の場所にご注意を
    • まだ1秒以上リクエストにかかっている
    • 分析にはAPI GWのlateny logとLambda開始終了のタイムスタンプ
    • 原因はORマッパーの初期化
    • 対策は一度初期化したORマッパーをグローバルに保持するように変更
    • 通信時間も含めて900-1200msから200-500ms程度での応答を達成
  • Lambda対策 Tipsメモリけちるべからず
    • メモリを上げるとインスタンスタイプが上がるのでCPUに依存したものも早くなる

まとめ

既存のベストプラクティスをServerlessに適用させることが重要!

感想

一般的にはLambdaとRDSを選択することは難しいですが、とてもいい成功事例だと感じました。

ベストプラクティスを忘れずに実践していきたいですね。

Test Driven Development For Lambda

堀家隆宏氏 (デジタルキューブ)

 

Azure Cosmos DB + App Serviceの良い関係(仮)

三宅和之氏 (ゼンアーキテクツ)

 

The Architecture of Serverless React SPA

池内孝啓氏(slideship)

 

Serverless Application with Chalice

西谷圭介氏 (AWS)

 

1日1億イベントを捌くサーバレスアーキテクチャ

なりたけいすけ氏 (CyberAgent)

 

ピクスタシステムをサーバーレスでオマージュしてみた

星直史氏 (Pixta)

 

flowtypeStepFunction

尾崎耕多氏 (ChatWork)

 

ニュースメディアWWD JAPAN.comを支える SPA+Aurora+サーバーレス

田中宏幸氏 (INFASパブリケーションズ)

 

全体の感想