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
ALB+Lambdaを活用した既存システムのMicroservice化
Search
NAVITIME JAPAN
PRO
October 21, 2019
Technology
0
60
ALB+Lambdaを活用した既存システムのMicroservice化
2019年10月21日(月)に開催されたDevLOVE様主催のイベント「諸君、私はServerlessが好きだ。」にて発表した資料です。
NAVITIME JAPAN
PRO
October 21, 2019
Tweet
Share
More Decks by NAVITIME JAPAN
See All by NAVITIME JAPAN
つよつよリーダーが 抜けたらどうする? 〜ナビタイムのAgile⽀援組織の変遷〜
navitimejapan
PRO
22
15k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
440
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
160
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
2.5k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.4k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
270
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.3k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.3k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
5.3k
Other Decks in Technology
See All in Technology
内製化を加速させるlaC活用術
nrinetcom
PRO
2
100
Active Directory攻防
cryptopeg
PRO
8
4.9k
ビジネスモデリング道場 目的と背景
masuda220
PRO
9
680
役員・マネージャー・著者・エンジニアそれぞれの立場から見たAWS認定資格
nrinetcom
PRO
0
970
AI Agent時代なのでAWSのLLMs.txtが欲しい!
watany
2
160
ソフトウェアエンジニアと仕事するときに知っておいたほうが良いこと / Key points for working with software engineers
pinkumohikan
1
130
脳波を用いた嗜好マッチングシステム
hokkey621
0
260
分解して理解する Aspire
nenonaninu
2
640
2/18/25: Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
0
160
株式会社EventHub・エンジニア採用資料
eventhub
0
4.3k
一度 Expo の採用を断念したけど、 再度 Expo の導入を検討している話
ichiki1023
1
250
Visualize, Visualize, Visualize and rclone
tomoaki0705
9
74k
Featured
See All Featured
Writing Fast Ruby
sferik
628
61k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Become a Pro
speakerdeck
PRO
26
5.2k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Code Review Best Practice
trishagee
67
18k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Transcript
ALB + Lambda を活⽤した 既存システムのMicroservice化 Katsuhide Kayashima
•萱島 克英 •担当 •Cloud Migration •全社的な改善業務 •好きな技術 •ECS、EKS、GKE、Spinnaker ⾃⼰紹介
今⽇お話すること ALB Lambda と を使って モノリスな既存システム を Microservice化 しようとしているお話
•ALB + Lambda を選択した背景 •デプロイフロー •改善ポイント (期待値込み) •監視周り Agenda +
= ?
Keynote Presentation ALB + Lambdaを選択した背景
•コンシューマ向けサービスの⼤半をAWS、GCPで運⽤ •アプリケーションはContainer化されており、ECS、EKS、GKE で運⽤ •Serverless の利⽤実績は少ない状況 NAVITIMEのバックエンド
既存の地図データ配信フロー Service A Service B 地図配信 Service Users ALB ALB
ALB ECS ECS ECS (共通API)
既存フローの問題点 Service A Service B 地図配信 Service ALB ALB ALB
ECS ECS ECS •ServiceA とServiceB はリクエストを Proxingしているだけ •地図配信リクエスト数は全体リクエストの 約6割 (共通API) Users
既存フローの問題点 Service A Service B 地図配信 Service ALB ALB ALB
ECS ECS ECS •ServiceB には多数の 共通API が稼働 = モノリシック •EC2リソースをアクセスに合わせて無駄なく増減させるのは難しい →無駄に起動しているEC2リソースが多少なり存在 Users (共通API)
これを ALB + Lambdaで剥がしたい
•ALB のバックエンドに Lambda が選択可能に! (Re:invent 2018) 良いタイミングで - その1
•VPC内の Lambdaに対する ENIのアタッチスピードが⼤幅に向上 ! 良いタイミングで - その2
Lambda導⼊後のフロー Service A Service B 地図配信 Service ALB ALB ALB
ECS ECS ECS (共通API) Users Lambda
•無駄なコンピューティングリソースの削減 •モノリスなシステムから地図リクエストが剥がされることによる耐障 害性向上 •既存ECSインスタンスのスケール戦略が楽に ALB + Lambda構成に期待している事
Elite Slides Keynote Presentation Deploy & Improvement
Deploy 地図配信 Service Jenkins ALB ECS Alarm Topic AWS CloudFormation
•CloudformationでLambda、ALB Targetgroup、Alarm、Topicを作成 •aws-sam-cli で作成したtemplate をベースに必要なリソースをappend
デプロイ 地図配信 Service Jenkins ALB ECS Alarm Topic AWS CloudFormation
•Cloudformation の Template は1つ、アプリ毎に変動する部分だけ Parameterファイル化 Deploy Template.yaml アプリA⽤パラメータファイル + アプリB⽤パラメータファイル アプリC⽤パラメータファイル
Failover Service A Service B 地図配信 Service ALB ALB ALB
ECS ECS ECS (共通API) Users Lambda Cloudformation の Stackを削除する事で、既存のルーティングに切り戻す
•API毎に 同時実⾏数の上限値 を設定 •上限値を超えた分は 502 がすぐに返却 改善ポイント API毎に Lambda を分けた事により、予期せぬ⼤量アクセスがあった場合でも
バックエンドシステムの輻輳が起きにくくなる
Elite Slides Keynote Presentation 監視
Cloudwatch Prometheus & Grafana Datadog 監視ツール Lambda → Cloudwatchとのインテグレーションで簡単に監視できそう
実施した監視項⽬ 項⽬ 監視の⽬的 Errors • Lambda⾃体でエラーが発⽣していないか? • 例)Memory超過、Timeout Application Errors
• アプリケーションでエラーが発⽣していないか? • 例)Upstreamからエラーが返却された • 例)Runtime Error Throttle Errors • 同時実⾏数の上限を超えていないか? Healthy Host Count • ALB → Lambdaのヘルスチェックが200で返っているか?
ご清聴ありがとうございました!