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
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
980
KISS からはじまる Elixir on Kubernetes
ishikawa
1
2.2k
Elixir in ABEJA
ishikawa
0
670
CircleCI の闇
ishikawa
0
370
Other Decks in Technology
See All in Technology
第4回Snowflake 金融ユーザー会 Snowflake summit recap
tamaoki
1
290
Geminiとv0による高速プロトタイピング
shinya337
1
270
高速なプロダクト開発を実現、創業期から掲げるエンタープライズアーキテクチャ
kawauso
2
9.4k
無意味な開発生産性の議論から抜け出すための予兆検知とお金とAI
i35_267
4
13k
AWS認定を取る中で感じたこと
siromi
1
190
KubeCon + CloudNativeCon Japan 2025 Recap
ren510dev
1
390
いつの間にか入れ替わってる!?新しいAWS Security Hubとは?
cmusudakeisuke
0
130
American airlines ®️ USA Contact Numbers: Complete 2025 Support Guide
airhelpsupport
0
390
整頓のジレンマとの戦い〜Tidy First?で振り返る事業とキャリアの歩み〜/Fighting the tidiness dilemma〜Business and Career Milestones Reflected on in Tidy First?〜
bitkey
2
16k
Delta airlines®️ USA Contact Numbers: Complete 2025 Support Guide
airtravelguide
0
340
united airlines ™®️ USA Contact Numbers: Complete 2025 Support Guide
flyunitedhelp
1
340
IPA&AWSダブル全冠が明かす、人生を変えた勉強法のすべて
iwamot
PRO
2
150
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
54
11k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Building Applications with DynamoDB
mza
95
6.5k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
KATA
mclloyd
30
14k
Music & Morning Musume
bryan
46
6.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
A Tale of Four Properties
chriscoyier
160
23k
YesSQL, Process and Tooling at Scale
rocio
173
14k
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!