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 で構築した ABEJA Platform の Evolution in 2.5 Years
Search
Takanori Ishikawa
July 20, 2019
Technology
240
0
Share
AWS で構築した ABEJA Platform の Evolution in 2.5 Years
Takanori Ishikawa
July 20, 2019
More Decks by Takanori Ishikawa
See All by Takanori Ishikawa
Elixir: Under the Hood
ishikawa
0
1k
KISS からはじまる Elixir on Kubernetes
ishikawa
1
2.3k
Elixir in ABEJA
ishikawa
0
710
CircleCI の闇
ishikawa
0
390
Other Decks in Technology
See All in Technology
[みん強]AIの価値を最大化するデータ基盤戦略:Self-Service型Data Meshへの転換とAgentic AI Meshに向けた取り組み with Snowflake他
y_matsubara
1
160
自作エディターをOSSにして分かった、一人に刺さる開発が世界を動かす理由
shinyasaita
0
140
10サービス以上のメール到達率改善を地道に継続的に進めている話 / Continue to improve email delivery rates across multiple services
yamaguchitk333
6
2.3k
実例から学ぶ GuardDuty(SSH BruteForce)調査の全体フローと勘所【SecurityJAWS】
cscengineer
PRO
0
170
AWS運用におけるAI Agent活用術 / JAWS-UG 神戸 #11 LT大会
genda
1
320
Terragrunt x Snowflake + dbt で作るマルチテナントなデータ基盤構築プラットフォーム
gak_t12
0
510
[4] Power BI Deep Dive [2026-05]
ohata_bi
0
110
How to learn AWS Well-Architected with AWS BuilderCards: Security Edition
coosuke
PRO
0
200
ルール・ロール・ツールを創る / Creating Rules, Roles and Tools
ks91
PRO
0
140
AI時代に求められる思考のパラダイムシフト
nrinetcom
PRO
0
110
GitHub Copilot CLI で考える複数エージェント設計
tomokusaba
0
150
"うちにはまだ早い"は本当? ─ 小さく始めるPlatform Engineering入門
harukasakihara
7
660
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
300
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Code Reviewing Like a Champion
maltzj
528
40k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9k
From π to Pie charts
rasagy
0
180
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
The Curse of the Amulet
leimatthew05
1
12k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
120
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
130
Discover your Explorer Soul
emna__ayadi
2
1.1k
My Coaching Mixtape
mlcsv
0
130
Transcript
AWS で構築した ABEJA Platform の Evolution in 2.5 Years Takanori
Ishikawa / JAWS-UG 愛媛
Copyright © ABEJA, Inc. All rights reserved. 発表者とサービスの紹介 Introduction
Copyright © ABEJA, Inc. All rights reserved. • @takanori_is •
Takanori Ishikawa • ABEJA, inc. • Ex) mixi, Drecom • Developer in ABEJA Platform • ❤ Elixir and • https://github.com/ishikawa • Born in 愛媛県松⼭市
Copyright © ABEJA, Inc. All rights reserved. • @takanori_is •
Takanori Ishikawa • ABEJA, inc. • Ex) mixi, Drecom • Developer in ABEJA Platform • ❤ Elixir and • https://github.com/ishikawa • Born in 愛媛県松⼭市 • Born in 愛媛県松⼭市
Copyright © ABEJA, Inc. All rights reserved. 今⽇話すこと・伝えたいこと • 機械学習プラットフォームの開発と歴史
• AWS サービスの取捨選択したときの背景 • 今後の展望 5
Copyright © ABEJA, Inc. All rights reserved. 今⽇話すこと・伝えたいこと • 2017.02
ABEJA Platform 開発開始 • 2017.09 β版提供開始 • 2018.02 正式版リリース • 〜現在 ひたすら機能追加と改善
Copyright © ABEJA, Inc. All rights reserved. 今⽇話すこと・伝えたいこと • 昔に⽐べて、Web
サービスを作ることは⾮常に簡単になった • とりあえず、動く。重要 • しかし、動かしつづけることは⼤変 • 絶えまない改善と開発が必要
Copyright © ABEJA, Inc. All rights reserved.
Copyright © ABEJA, Inc. All rights reserved.
Copyright © ABEJA, Inc. All rights reserved.
Copyright © ABEJA, Inc. All rights reserved. ¥
Copyright © ABEJA, Inc. All rights reserved.
Copyright © ABEJA, Inc. All rights reserved.
Copyright © ABEJA, Inc. All rights reserved. 14 インフラのこれまで Evolution
Copyright © ABEJA, Inc. All rights reserved. DataLake
Copyright © ABEJA, Inc. All rights reserved. DataLake (1) •
Raw データを蓄積するためのサービス • ストレージは S3 • 初期バージョン: API Gateway と Lambda で REST API を提供 • 当初はファイルの保存、取得、⼀覧など基本的なオペレーションのみ • 構築には Serverless Framework を利⽤ 16
Copyright © ABEJA, Inc. All rights reserved. 3ヶ⽉ほどで最初のバージョンをリリース 17
Copyright © ABEJA, Inc. All rights reserved. Authorizer Request Processor
API Gateway Auth server (EC2) Storage
Copyright © ABEJA, Inc. All rights reserved. DataLake (1) •
なかなか進まない開発 • API Gateway つらい • Serverless Framework もまあまあつらい • 今後、他のサービスでもこのまま⾏くのか?
Copyright © ABEJA, Inc. All rights reserved. 内製 API Gateway
の開発開始
Copyright © ABEJA, Inc. All rights reserved. DataLake (2) •
API Gateway が分離されたことで認証・ルーティングが共通に • DataLake は Lambda と S3 のみに • しばらくはこの構成
Copyright © ABEJA, Inc. All rights reserved. Request Processer API
Gateway Storage Database
Copyright © ABEJA, Inc. All rights reserved. お客様「検索やカウントがしたい!」
Copyright © ABEJA, Inc. All rights reserved. DataLake (3) •
Lambda によるバックエンドから ECS に移⾏ • メタデータ検索やカウント機能を実装 • 検索は PostgreSQL (Aurora) の JSON + GIN Index で実装 • S3 Event -> SQS -> Lambda で同期 • S3 への PUT は API Gateway が直接担う • 転送量削減
Copyright © ABEJA, Inc. All rights reserved. API Gateway Storage
RDS Events Subscriber API Server Aurora
Copyright © ABEJA, Inc. All rights reserved. Serving
Copyright © ABEJA, Inc. All rights reserved. Serving (1) •
機械学習モデルを API として公開するための機能 • ECS タスクとして登録することで実現 • 前段に ALB を配置 • ALB の Listener Rule で各 ECS タスクにリクエストをルーティング • パスベースルーティング
Copyright © ABEJA, Inc. All rights reserved. ALB Inference cluster
Copyright © ABEJA, Inc. All rights reserved. ⽴ちはだかる ALB の制限
Copyright © ABEJA, Inc. All rights reserved. Serving (1) •
ロードバランサーあたりのリスナーの数: 50 • ロードバランサーあたりのルールの数 : 100 • リージョンあたりのロードバランサーの数: 20 • 配置されるコンテナはユーザー数に応じて増えつづける • そのうち破綻することは⽬に⾒えていた
Copyright © ABEJA, Inc. All rights reserved. Serving (2) •
またもや Gateway を⾃作 • ECS タスクのコンテナの IP アドレスを DynamoDB に保管 • タスク作成完了の CloudWatch Event で Lambda を起動 • ECS タスクの情報を取得して DynamoDB に書き込み • 定期的に死活監視をする Lambda を⽤意 • 死活監視の結果も DynamoDB に書き込み
Copyright © ABEJA, Inc. All rights reserved. Serving (2) •
Blue / Green Deployment 機能 • API のエンドポイントの向き先となるモデルを切り替える • DynamoDB に向き先の情報を格納 • Gateway が DynamoDB を参照して、リクエストをルーティング
Copyright © ABEJA, Inc. All rights reserved. ALB Inference cluster
CloudWatch Event Health check Gateway
Copyright © ABEJA, Inc. All rights reserved. ALB Inference cluster
alias app id prod version1 Gateway
Copyright © ABEJA, Inc. All rights reserved. Logging
Copyright © ABEJA, Inc. All rights reserved. Logging (1) •
学習や推論時に出⼒されたログを管理 • ECS Cluster などのログを awslogs で CloudWatch Logs に集約 • REST API で直接 CloudWatch Logs からユーザーに返していた • 実装簡単。CloudWatch Logs 便利
Copyright © ABEJA, Inc. All rights reserved. ALB Inference cluster
CloudWatch Logs API Server
Copyright © ABEJA, Inc. All rights reserved. ALB Inference cluster
CloudWatch Logs API Server 遅い上に Rate Limit で落ちる
Copyright © ABEJA, Inc. All rights reserved. Web UI でタブを何個も開くと悲惨
Copyright © ABEJA, Inc. All rights reserved. Logging (2) •
CloudWatch Logs の制限を回避するため、ログを DynamoDB に格納 • 期間指定で取得できる • コスト⾯でも有利 • さらにコストを削減するために1レコードに複数エントリーを格納 • ⼀定期間経過したログは削除
Copyright © ABEJA, Inc. All rights reserved. Logging (2) •
CloudWatch Logs と DynamoDB を、Kinesis と Lambda で同期 • CloudWatch Logs から取得する API も残す • 後⽅互換性のため • DynamoDB から削除されたログより過去のログを参照
Copyright © ABEJA, Inc. All rights reserved. ALB Inference cluster
CloudWatch Logs API Server
Copyright © ABEJA, Inc. All rights reserved. DataLake
Copyright © ABEJA, Inc. All rights reserved. DataLake の話はアレで終わりではなかった
Copyright © ABEJA, Inc. All rights reserved. API Gateway Storage
RDS Events Subscriber API Server Aurora
Copyright © ABEJA, Inc. All rights reserved. API Gateway Storage
RDS Events Subscriber API Server Aurora 苦労してこのアーキテクチャに落ち着いていたが…
Copyright © ABEJA, Inc. All rights reserved. お客様「秒間 200ファイルほどアップロードします」
Copyright © ABEJA, Inc. All rights reserved. 48
Copyright © ABEJA, Inc. All rights reserved. 49 Postgres の
CPU 使⽤率 100%
Copyright © ABEJA, Inc. All rights reserved. 50
Copyright © ABEJA, Inc. All rights reserved. 51 SQS メッセージの処理が追いつかず⼤幅遅延
SQS メッセージの処理が追いつかず⼤幅遅延
Copyright © ABEJA, Inc. All rights reserved. DataLake (3) •
Lambda (SQS Integration) • ⼀度にさばくメッセージ数が少ない / 並列度⾼い • 結果: バックエンドの⾼負荷とキュー処理の遅延 • SQS Subscriber を⾃前実装 • タイムアウトつきで、ある程度まとめて更新 • 負荷を⾒つつ同時実⾏数を調整
Copyright © ABEJA, Inc. All rights reserved. API Gateway Storage
RDS Events Subscriber API Server Aurora Bulk update
Copyright © ABEJA, Inc. All rights reserved.
Copyright © ABEJA, Inc. All rights reserved.
Copyright © ABEJA, Inc. All rights reserved. 56 写真: レオマリゾート
まさにジェットコースター
Copyright © ABEJA, Inc. All rights reserved. ここまでが先週のおはなし
Copyright © ABEJA, Inc. All rights reserved. おまけ
Copyright © ABEJA, Inc. All rights reserved. 7/1 ~ 7/18
• Data Transfer: 133TB(※リージョン内) • S3 Put Request: 1.7億 • Lambda: 3,600万秒 (416時間)
Copyright © ABEJA, Inc. All rights reserved. 7/1 ~ 7/18
• Data Transfer: 133TB(※リージョン内) • S3 Put Request: 1.7億 • Lambda: 3,600万秒 (416時間)
Copyright © ABEJA, Inc. All rights reserved. 61 3年⽬に向けて Toward
3rd Year
Copyright © ABEJA, Inc. All rights reserved. Kubernetes
Copyright © ABEJA, Inc. All rights reserved. EKS
Copyright © ABEJA, Inc. All rights reserved. Kubernetes • EKS
で Kubernetes クラスタ構築 • ⼀部、EC2 で動いていたサービスをコンテナ化して載せた • ⼀部、EC2 上で⾃前で構築していた Kubernetes クラスタを移⾏ • 他の ECS で運⽤しているサービスを徐々に移⾏ • 今のところ⼤きなトラブルは起こっていない
Copyright © ABEJA, Inc. All rights reserved. Why Kubernetes? •
デファクト。コミュニティとエコシステム • コンテナ運⽤の柔軟さ • ⼀元管理の楽さ • EKS のおかげで Kubernetes Master の管理が楽になった • トレンドに触れる、学べることによる開発のモチベーション
Copyright © ABEJA, Inc. All rights reserved. Kubernetes • Serving
も Kubernetes クラスタに移⾏ • いまのボトルネックの解消 • コスト効率の良いコンテナのライフサイクル管理 • 今⽇話せなかったところでも活⽤ • モデルのトレーニング基盤 • モデルのバッチ実⾏基盤
Copyright © ABEJA, Inc. All rights reserved. 67 Conclusion •
昔に⽐べて、Web サービスを作ることは⾮常に簡単になった • とりあえず、動く。重要 • しかし、動かしつづけることは⼤変 • 絶えまない改善と開発が必要
Copyright © ABEJA, Inc. All rights reserved. Thank you!