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
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
1.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
UIパーツの設計を「型」から読み解く 〜TSKaigiのセッションから得た学び〜
yud0uhu
0
110
元・セキュリティ学習経験0大学生による業務紹介 / An Introduction to the Job by a Former College Student with Zero Security Training Experience
nttcom
0
980
Docker Desktop不要の時代が来る? WSL標準の「wslc」で Linuxコンテナを動かしてみた.
ueponx
0
200
徹底討論!ECS vs EKS!
daitak
3
1.8k
AWS Summit Japan 2026の振り返りと2027へ向けて / AWS Summit Japan 2026 Recap and Prospects for 2027
kaminashi
1
100
水を運ぶ人としてのリーダーシップ
izumii19
4
1.1k
作る力から、見極める力へ — AI時代に広がるエンジニアの価値と役割
rince
0
370
When Platform Engineering Meets GenAI
sucitw
0
200
#エンジニアBooks 30分でわかる 「技術記事を書く技術」 / engineer-books 2026-06-30
jnchito
1
130
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
610
40代で“やっとエンジニアになれた”――閉じた学びを開き、空の青さを知る / 20260628 Naoki Takahashi
shift_evolve
PRO
4
1.2k
はてなのサービス基盤を支える Kubernetes《足腰》
masayoshimaezawa
0
210
Featured
See All Featured
How to make the Groovebox
asonas
2
2.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
180
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
250
Making Projects Easy
brettharned
120
6.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
How to Ace a Technical Interview
jacobian
281
24k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
450
From π to Pie charts
rasagy
0
220
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
740
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!