Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SAM × Dockerでサーバーレス開発が超捗った話
Search
ゆっきー
August 09, 2022
Programming
4.4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SAM × Dockerでサーバーレス開発が超捗った話
個人活動でやってるサーバーレスアプリケーションの開発をSAMに置き換えたら、開発環境が激変!?実際にどんな変化があったのか紹介します!
ゆっきー
August 09, 2022
More Decks by ゆっきー
See All by ゆっきー
Github Copilot Chatは本日よりケ◯ロ軍曹でありま〜〜〜すッ!!!(たぶん)
yu_yukk_y
1
400
Other Decks in Programming
See All in Programming
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
190
wkhtmltopdfの次どうするか問題2026
willnet
2
1.5k
The Rails Doctrine Decade
koic
2
140
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
150
Are APIs Still Relevant in the AI Era?
soyuka
0
270
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
300
速習iPhone Duo対応
yuukiw00w
1
650
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2k
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
120
Security issues being discussed on Web Platforms
petamoriken
0
980
Webの地図
yosuke_furukawa
PRO
6
4.6k
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
260
The Cult of Friendly URLs
andyhume
79
7k
The SEO identity crisis: Don't let AI make you average
varn
0
560
Raft: Consensus for Rubyists
vanstee
142
7.7k
How to make the Groovebox
asonas
2
2.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Designing Powerful Visuals for Engaging Learning
tmiket
1
570
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
Visualization
eitanlees
152
17k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Transcript
AWS SAM × Dockerで サーバーレス開発が超捗った話 チームラボ株式会社 ゆっきー 2022年8月9日 JAWSコンテナ支部 初心者編
#7
アジェンダ • 自己紹介 • 開発中のアプリとサーバーレスアーキテクチャ採用の理由 • 初期の開発環境 • 初期の環境の問題点 •
AWS SAMとは? • 改善点 • 現状の課題 • まとめ 2
自己紹介 • 吉野敬太郎 (ゆっきー) • チームラボ株式会社 パッケージチーム • 新卒1年目(2022新卒) •
学生団体のお手伝いとかしてる @Yu_yukk_Y 3 ※当LTで話す内容、及び本資料とその内容は チームラボ株式会社が行っている全ての活動とは関係ございません。
開発中のアプリとサーバーレスアーキテクチャ採用の理由 • Nexus Square • 出身大学の学生間の 情報格差を無くすアプリ(最初はQA) • 学生団体Nexus Squareが開発・運営
• 今月リリース予定 4
開発中のアプリとサーバーレスアーキテクチャ採用の理由 • 利用者数の上限が低い (最大3000人程度) • 開発メンバーが少ない (現状コード書いてるのは2人) • サーバー運用に常時コミット出来ない •
お金もない 従量課金・サーバーの管理不要な サーバーレスアーキテクチャが合っている 5
現状のアーキテクチャ(ざっくり) フロントエンド QAサーバ メタデータサーバ 6
初期の開発環境 Github Actions とりあえず Githubにpush テスト コンテナビルド デプロイ (AWS CLI)
残りのリソースは 手動で構築 7 Lambdaの コードのみ更新
初期の環境の問題点 - ローカルで試せない • 動作確認は単体テスト頼り ◦ 全てのソースコードにわざわざmain関数を書いて一つずつロー カル実行(×Docker) ◦ pytestの自動単体テスト
• 本当に動くのかデプロイするまでわからない • フロントの開発用ローカルサーバは別途用意(Fast API) 8
初期の環境の問題点 - コンテナの良さを活かしきれてない • 開発にコンテナを使った理由は以下の通り ◦ LambdaへのコンテナデプロイはZipファイルアップロードよりも 楽だった ◦ CI
/ CDとの相性もよかった • 環境ごとに差分なく実行できる、などの メリットを活かしきれていない 9
初期の環境の問題点 - Lambdaのコード以外は手動更新 • Lambdaに適応するIAM Policy、API Gatewayの各種設定、、など など、都度手動で設定する必要あり • Blue
/ Greenデプロイと相性悪い • 開発初期の今はいいけど今後どうしよう、、? 10
そこで、AWS SAMを導入してみた 11
AWS SAMとは? • サーバーレスアプリケーション構築用のオープンソースフレーム ワーク • Lambda、API Gatewayといったサーバーレスリソースを迅速にデ プロイできる •
IAMポリシーとかも管理・作成できる! • APIのローカル実行も可能! コンテナのビルド・デプロイも 自動でやるよ!! ※著作権的に載せなかった、ちゃんとした AWS SAMのキャラクターはこちら 12
SAM導入後の開発環境 Github Actions ローカルで試してから Githubにpush テスト ビルド&デプロイ (基本SAM) これらは 他のCFnテンプレートで
管理 13
改善点 - ローカルでAPIが実行できるようになった • リポジトリにpushする前に動作確認ができるようになった ◦ ローカルでは、Docker Composeで 別途DynamoDB localのコンテナを立てておく
• 精神的安定度が増した 14
改善点 - ローカルとデプロイ先で差分ない実行環境 • ローカルでもコンテナビルド&実行 ◦ Lambda用のimageを自動でビルド&実行 ◦ デプロイ先と差分のないAPI実行が可能に ◦
大量のDockerfileを楽々管理 • コンテナのメリットを活かしきれる 15
改善点 - Lambdaのコード以外も一括更新できるように • LambdaのIAMポリシーやAPI Gatewayの各種設定も 一括で更新できるようになった • 今までの苦労はいったい、、? 16
現状の課題 - Blue/Greenデプロイにエイリアスが使えない • 通常、Lambdaはエイリアスという機能を用いて バージョン管理や開発用・本番用バージョンを管理できる • 、、が、SAMだと上手く使えない ◦ CloudFormationのテンプレートが競合するため
バージョンごとにLambda, API Gatewayを作成する Cognito, DBなどはSAMで管理しない 現状の対策 17
現状の課題 - 手元で簡単にデプロイ出来てしまう • ローカルからコマンド一発で簡単にデプロイできて便利 ◦ だが、一方で思わぬ事故に繋がる可能性も、、 デプロイはGithub Actions経由で デプロイ専用のIAM
ロールを用いる(OIDC) 開発用IAMユーザにCloudFormationの制限を加える 現状の対策 18
まとめ • AWS SAMの導入で開発環境が大きく改善した ◦ ローカルでコンテナを用いたAPI実行が簡単にできるようになっ た ◦ LambdaとAPI Gateway、およびその周辺リソースが管理できる
ようになった • 運用していく中でまた気づくこともあるかもしれない ◦ まずは運用頑張る、、! 19