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のサーバーレスでとりあえず開発をはじめてみた時に無知ゆえに陥りがちなこと
Search
iret.kumoben
March 19, 2024
Technology
1
52
AWSのサーバーレスでとりあえず開発をはじめてみた時に 無知ゆえに陥りがちなこと
iret.kumoben
March 19, 2024
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第133回 雲勉 【オンライン】今度こそ既存のAWSリソースをいい感じにコードに落とし込みたい!
iret
0
36
第132回 雲勉【オンライン】春の生成AI祭り
iret
1
53
第17回 雲勉LT【オンライン】Amazon Managed Grafanaを使ってCloudWatchログを分析・可視化する
iret
0
39
Amazon Bedrockのロックな使い方を考えたい
iret
0
30
CloudWatch SyntheticsとAmazon Managed Grafanaを連携する
iret
0
23
Amazon SageMaker Canvasで学ぶ機械学習モデルの構築
iret
0
44
ECR経由でのデプロイ通知を考える〜App Runner編〜
iret
0
32
第131回 雲勉【オンライン】AWSを9年触ってきて経験した落とし穴、ハマったポイント
iret
8
660
第130回 雲勉【オンライン】Step Functions を使ってS3のファイルを操作してみよう
iret
0
36
Other Decks in Technology
See All in Technology
令和版ソフトウェアエンジニアの情報収集術 PHPカンファレンス香川2024
ysknsid25
4
870
社内での継続的な機械学習勉強会の開催のコツ
yudai00
2
380
テストコードを書きながらCompose Multiplatformを乗りこなす
subroh0508
0
140
RubyKaigi 2024 - Make Your Own Regex Engine!
makenowjust
0
130
個人的、Kubernetes の最新注目機能! (2024年5月版) / TechFeed Experts Night#28 〜 コンテナ技術最前線
pfn
PRO
3
210
kcp: Kubernetes APIs Are All You Need #techfeed_live / TechFeed Experts Night 28th
ytaka23
1
190
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
9
37k
Blazor WASM × Code-first gRPC で始める C# ⼤統⼀理論
sansantech
PRO
0
220
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
38k
LLM評価の落とし穴~開発者目線で気をつけるポイント~
rishigami
11
3.2k
複雑なビジネスルールに挑む:正確性と効率性を両立するfp-tsのチーム活用術 / Strike a balance between correctness and efficiency with fp-ts
kakehashi
5
3.5k
Taking Flight with Tailwind CSS
opdavies
0
4.3k
Featured
See All Featured
In The Pink: A Labor of Love
frogandcode
138
21k
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
245
20k
It's Worth the Effort
3n
180
27k
Imperfection Machines: The Place of Print at Facebook
scottboms
261
12k
BBQ
matthewcrist
80
8.8k
The Language of Interfaces
destraynor
151
23k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
21
2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.9k
GraphQLとの向き合い方2022年版
quramy
33
13k
Transcript
第1回 雲勉LT⼤会 AWSのサーバーレスで とりあえず開発をはじめてみた時に 無知ゆえに陥りがちなこと
⾃⼰紹介 2 ⻄⽥ 駿史 danishi • 第四開発事業部 第三開発S セクションリーダー •
SES ⇒ SIer ⇒ エンジニア、PM、マネジャー • 2019年4⽉アイレット⼊社 • 登壇は久しぶりなので頑張ります🔥 • 最近、AWS、GC両⽅全冠しました👑👑
アジェンダ 3 今⽇話すこと ※バックエンドをAPI Gateway + Lambda + DynamoDBで SPAの仕組みを作った時の経験を元に話します
AWSのサーバーレスで開発をした時の ハマりどころいくつか どうやってサーバーレスの制約を回避するか
AWSのサーバーレスで とりあえず開発をはじめてみた時に 無知ゆえに陥りがちなこと 4
サーバーレスじゃない時(LAMPとか) 5 チャレンジング(無 茶)な要件 トリッキーな 実装 開発中の 仕様変更、追加要望 だいたいなんとかなる(なお現場は) 重たいバッチを
ぶん回す
チャレンジング (無茶)な要件 重たいバッチを ぶん回す トリッキーな 実装 開発中の 仕様変更、追加要望 サーバーレスの時 6
サーバーレスアーキテクチャは メリットも多いが制約も多い (⼯夫や制約を受け⼊れないと) なんとかならない
Lambdaを使う時の制約 7 n Lambdaの実⾏環境は起動ごとに⽴ち上がって(再利⽤もされるが)終わると破棄される n ⼀時ファイルを作って他のプログラムと共有するような実装は データストアサービスと組みわせなければできない (Lambdaだけでは)状態を持てないため ステートレスな仕組みにする必要がある 最⻑15分の実⾏時間の制限がある
n 15分で終わり切る処理しか作れない⇒バッチ処理に不向き n Step FunctionsやSQSを利⽤して処理を分割して実⾏する n GlueやECSなど処理時間の制約が厳しくないサービスを利⽤する ※他にも同時実⾏数とかコールドスタートとか
API Gatewayを使う時の制約 8 n リクエストを受けてから29秒以内にレスポンスを返さないと504エラー n Step FunctionsやSQSと組み合わせて⾮同期に。(CSV Imp/Expとか要注意) 最⻑29秒で統合タイムアウト
リクエスト、レスポンスのサイズ制限 n Lambdaの送受信ペイロード上限が6MB n ⼤きなファイルを直接POSTできない n S3を利⽤する ・AWS SDK for JavaScriptからS3にアップロード、APIにはパスだけ渡す ・レスポンスはS3の署名付きURLを返す
DynamoDBを使う時の制約 9 簡単にLambdaから呼び出せるからよくDBに選定されがち。でもちょっと待って NoSQLは曲者。 IUUQTEPDTBXTBNB[PODPNKB@KQBNB[POEZOBNPECMBUFTUEFWFMPQFSHVJEFCQHFOFSBMOPTRMEFTJHOIUNMCQHFOFSBMOPTRMEFTJHOWTSFMBUJPOBM
DynamoDBを使う時の制約 10 それでもパフォーマンスが良いので⼒技でなんとかなることもあるけど DynamoDBが適さないところでは素直に他のDBを使おう。最近出たZero-ETLが光明になるか。 n PK、SKおよびLSI、GSIを設定していない、できない箇所では検索(クエリ)及び ソートがDynamoDBの機能では(効率的に)できない。 n 論理削除の実装が難しい n
JOINがないのでN+1問題発⽣しがち、回避のために⾮正規化するのも⾟い n トランザクションはあるが100アイテムまで n 連番キーはホットスポットになるためアンチパターン ・検索とソートの属性を合わせる。複合検索、複合ソートは不可。 ・フィルターを使ってもコスト、速度は上がらない。 ・ページングは次の検索キーを返すためフィルターやプログラムで結果を捏ねると使えない
まとめ 11 サーバーレスアーキテクチャは メリットも多いが制約も多い サービスの特性、制約をよく理解して、 他のサービスと組み合わせる できるだけ上流⼯程で防ぐ、 下流でも柔軟さを確保したプロジェクト推進を
動画URL 12 n 動画タイトル 第1回 雲勉LT⼤会 AWSをテーマに社内でLT⼤会をやってみた n 動画URL https://youtu.be/EVdUQx4jCkE