$30 off During Our Annual Pro Sale. View Details »
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
0
230
AWS で構築した ABEJA Platform の Evolution in 2.5 Years
Takanori Ishikawa
July 20, 2019
Tweet
Share
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
690
CircleCI の闇
ishikawa
0
380
Other Decks in Technology
See All in Technology
ESXi のAIOps だ!2025冬
unnowataru
0
300
アプリにAIを正しく組み込むための アーキテクチャ── 国産LLMの現実と実践
kohju
0
200
「もしもデータ基盤開発で『強くてニューゲーム』ができたなら今の僕はどんなデータ基盤を作っただろう」
aeonpeople
0
220
マイクロサービスへの5年間 ぶっちゃけ何をしてどうなったか
joker1007
18
7.5k
"人"が頑張るAI駆動開発
yokomachi
1
100
AlmaLinux + KVM + Cockpit で始めるお手軽仮想化基盤 ~ 開発環境などでの利用を想定して ~
koedoyoshida
0
150
AWS re:Invent 2025~初参加の成果と学び~
kubomasataka
0
180
JEDAI認定プログラム JEDAI Order 2026 エントリーのご案内 / JEDAI Order 2026 Entry
databricksjapan
0
170
日本Rubyの会: これまでとこれから
snoozer05
PRO
5
220
まだ間に合う! Agentic AI on AWSの現在地をやさしく一挙おさらい
minorun365
17
2.4k
AWSの新機能をフル活用した「re:Inventエージェント」開発秘話
minorun365
2
400
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
1
390
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
The untapped power of vector embeddings
frankvandijk
1
1.5k
The Language of Interfaces
destraynor
162
25k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
36
Highjacked: Video Game Concept Design
rkendrick25
PRO
0
240
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Balancing Empowerment & Direction
lara
5
820
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
68
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
130
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Building AI with AI
inesmontani
PRO
1
570
Test your architecture with Archunit
thirion
1
2.1k
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!