Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
82
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
23
16k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
870
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
250
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
3.2k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.7k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
380
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.7k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.4k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
8
5.7k
Other Decks in Technology
See All in Technology
WordPress は終わったのか ~今のWordPress の制作手法ってなにがあんねん?~ / Is WordPress Over? How We Build with WordPress Today
tbshiki
1
780
regrowth_tokyo_2025_securityagent
hiashisan
0
250
Python 3.14 Overview
lycorptech_jp
PRO
1
120
5分で知るMicrosoft Ignite
taiponrock
PRO
0
380
Power of Kiro : あなたの㌔はパワステ搭載ですか?
r3_yamauchi
PRO
0
160
非CUDAの悲哀 〜Claude Code と挑んだ image to 3D “Hunyuan3D”を EVO-X2(Ryzen AI Max+395)で動作させるチャレンジ〜
hawkymisc
2
190
チーリンについて
hirotomotaguchi
6
2k
ログ管理の新たな可能性?CloudWatchの新機能をご紹介
ikumi_ono
1
770
寫了幾年 Code,然後呢?軟體工程師必須重新認識的 DevOps
cheng_wei_chen
1
1.4k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
AWSセキュリティアップデートとAWSを育てる話
cmusudakeisuke
0
280
LLM-Readyなデータ基盤を高速に構築するためのアジャイルデータモデリングの実例
kashira
0
250
Featured
See All Featured
Done Done
chrislema
186
16k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
970
How GitHub (no longer) Works
holman
316
140k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Building Adaptive Systems
keathley
44
2.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
Balancing Empowerment & Direction
lara
5
800
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Automating Front-end Workflow
addyosmani
1371
200k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
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で返っているか?
ご清聴ありがとうございました!