Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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.2k
Elixir in ABEJA
ishikawa
0
690
CircleCI の闇
ishikawa
0
380
Other Decks in Technology
See All in Technology
GitHub Copilotを使いこなす 実例に学ぶAIコーディング活用術
74th
3
1.7k
AI駆動開発における設計思想 認知負荷を下げるフロントエンドアーキテクチャ/ 20251211 Teppei Hanai
shift_evolve
PRO
2
200
最近のLinux普段づかいWaylandデスクトップ元年
penguin2716
1
670
エンジニアリングをやめたくないので問い続ける
estie
0
150
学習データって増やせばいいんですか?
ftakahashi
1
270
ブロックテーマとこれからの WordPress サイト制作 / Toyama WordPress Meetup Vol.81
torounit
0
520
Karate+Database RiderによるAPI自動テスト導入工数をCline+GitLab MCPを使って2割削減を目指す! / 20251206 Kazuki Takahashi
shift_evolve
PRO
1
580
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
2
450
因果AIへの招待
sshimizu2006
0
930
Security Diaries of an Open Source IAM
ahus1
0
130
Oracle Technology Night #95 GoldenGate 26ai の実装に迫る1
oracle4engineer
PRO
0
150
日本Rubyの会の構造と実行とあと何か / hokurikurk01
takahashim
4
960
Featured
See All Featured
Speed Design
sergeychernyshev
33
1.4k
Statistics for Hackers
jakevdp
799
230k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Being A Developer After 40
akosma
91
590k
Site-Speed That Sticks
csswizardry
13
990
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
700
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
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!