nakanoshima.dev #25 サーバーレスでのIaC/CI/CD
セッション
AWS SAMを使ったIaCとCI/
ポール氏
なぜサーバレスで IaC や CI/CD が重要か
- 本来の価値提供に注力したい
- より早く安全に提供することが重要
- IaC や CI/CD を活用する
What is CI/CD
- 継続的インテグレーション
- 継続的デリバリー/デプロイメント
SAM
- サーバーレスアプリケーション構築用フレームワーク
- CloudFormation をベースとして定義を抽象化
- SAM からトランスコンパイルされて CFn が生成される
- SAM CLI で操作
sam init
->sam build
->sam package
->sam deploy
SAM Pipelines
- SAM Pipelines で CI/CD パイプラインの雛形が生成できる
- CodePipeline だけじゃなく GitHub Actions, GitLab CI/CD, Jenkins なども対応
sam pipeline bootstrap
->sam pipeline init
->sam deploy
でテンプレートに--template codepipeline.yaml
を設定する
CDKで実現する、お手軽で安全なLambdaの管理
shukim氏
Lambda 管理の課題
- オンラインエディタを使うと手元のコードと剥離する
- 各関数の設定を把握しきれない
- IaC で解決する
CDK の紹介
- TypeScript などでインフラを定義できる
- ループや条件分岐、関数化やライブラリ化で生産性向上できる
- CLI とライブラリ (aws-cdk-lib) で提供
- CLI はデプロイなどの基本操作
- ライブラリはコード内でのリソース定義
- Lambda のコードも TypeSqcript でかける
- JavaScript に変換されてデプロイされる
所感
SAM は、それだけで事足りことが少ないので使わなくなっちゃいました。
CDK は便利だからよく使うようになりました。
ただ、デプロイに時間がかかる部分が困るんですよね。
public.ecr.aws/sam/build-xxx
の Docker Image がどれも重くて CodeBuild とかで走らせると遅いし料金が嵩むのをなんとか解決したい。
キャッシュうまく使いつつ、イメージが古くなったらちゃんと更新するということを考えないとだめなのかな...?