Slide 1

Slide 1 text

1 プロダクト開発部 SREチーム 伊藝 洋平 2024/04/22

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

会社紹介
 3

Slide 4

Slide 4 text

自己紹介
 ● 伊藝 洋平 ● @沖縄 リモートワーク歴7年 ● エンジニア歴 12年 ● jinjer株式会社で SREエンジニアのお仕事をしています ● 主に、AWSを利用したインフラ環境を構築するお仕事をしています ● python勉強中です 4

Slide 5

Slide 5 text

Contents
 1. サーバーレス構成を採用する際の課題 2. AWS CodePipeline と AWS SAM CLI について a. AWS CodePipeline / AWS SAM CLI ? b. メリット、デメリットについて 3. 開発プロジェクトでの採用例 a. 採用事例、イメージ画像 b. SREとバックエンドエンジニアの役割分担 4. まとめ 5

Slide 6

Slide 6 text

上記のよくあげられる課題のうち、赤字部分に対する取り組みです。 ● サービス上限値(例 : Lambda の 15分 timeout) ● 既存のアプリケーションで作り直しが必要 ● エラーや障害発生時の切り分けが難しい ● 誰が、どこまで、設定するのか? ● 色々なサービスが連携して、テストやデバッグがしづらい。 ● etc … サーバレス構成を採用する際の課題
 よく挙げられる課題 6

Slide 7

Slide 7 text

誰が、どこまで、設定するのか? 例)Lambda function に関連する設定は、誰が設定するのか?  コード書いて、パッケージング・デプロイして、他のサービスとの連携設定をして、 環境変数は?、ログの設定、監視の設定、ソースコードに依存するし、IAM の権限、etc … ● 誰が、どこまで、設定するのか? ● 色々なサービスが連携して、テストやデバッグがしずらい サーバレス構成を採用する際の課題
 よく挙げられる課題 7 テストやデバッグがしずらい 例)Lambda Function のテストやデバッグ?  Lambda Function をローカルで実行する?時に渡すイベント用意しないと、responseを デバッグ確認するためapi gateway と連携したい、etc …

Slide 8

Slide 8 text

● AWS CodePipeline ● AWS SAM CLI を活用しています!!! そんな課題に、対応するために、 8

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

AWS SAM CLI AWS CodePipeline と AWS SAM CLI について
 10 ● Serverless Application Model (SAM) の CLI ツール ● サーバレス な アプリケーションの開発 をサポートするツール ● CloudFormation の拡張。より簡単な 記述で サーバーレス構成ができる!! ● Lambda 以外にも、 APIGateway/DynamoDB など、 サーバーレスな構成をマルっと設定でき る! ● etc …

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

実際のサーバレスアプリケーション開発の流れ 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. サーバレスアプリケーションがデプロイ される

Slide 13

Slide 13 text

ジンジャー勤怠サービス 開発プロジェクトでの採用例
 13 ● 採用例:既存アプリケーションからの構成変更 ● 対象:サブシステムAPI、バッチ処理、の一部 ● 構成:APIGateway/Lambda、SQS/Lambda ● 言語:Ruby から Node.js へ ● テスト ○ ユニットテストは、ローカルで実施。 ○ インテグレーションテストは、開発環境。

Slide 14

Slide 14 text

外部連携サービス ジンジャーAPI 開発プロジェクトでの採用例
 14 ● 採用例:新規サービスのサーバレス構成採用 ● 対象:外部連携用API ● 構成:APIGateway/Lambda ● 言語:Node.js(Typescript) ● テスト ○ ユニットテストをCodePipelineで! ○ インテグレーションテストは、開発環境。

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

ありがとうございました!
 jinjer株式会社 SREチームでは、プロダクト開発を支えながら、 チームメンバーで、楽しく働きやすい環境を整えて、 新しい技術の習得に取り組んでいます。 最後まで、発表内容を聞いていただきありがとうございました。 以上 17