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
50
AWSのサーバーレスでとりあえず開発をはじめてみた時に 無知ゆえに陥りがちなこと
iret.kumoben
March 19, 2024
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第133回 雲勉 【オンライン】今度こそ既存のAWSリソースをいい感じにコードに落とし込みたい!
iret
0
30
第132回 雲勉【オンライン】春の生成AI祭り
iret
1
48
第17回 雲勉LT【オンライン】Amazon Managed Grafanaを使ってCloudWatchログを分析・可視化する
iret
0
37
Amazon Bedrockのロックな使い方を考えたい
iret
0
25
CloudWatch SyntheticsとAmazon Managed Grafanaを連携する
iret
0
21
Amazon SageMaker Canvasで学ぶ機械学習モデルの構築
iret
0
37
ECR経由でのデプロイ通知を考える〜App Runner編〜
iret
0
31
第131回 雲勉【オンライン】AWSを9年触ってきて経験した落とし穴、ハマったポイント
iret
8
650
第130回 雲勉【オンライン】Step Functions を使ってS3のファイルを操作してみよう
iret
0
36
Other Decks in Technology
See All in Technology
高専で制御を、大学でセンシングを学び、次は脳みそ
satoshirobatofujimoto
0
120
Cloud Service Mesh に触れ合う
phaya72
1
290
競技としてのKaggle、役に立つKaggle
yu4u
7
2.5k
Handling focus in 2024
tahia910
0
540
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
170
IaCジェネレーターとBedrockで詳細設計書を生成してみた
tsukasa_ishimaru
4
940
IaCからAWSに入門した初心者が CloudFormationを通して考えた「AWS操作」の使い分け
maimyyym
3
600
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
280
エンジニア候補者向け資料2024.04.24.pdf
macloud
0
3.4k
R3のコードから見る実践LINQ実装最適化・コンカレントプログラミング実例
neuecc
3
3.3k
今さら聞けないDocker入門 〜 Dockerfileのベストプラクティス編
devops_vtj
21
6.1k
uvを使ってストレスフリーな Python開発をしよう!
r74tech
0
250
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
17
2.7k
Web development in the modern age
philhawksworth
203
10k
Designing with Data
zakiwarfel
96
4.8k
How to name files
jennybc
65
93k
Bash Introduction
62gerente
605
210k
Building Your Own Lightsaber
phodgson
100
5.7k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
The Cost Of JavaScript in 2023
addyosmani
21
3.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
From Idea to $5000 a Month in 5 Months
shpigford
378
45k
Making Projects Easy
brettharned
109
5.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
39
2.5k
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