Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS CodePipeline と AWS SAM CLI で サーバレス開発を加速させる取り組み

AWS CodePipeline と AWS SAM CLI で サーバレス開発を加速させる取り組み

yoheiigei

June 06, 2024
Tweet

Other Decks in Programming

Transcript

  1. 自己紹介
 • 伊藝 洋平 • @沖縄 リモートワーク歴7年 • エンジニア歴 12年

    • jinjer株式会社で SREエンジニアのお仕事をしています • 主に、AWSを利用したインフラ環境を構築するお仕事をしています • python勉強中です 4
  2. Contents
 1. サーバーレス構成を採用する際の課題 2. AWS CodePipeline と AWS SAM CLI

    について a. AWS CodePipeline / AWS SAM CLI ? b. メリット、デメリットについて 3. 開発プロジェクトでの採用例 a. 採用事例、イメージ画像 b. SREとバックエンドエンジニアの役割分担 4. まとめ 5
  3. 上記のよくあげられる課題のうち、赤字部分に対する取り組みです。 • サービス上限値(例 : Lambda の 15分 timeout) • 既存のアプリケーションで作り直しが必要

    • エラーや障害発生時の切り分けが難しい • 誰が、どこまで、設定するのか? • 色々なサービスが連携して、テストやデバッグがしづらい。 • etc … サーバレス構成を採用する際の課題
 よく挙げられる課題 6
  4. 誰が、どこまで、設定するのか? 例)Lambda function に関連する設定は、誰が設定するのか?  コード書いて、パッケージング・デプロイして、他のサービスとの連携設定をして、 環境変数は?、ログの設定、監視の設定、ソースコードに依存するし、IAM の権限、etc … • 誰が、どこまで、設定するのか?

    • 色々なサービスが連携して、テストやデバッグがしずらい サーバレス構成を採用する際の課題
 よく挙げられる課題 7 テストやデバッグがしずらい 例)Lambda Function のテストやデバッグ?  Lambda Function をローカルで実行する?時に渡すイベント用意しないと、responseを デバッグ確認するためapi gateway と連携したい、etc …
  5. AWS CodePipeline AWS CodePipeline と AWS SAM CLI について
 9

    • AWS Code 兄弟 (CodeCommit, CodeDeploy, CodePipeline, CodeBuild) • CI/CDをサポートするサービス。 • V2アップデートで、git tag によるトリ ガーなど、細かい制御ができる様に! • パイプラインタイプで実行モード (Queued / Parallel)が追加に! • 簡単な設定で、デプロイパイプラインが 組める!! • etc …
  6. AWS SAM CLI AWS CodePipeline と AWS SAM CLI について


    10 • Serverless Application Model (SAM) の CLI ツール • サーバレス な アプリケーションの開発 をサポートするツール • CloudFormation の拡張。より簡単な 記述で サーバーレス構成ができる!! • Lambda 以外にも、 APIGateway/DynamoDB など、 サーバーレスな構成をマルっと設定でき る! • etc …
  7. AWS SAM CLI で構成した サーバレスアプリケーション を AWS CodePipeline を使って、サクッと、テストやデプロイができるようにする! •

    誰が、どこまで、設定するのか? • 色々なサービスが連携して、テストやデバッグがしずらい AWS CodePipeline と AWS SAM CLI で課題を解決する!
 よく上げられる課題 11 メリット - 簡単な設定でデプロイや管理ができる。 - CodePipeline (CodeBuild)が設定作業を やってくれるので、設定者の権限などを 気にしなくて良い。 - AWS SAM CLI を利用すれば、 ローカルでサービス連携の テストもできる。 デメリット - CodePipeline や AWS SAM CLI に関する 学習が必要。
  8. 実際のサーバレスアプリケーション開発の流れ AWS CodePipeline と AWS SAM CLI で課題を解決する!
 12 1.

    git リポジトリを用意 2. CodePipelineを設定(terraform) 3. AWS SAM CLI で project を init する 4. lambda function を実装する 5. commit/push/review/approve/merge! 6. CodePipeline が実行される 7. サーバレスアプリケーションがデプロイ される
  9. 外部連携サービス ジンジャーAPI 開発プロジェクトでの採用例
 14 • 採用例:新規サービスのサーバレス構成採用 • 対象:外部連携用API • 構成:APIGateway/Lambda

    • 言語:Node.js(Typescript) • テスト ◦ ユニットテストをCodePipelineで! ◦ インテグレーションテストは、開発環境。
  10. ジンジャー人事労務 生成AIを活用した 新規サービス(PoC) 開発プロジェクトでの採用例
 15 • 採用例:新規サービスのサーバレス構成採用 • 対象:人事情報の入力補助用API •

    構成:APIGateway/Lambda • 言語:Python • テスト ◦ ユニットテストをローカルで! ◦ インテグレーションテストは、開発環境。
  11. AWS CodePipeline と AWS SAM CLI を使用した、デプロイの仕組みでサーバレス開発を加速さ せる取り組みについて説明しました。 重要  どのような開発環境にあてはまるものではないです。更に良い構成はきっとある。

     仕組みが簡単なので、まずは始めてみるという事が大事。  バックエンド、インフラなどの領域を明確に分ける事は、難しい。  それぞれの領域のエンジニアが、良い開発開発を展開するために歩み寄るが大事。  サーバレス構成の場合、テストは、ローカルで完璧に実行することよりも、  開発環境へデプロイした方がコストがかからない可能性がある。  AWS SAM CLIを活用すると、APIGateway/Lambda のローカルでのテストもで きる。  気楽に、少しづつ、Let’s サーバレス ! まとめ(サーバレス開発を加速させる取り組み)
 16