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
SAM × Dockerでサーバーレス開発が超捗った話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ゆっきー
August 09, 2022
Programming
1
4.2k
SAM × Dockerでサーバーレス開発が超捗った話
個人活動でやってるサーバーレスアプリケーションの開発をSAMに置き換えたら、開発環境が激変!?実際にどんな変化があったのか紹介します!
ゆっきー
August 09, 2022
Tweet
Share
More Decks by ゆっきー
See All by ゆっきー
Github Copilot Chatは本日よりケ◯ロ軍曹でありま〜〜〜すッ!!!(たぶん)
yu_yukk_y
1
360
Other Decks in Programming
See All in Programming
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
15
8.8k
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
560
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
150
new(1.26) ← これすき / kamakura.go #8
utgwkk
0
2.3k
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
140
AHC061解説
shun_pi
0
380
The free-lunch guide to idea circularity
hollycummins
0
210
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
390
Fundamentals of Software Engineering In the Age of AI
therealdanvega
1
260
Kubernetesでセルフホストが簡単なNewSQLを求めて / Seeking a NewSQL Database That's Simple to Self-Host on Kubernetes
nnaka2992
0
120
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
590
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
9
2.9k
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
250
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
390
Making Projects Easy
brettharned
120
6.6k
GraphQLとの向き合い方2022年版
quramy
50
14k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.1k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
180
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
sira's awesome portfolio website redesign presentation
elsirapls
0
190
Un-Boring Meetings
codingconduct
0
230
4 Signs Your Business is Dying
shpigford
187
22k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
130
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