omuronの備忘録

個人的な備忘録

「Serverless Meetup Japan Virtual #16」 #serverlessjp 受講メモ

Serverless Meetup Japan Virtual はほぼ毎回見ているのですがメモを取ったのは久しぶりです。

serverless.connpass.com

ハッシュタグ#serverlessjp
今日の動画のアーカイブ

技術選定でサーバーレスを採用した話

講師:コロニー株式会社 座安 勇貴氏

APIG + Lambda + RDS (Service APIs)

  • フロントエンド: Amplify(Angular, TypeScript)
  • バックエンド: APIG + Lambda
    • RDS Proxy + RDS
    • Cognito
    • DynamoDB
  • Lambda タイムアウト問題
    • Private Subnet の片方に NAT I/F の設定が漏れていた

Appsync + DynamoDB (Chat Functions)

  • フロントエンド: Amplify (GraphQL)
  • バックエンド: AppSync
    • Pipeline Resolver
      • DynamoDB -- Trigger --> Lambda
  • VTL はつらい
  • Lambda トリガー
    • メッセージの書き込みで発火処理実装可能

Cognito + Lambda + SES (カスタム認証機能)

  • Cognito のカスタム認証トリガーで Lambda を発火
    • 自前でランダムコードを生成して SES で送信
    • 認証チャレンジの検証
  • ググると出てくるので小さく簡単に実装できた
    • セキュリティ要件次第で将来拡張可能

S3 + RDS (Hosting File Service)

  • アップロード時に RDS にメタ情報など追加
    • S3 の署名URLを作ってオブジェクトアップロード
  • ダウンロードリクエスト時に署名URLを返却
  • 署名URL便利
  • ファイル名にマルチバイト文字を含むとダウンロードできない
    • Content-Dispositionヘッダーのattachmentでファイル名を指定していた
    • Content-Dispositionヘッダーのマルチバイト文字はエンコードが必要

まとめ

  • 細かいところでハマるけどサーバーレスは便利
    • アンチパターンに気をつける
    • 機能を小さくコード化できるのでノウハウを定型化しやすい
    • 複雑な機能軍を短期間で小さく開発できる、ビジネスに有利
  • 課題
    • API 以外のリソーステストの自動化
    • スケール対応
    • AWS の制限

所感

お手本のような構成+モダンな構成も取り入れた、今どきのサーバーレス環境を作っていると感じました。
スケール対応はサーバーレスだと得意分野とは思ったのですが

AWS の制限」は気にしておく必要がありそうです。

基本今から AWS を使う場合は「機能を小さくコード化できるのでノウハウを定型化しやすい」サーバーレスで実装できるかをまず考えるべきですね。