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
ゆっきー
August 09, 2022
Programming
4.3k
1
Share
SAM × Dockerでサーバーレス開発が超捗った話
個人活動でやってるサーバーレスアプリケーションの開発をSAMに置き換えたら、開発環境が激変!?実際にどんな変化があったのか紹介します!
ゆっきー
August 09, 2022
More Decks by ゆっきー
See All by ゆっきー
Github Copilot Chatは本日よりケ◯ロ軍曹でありま〜〜〜すッ!!!(たぶん)
yu_yukk_y
1
380
Other Decks in Programming
See All in Programming
LLM Plugin for Node-REDの利用方法と開発について
404background
0
150
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
17
5.5k
Inspired By RubyKaigi (EN)
atzzcokek
0
500
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.3k
TAKTでAI駆動開発の品質を設計する
j5ik2o
5
520
ふつうのFeature Flag実践入門
irof
7
3.5k
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
120
SPMマルチモジュールで テストカバレッジを取得する技法
yosshi4486
0
140
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
270
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.5k
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
140
Featured
See All Featured
A designer walks into a library…
pauljervisheath
211
24k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
A Tale of Four Properties
chriscoyier
163
24k
We Have a Design System, Now What?
morganepeng
55
8.2k
Writing Fast Ruby
sferik
630
63k
Side Projects
sachag
455
43k
Six Lessons from altMBA
skipperchong
29
4.3k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
BBQ
matthewcrist
89
10k
Statistics for Hackers
jakevdp
799
230k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
260
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
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