Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lambda の CI/CD についての考察 #70

Open
suzuki-shunsuke opened this issue Nov 20, 2021 · 1 comment
Open

Lambda の CI/CD についての考察 #70

suzuki-shunsuke opened this issue Nov 20, 2021 · 1 comment

Comments

@suzuki-shunsuke
Copy link
Owner

実現したいこと

  • アプリケーションの開発に専念できる。 CI/CD の pipeline を Function ごとに実装しなくて済む
    • 複数のリポジトリで色々設定が必要とかだと面倒になってくる
  • 本番以外の検証環境を構築できる
    • PR 環境: PR ごとにデプロイされる
    • main: 最新のデフォルトブランチのアプリケーションのコード
    • edge 環境: 本番とアプリケーションのコードは同じ
  • アプリケーションのコードを全環境・ AWS アカウントで共通化出来る
    • 環境の違いは環境変数などによって吸収する
  • 余計な CI が走らない
    • 変更された Function に対してだけテストやデプロイが実行される
    • Lambda の設定が変更されただけでは、アプリケーションのテストはスキップする
  • 安全にリリースされる
    • Canary Release (Blue/Green)
      • CodeDeploy は Blue/Green をサポート
      • Lambda も alias の重み付けをサポート
    • DarkLaunch
      • AppConfig を使うと良いかも
    • リリース直後に問題があったときにすぐに rollback できる
    • HotFix をすぐにリリースできる
      • アプリケーションの build や test に時間がかかる分はどうしようもない
  • セキュリティ
    • 悪意のある人が CI/CD のコードを修正して強力な権限で任意コードの実行をするのを防ぎたい
      • CI/CD の分離
      • PR event と push event で IAM Role 分ける
    • Function ごとや環境ごとに IAM Role を分けることで権限を最小化する。 Function A に関する CI/CD では他の Function への権限を持たなくする
      • これは simple, easy とのトレードオフだったりする

PR 環境の必要性

  • Lambda Function だけデプロイされて意味があるのか
    • 依存するリソースもデプロイされないと意味ないのでは
    • 当然 Function による
    • lambroll は Lambda に特化したツールなので、 CloudFormation や SAM などが必要になってくる
    • CloudFormation 好きになれない。失敗したときに面倒くさい
@suzuki-shunsuke
Copy link
Owner Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant