Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS CodePipeline と AWS SAM CLI で サーバレス開発を加速させる取り組み
Search
yoheiigei
June 06, 2024
Programming
0
100
AWS CodePipeline と AWS SAM CLI で サーバレス開発を加速させる取り組み
yoheiigei
June 06, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
労務ドメインを快適に開発する方法 / How to Comfortably Develop in the Labor Domain
yuki21
1
250
Swiftコードバトル必勝法
toshi0383
0
150
事業フェーズの変化に対応する 開発生産性向上のゼロイチ
masaygggg
0
190
The Sequel to a Dream of Ruby Parser's Grammar
ydah
1
220
Mastering AsyncSequence - 使う・作る・他のデザインパターン(クロージャ、Delegate など)から移行する
treastrain
4
1.6k
いまから追い上げる、Jetpack Compose トレーニング
nyafunta9858
0
330
GraphQLの魅力を引き出すAndroidクライアント実装
morux2
3
420
LangChainでWebサイトの内容取得やGitHubソースコード取得
shukob
0
160
How to Break into Reading Open Source
kaspth
1
210
エンジニア1年目で複雑なコードの改善に取り組んだ話
mtnmr
3
2k
REXML改善のその後
naitoh
0
190
Architecture Decision Record (ADR)
nearme_tech
PRO
1
680
Featured
See All Featured
Designing Experiences People Love
moore
138
23k
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5.1k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Optimising Largest Contentful Paint
csswizardry
30
2.8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
190
16k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
Building Applications with DynamoDB
mza
90
6k
Rebuilding a faster, lazier Slack
samanthasiow
78
8.6k
What's in a price? How to price your products and services
michaelherold
242
11k
Why Our Code Smells
bkeepers
PRO
334
56k
Code Reviewing Like a Champion
maltzj
517
39k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
166
48k
Transcript
1 プロダクト開発部 SREチーム 伊藝 洋平 2024/04/22
AWS CodePipeline と AWS SAM CLI で サーバレス開発を加速させる取り組み 発表内容 2
会社紹介 3
自己紹介 • 伊藝 洋平 • @沖縄 リモートワーク歴7年 • エンジニア歴 12年
• jinjer株式会社で SREエンジニアのお仕事をしています • 主に、AWSを利用したインフラ環境を構築するお仕事をしています • python勉強中です 4
Contents 1. サーバーレス構成を採用する際の課題 2. AWS CodePipeline と AWS SAM CLI
について a. AWS CodePipeline / AWS SAM CLI ? b. メリット、デメリットについて 3. 開発プロジェクトでの採用例 a. 採用事例、イメージ画像 b. SREとバックエンドエンジニアの役割分担 4. まとめ 5
上記のよくあげられる課題のうち、赤字部分に対する取り組みです。 • サービス上限値(例 : Lambda の 15分 timeout) • 既存のアプリケーションで作り直しが必要
• エラーや障害発生時の切り分けが難しい • 誰が、どこまで、設定するのか? • 色々なサービスが連携して、テストやデバッグがしづらい。 • etc … サーバレス構成を採用する際の課題 よく挙げられる課題 6
誰が、どこまで、設定するのか? 例)Lambda function に関連する設定は、誰が設定するのか? コード書いて、パッケージング・デプロイして、他のサービスとの連携設定をして、 環境変数は?、ログの設定、監視の設定、ソースコードに依存するし、IAM の権限、etc … • 誰が、どこまで、設定するのか?
• 色々なサービスが連携して、テストやデバッグがしずらい サーバレス構成を採用する際の課題 よく挙げられる課題 7 テストやデバッグがしずらい 例)Lambda Function のテストやデバッグ? Lambda Function をローカルで実行する?時に渡すイベント用意しないと、responseを デバッグ確認するためapi gateway と連携したい、etc …
• AWS CodePipeline • AWS SAM CLI を活用しています!!! そんな課題に、対応するために、 8
AWS CodePipeline AWS CodePipeline と AWS SAM CLI について 9
• AWS Code 兄弟 (CodeCommit, CodeDeploy, CodePipeline, CodeBuild) • CI/CDをサポートするサービス。 • V2アップデートで、git tag によるトリ ガーなど、細かい制御ができる様に! • パイプラインタイプで実行モード (Queued / Parallel)が追加に! • 簡単な設定で、デプロイパイプラインが 組める!! • etc …
AWS SAM CLI AWS CodePipeline と AWS SAM CLI について
10 • Serverless Application Model (SAM) の CLI ツール • サーバレス な アプリケーションの開発 をサポートするツール • CloudFormation の拡張。より簡単な 記述で サーバーレス構成ができる!! • Lambda 以外にも、 APIGateway/DynamoDB など、 サーバーレスな構成をマルっと設定でき る! • etc …
AWS SAM CLI で構成した サーバレスアプリケーション を AWS CodePipeline を使って、サクッと、テストやデプロイができるようにする! •
誰が、どこまで、設定するのか? • 色々なサービスが連携して、テストやデバッグがしずらい AWS CodePipeline と AWS SAM CLI で課題を解決する! よく上げられる課題 11 メリット - 簡単な設定でデプロイや管理ができる。 - CodePipeline (CodeBuild)が設定作業を やってくれるので、設定者の権限などを 気にしなくて良い。 - AWS SAM CLI を利用すれば、 ローカルでサービス連携の テストもできる。 デメリット - CodePipeline や AWS SAM CLI に関する 学習が必要。
実際のサーバレスアプリケーション開発の流れ 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. サーバレスアプリケーションがデプロイ される
ジンジャー勤怠サービス 開発プロジェクトでの採用例 13 • 採用例:既存アプリケーションからの構成変更 • 対象:サブシステムAPI、バッチ処理、の一部 • 構成:APIGateway/Lambda、SQS/Lambda •
言語:Ruby から Node.js へ • テスト ◦ ユニットテストは、ローカルで実施。 ◦ インテグレーションテストは、開発環境。
外部連携サービス ジンジャーAPI 開発プロジェクトでの採用例 14 • 採用例:新規サービスのサーバレス構成採用 • 対象:外部連携用API • 構成:APIGateway/Lambda
• 言語:Node.js(Typescript) • テスト ◦ ユニットテストをCodePipelineで! ◦ インテグレーションテストは、開発環境。
ジンジャー人事労務 生成AIを活用した 新規サービス(PoC) 開発プロジェクトでの採用例 15 • 採用例:新規サービスのサーバレス構成採用 • 対象:人事情報の入力補助用API •
構成:APIGateway/Lambda • 言語:Python • テスト ◦ ユニットテストをローカルで! ◦ インテグレーションテストは、開発環境。
AWS CodePipeline と AWS SAM CLI を使用した、デプロイの仕組みでサーバレス開発を加速さ せる取り組みについて説明しました。 重要 どのような開発環境にあてはまるものではないです。更に良い構成はきっとある。
仕組みが簡単なので、まずは始めてみるという事が大事。 バックエンド、インフラなどの領域を明確に分ける事は、難しい。 それぞれの領域のエンジニアが、良い開発開発を展開するために歩み寄るが大事。 サーバレス構成の場合、テストは、ローカルで完璧に実行することよりも、 開発環境へデプロイした方がコストがかからない可能性がある。 AWS SAM CLIを活用すると、APIGateway/Lambda のローカルでのテストもで きる。 気楽に、少しづつ、Let’s サーバレス ! まとめ(サーバレス開発を加速させる取り組み) 16
ありがとうございました! jinjer株式会社 SREチームでは、プロダクト開発を支えながら、 チームメンバーで、楽しく働きやすい環境を整えて、 新しい技術の習得に取り組んでいます。 最後まで、発表内容を聞いていただきありがとうございました。 以上 17