2022, Amazon Web Services, Inc. or its affiliates. あらためて…なぜサーバーレス使っていますか?? • サーバーやミドルウェアの運用/管理をできる限りしたくない? • ビジネスロジック等の開発に集中したい? • 柔軟なスケーリングをよしなにやりたい? 6 本来の価値提供に注力したい
2022, Amazon Web Services, Inc. or its affiliates. アプリケーションはサーバーレスを活用 では、そのアプリーケーションのリソース作成や変更の反映は? 価値提供を素早く行えるリリースプロセスになっていますか? 再現性のある安全なデプロイがされている? 7 より早く/安全に価値提供をしていく事が重要 →そこでIaCやCI/CDを活用する
2022, Amazon Web Services, Inc. or its affiliates. CI/CDとは? Continuous Integration Continuous Delivery or Continuous Deployment 9 継続的インテグレーション 継続的デリバリー or 継続的デプロイメント
2022, Amazon Web Services, Inc. or its affiliates. AWS SAM - Serverless Application Model - サーバーレスアプリケーション構築用の OSSフレームワーク [主な構成要素] • SAM CLI • SAM Transform • SAM Pipeline 13
2022, Amazon Web Services, Inc. or its affiliates. SAM Transform サーバーレスアプリケーション構築におけるInfrastructure as a Code の機能を提供 リソースとイベントソースマッピングを表現する為の短縮構文 → CloudFormation をベースとして定義詳細を抽象化 14 AWS CloudFormation AWS SAM
2022, Amazon Web Services, Inc. or its affiliates. SAM Overview 20 20 SAM template CloudFormation ロード/ 依存関係 の解決 作成/変更/削除 トランスパイル SAM CloudFormation Stack $ sam init $ sam build $ sam deploy package package ソースコード $ sam package
2022, Amazon Web Services, Inc. or its affiliates. CI/CDパイプライン SAM利用時: これまでの開発フロー Build ソースコード 開発者 コードリポジトリ template.yaml (SAMテンプレート) Source sam build Deploy Test sam deploy はパイプライン内の要素 sam local SAMを組み込んだCI/CDパイプラインが必要な場合、その整備は別途必要 CI/CDパイプライン 開発者 パイプライン開発 SAM
2022, Amazon Web Services, Inc. or its affiliates. CI/CDパイプライン この時のお悩み Build ソースコード 開発者 コードリポジトリ template.yaml (SAMテンプレート) Source sam build Deploy Test sam deploy sam local CI/CDパイプラインの開発/構築作業が必要に… CI/CDパイプライン 開発者 パイプライン開発 SAM
2022, Amazon Web Services, Inc. or its affiliates. CI/CDパイプライン SAM Pipelinesがひな形を自動生成 ソースコード 開発者 コードリポジトリ CI/CDパイプライン用雛形ファイルを生成 (例:CodePipeline用CFnテンプレート) template.yaml (SAMテンプレート) > sam pipeline bootstrap > sam pipeline init SAMがパイプライン 自体も構成(雛形を生成) CloudFormation Build Source sam build Deploy Test sam deploy SAM sam local →CI/CDパイプラインを含めた開発の立ち上げを加速 SAM
2022, Amazon Web Services, Inc. or its affiliates. SAM Pipelines 構成イメージ 27 CI/CDプロバイダ AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY Dev パイプライン 実行ロール Dev CloudFormation 実行ロール Dev Artifact バケット Prod パイプライン 実行ロール Prod CloudFormation 実行ロール Prod Artifact バケット Dev環境 Prod環境 Dev ECR リポジトリ Prod ECR リポジトリ assumeRole可能な信頼関係 ※アカウントを全て同一とすることも可能 (Prodアカウントだけ別アカウントにすることも可能)
2022, Amazon Web Services, Inc. or its affiliates. SAM Pipelines デモイメージ 29 CI/CDパイプライン(Dev) Build Source sam build Deploy Test sam deploy SAM sam local Github IAM Role S3バケット IAM Role S3バケット CI/CDパイプライン (Prod) リポジトリ 構築
2022, Amazon Web Services, Inc. or its affiliates. まとめ • サーバーレスのメリットをより活かす為にCI/CDが重要 • SAM Pipelines を活用して開発時における CI/CDパイプライン構築を容易に実現可能 • AWSサービスに限らず、Github等の環境を活用することが可能 30