サーバレス勉強会のノート

コーポレートエンジニアから見た Serverless

ServerlessでETL

Extract/Transform/Load(抽出したデータを変換/加工した上でデータウェアハウス等へ渡す処理)

背景

  • アクセスログをBIツール内で加工して保存を行なっていたが膨大すぎる

目的

  • 的確な量に正規化したい

Aws Athena

  • S3を標準SQLで分析

Glue Crawler

  • クローラを使用して、AWS Glue データカタログ にテーブルを入力

Step Funtionの活用

  • 複数のLambdaの起動を管理
    • Lambdaは実行時間で課金する
  • Step Funtionはワークフローの時間で課金するので、待ちをもたせてトータルコストを下げる

Bucket Pollicyがハマりポイント

  • Cloud FormationとCloudBuildでGtHubko-dokanriga kanou
  • DatadocやCloudWatcherで監視

サーバーレスで実現する Webアプリケーション高速開発

実績

プロダクト紹介

  • Visumoの話を今回する

サーバレス導入の背景

Visumoとは

  • インスタのビジュアルを取り扱うマーケティングサービス
  • インスタグラムの投稿を検索してビジュアルを分析
  • 簡単動画コンテンツ作成サービスを追加した(ビデオメーカ機能)
  • 画像を選択してテキストを入れるだけで動作が作れる

動画を扱う背景

  • Webコンテンツは動画が肝になる。それを早く提供したい
  • 疎結合で早く開発できるサーバレスで実現

導入の話

サーバレス導入の背景

ビデオメーカーの構成説明

  • FrontはReactとS3とCloudFront
  • Backend APIは QraphQL
  • DBはAurora ←後で説明

Faas構成

  • API Gateway + Lambda + Aurora
  • なぜDynamoDBじゃないか
  • Lambdaがスケールした際にAuroraだと、DB接続数が限界になるんでは
  • 性能評価をし、Auroraでいけると判断
  • ただし対策としてRDS ProxyでDB接続数を管理した

よかったこと

  • ものつくりに集中。効率化。学習コストが低い
  • サーバ管理から解放される
  • サーバ構築、セキュリティ、サイジング、可能性の担保を考慮しなくて良い

サーバレスのデザインパターン

GraphQLによる効率化

  • フロントとやりとりするデータをAPIドキュメントとしてパッケージング

高速化の実現

  • サーバの導入時間がない
  • CI/CDで常に最新のコードをデプロイ
  • PDCAの高速化

運用コストと学習コストが低い

  • 運用コストはほとんどがAurora
  • Reactの勉強だけでFrontはできた(アーキは多いけど)
  • サーバサイドはGraphQLとAPIの言語だけ

注意点

  • トラフィックに弱い
  • 応答が遅くなる時がある
  • Lambdaの実行は最大15分
    • 長時間かかるバッチはさけるか、StepFunctionを用いる

ハマりポイント

  • Lambdaのメモリを小さくしすぎない(デフォルトメモリが128MBしかない)
  • イベントが二回実行されることがある(Lambdaイベントがまれに二回)
  • 同じ結果になるようにプログラムで制御

マネージドサービス

  • やっていないとわからない
  • すぐにPDCAを回すべき

まとめ

  • サーバレスは楽しい
  • アプリの価値を話しあう時間を作ることができる

Cloud agnostic Serverless build with git lab

概要

AwsLambda

  • 出てから5年たって重複した登壇が増えてきた

Multi Cloud

  • ベンダーへのロックインを避けたい
    • オンプレ時代からある文化

CNCF Cloud Native Interactive Landscape

GitLabServerlessの紹介

  • offerings
    • Function deply (triggerMesh, OpenFaas
    • Container( k8s…) deploy
    • Lambda
  • Ci pipeline workflow of function
    • データ処理ワークフロー用の CI / CD パイプラインを設定
  • Lamdaでいままで動かしている人にとってはポータビリティ性がさがるかも
  • そのためにTriggerMesh側で提供しているKnativeLambdaRuntimeでを使う

Progress delivery

  • 1年くらい前から出てきた
  • いままでのContinuousDelivery時に自動ロールバック
  • Obserbilityがよい←よくわからない

まとめ

  • クラウド非依存サーバレスへ挑戦
  • DevOps adoptionツールの改善ループをまわす