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
Web APIのAWS Lambda移行で工夫したこと
Search
iwamot
May 21, 2024
Technology
4
3.4k
Web APIのAWS Lambda移行で工夫したこと
2024-05-22
アーキテクチャを突き詰める Online Conference
https://findy.connpass.com/event/314782/
iwamot
May 21, 2024
Tweet
Share
More Decks by iwamot
See All by iwamot
AWS⼊社という選択肢、⾒えていますか
iwamot
2
1.1k
40代後半で開発エンジニアからクラウドインフラエンジニアにキャリアチェンジし、生き残れる自信がようやく持てた話
iwamot
9
8.7k
DockerのマルチプラットフォームイメージをGitHub Actionsでビルドして公開する際に、参考にしたドキュメントと便利だったツール
iwamot
4
270
RAGもファインチューニングも使わない 素朴なAIチャットボットを職場に導入した結果
iwamot
1
140
Amazon CloudWatchでSLOを監視してみた CODT 2024 クロージングイベント版
iwamot
0
95
Cost-Effective SLO Error Budget Monitoring with Athena and CloudWatch
iwamot
0
890
Amazon CloudWatchでSLOを監視してみた
iwamot
0
78
AWS Protonの概要
iwamot
0
150
ENECHANGEが実現した管理者の工数負担を削減しながらもAWSセキュリティを強化した方法とは
iwamot
0
160
Other Decks in Technology
See All in Technology
2024年グライダー曲技世界選手権参加報告/2024 WGAC report
jscseminar
0
300
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
140
DMARC 対応の話 - MIXI CTO オフィスアワー #04
bbqallstars
1
140
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
私はこうやってマインドマップでテストすることを出す!
mineo_matsuya
0
310
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
350
Team Dynamicsを目指すウイングアーク1stのQAチーム
sadonosake
1
290
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
1
160
エンジニアが一生困らない ドキュメント作成の基本
naohiro_nakata
3
160
QAEチームが辿った3年 ボクらが改善業務にスクラムを選んだワケ / 20241108_cloudsign_ques23
bengo4com
0
1.3k
組み込みLinuxの時系列
puhitaku
4
1.1k
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
210
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
Facilitating Awesome Meetings
lara
50
6.1k
The Language of Interfaces
destraynor
154
24k
How GitHub (no longer) Works
holman
310
140k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
[RailsConf 2023] Rails as a piece of cake
palkan
51
4.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Six Lessons from altMBA
skipperchong
27
3.5k
Happy Clients
brianwarren
98
6.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
27
2k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Transcript
Web APIのAWS Lambda移行で工夫したこと 2024-05-22 アーキテクチャを突き詰める Online Conference https://findy.connpass.com/event/314782/ ENECHANGE株式会社 VPoT兼CTO室マネージャー
岩本 隆史
岩本 隆史 (iwamot) 現職:ENECHANGE 全社的な技術施策の提案~実行 前職:AWS Japan クラウドサポートアソシエイト AWS Community
Builder (2024~) カテゴリ:Cloud Operations
移行の背景
電力使用量予測マイクロサービス https://enechange.jp/try/input
Elastic Beanstalk (Docker) で運用 https://aws.amazon.com/jp/elasticbeanstalk/
全社的なElastic Beanstalk卒業の気運 EOLになるプラットフォームから新しいバージョンへのアップグレードはメジャ ーバージョンアップになり、既存の環境とは別に新しい環境を作成する必要があ ります。 https://dev.classmethod.jp/articles/eb-platform-versionup-with-existing-config/
無駄なALBを発見
移行先の検討
EKS? ECS? Lambda?
EKSは学習コストがかかるので除外
APIはエンドポイント1つだけ POST /predict
Lambdaに決定
移行で工夫したこと
コンテナイメージの最適化 まず、可能な時はいつでもAWS が提供するベースイメージをコンテナイメージの 出発点として使用します。次に、マルチステージビルドを使用して、不要なレイ ヤやファイルを最終イメージに追加しないようにします。 https://aws.amazon.com/jp/blogs/news/optimizing-lambda-functions-packaged-as- container-images/ ベースイメージを python:slim から
public.ecr.aws/lambda/python に変更 最終イメージから機械学習モデルの訓練データを削除
「プロビジョニングされた同時実行」の設定 Lambda が呼び出しを実行するために新しい環境を初期化しなければならない状 況は、コールドスタートとして知られています。コールドスタートを緩和するた め、プロビジョニングされた同時実行を使用できます。 https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda- concurrency.html#reserved-and-provisioned
「プロビジョニングされた同時実行」の設定 使用率が50%を超えたらスケールするようApplication Auto Scalingを設定
可用性とレイテンシの監視 SLOを策定 期間:28日間 可用性:99.9%以上 レイテンシ:正常系レスポンスの95パーセンタイルが0.08秒以下 レイテンシ:正常系レスポンスの50パーセンタイルが0.06秒以下 エラーバジェットのバーンレート監視を内製ツールで開始
リトライ実装の依頼 Web API パターンのクライアントで行うべきエラーハンドリングの 1 つとしてリ トライがあります。 リクエスト頻度の制限 (=スロットリング) や、一時的な障害、ネットワーク起因
によるエラーなど一時的なエラーにはリトライで対応します。 https://aws.amazon.com/jp/builders-flash/202307/serverless-error-handling-2/ 開発チームにAPIエラー時のリトライ実装を依頼
移行後
ALBが半減
Lambdaの料金もEC2の半額 $110/月 → $55/月
NAT Gatewayはゼロに EC2削除によりインターネット通信が消滅 $45/月 * 6台のコスト削減
可用性やレイテンシも上々
まとめ
Web APIのAWS Lambda移行で工夫したこと コンテナイメージの最適化 「プロビジョニングされた同時実行」の設定 可用性とレイテンシの監視 リトライ実装の依頼