2020.02.13_ABEJA_プロダクトがスケールする過程における課題と取り組み

 2020.02.13_ABEJA_プロダクトがスケールする過程における課題と取り組み

2020.02.13 数千コンテナ規模のサービスをマイクロサービスとサーバーレスでつくって地雷を踏みながらも改善している話 #abejaai

F0940359a23a1d02661e8715487a729b?s=128

Takayoshi Kobayashi

February 13, 2020
Tweet

Transcript

  1. #abejaai 2020.02.13 数千コンテナ規模のサービスをマイクロサービスと サーバーレスでつくって地雷を踏みながらも改善している話 ABEJA, Inc. / Takayoshi Kobayashi /

    @koba_taka プロダクトがスケールする過程における 課題と取り組み
  2. #abejaai 2 ⾃社のプロダクト開発に関わっている⽅︖ さっそくですが…

  3. #abejaai 3 どうしてますか︖ Scalability Flexibility Agility Cost

  4. #abejaai 4 Today`s Topic

  5. #abejaai 5 ABEJA Productʼs

  6. #abejaai 6 今⽇お話すること ABEJAのプロダクト開発について プロダクト成⻑に伴う選択の背景 (主にインフラ)

  7. #abejaai 7 伝えたいこと プロダクトの成⻑に伴う苦悩を乗り越える アプローチ

  8. #abejaai 8 @koba_taka Twitter Like takayoshi.kobayashi.16 Facebook AWS Drinking Job

    Takayoshi Kobayashi Who is ? ABEJA, Inc. ABEJA Platform Customer Success
  9. #abejaai 9 ABEJA Productʼs

  10. #abejaai 10 この数字わかりますか︖ 200,000,000

  11. #abejaai 11 200,000,000 ⼈ Number of Visitors

  12. #abejaai 12 700+ Shops

  13. #abejaai 13 σʔλ౷߹ɾ෼ੳ σʔλऩू ՄࢹԽ ߦಈ Χϝϥ μογϡϘʔυ ϝʔϧͰͷि࣍ Ϩϙʔτ഑৴

    ը૾ղੳ 画像解析の機械学習モデルを活⽤した、⼩売店舗向けのSaaS型のサービス 顧客データの⾒える化と活⽤の⽀援 ,1*ઃఆ ࢧԉ ࣄྫڞ༗ 104σʔλ ABEJA INSIGHT for Retail
  14. #abejaai 14 インフラのこれまで Evolution

  15. #abejaai 15 データ変換システム ダッシュボード システム メール配信 システム 監視・管理ツール ストリーム マネジメント

    システム 映像解析 システム サービス基盤 全体構成
  16. #abejaai 16 ストリームマネジメントシステム 暗号化接続終端コンテナ 録画コンテナ 動画変換コンテナ データフロー監視 コンテナリポジトリ カメラ

  17. #abejaai 17 映像解析システム 特徴量データベース 顔画像・年齢性別・特徴量抽出部 リピーター判定部 データフロー監視 映像 ダッシュボード

  18. #abejaai 18 映像解析システム コアの運⽤

  19. #abejaai 19 2017.8 リピーターの研究からの開始 2018.5 リリース 当時のインフラ

  20. #abejaai 20 リリース当初の構成 カメラ 解析 Core カメラ 解析 Core 集計

    ダッシュボード
  21. #abejaai 21 リリース当初の構成 カメラ 解析 Core カメラ 解析 Core 集計

    ダッシュボード
  22. #abejaai マズイ… 22 Refferal:flicker https://bit.ly/2OIrtq4

  23. #abejaai 23 ・コアの⼊れ替えがツラい… ・当時、店舗閉店後の時間に コア⼊れ替え作業なども...

  24. #abejaai CHANGE 24

  25. #abejaai 25 モデルを⼊れ替えしやすいように マイクロサービス化

  26. #abejaai 26 アーキテクチャー変更後の構成 カメラ カメラ 集計 ダッシュボード モデルC モデルA モデルB

    モデルD キュー
  27. #abejaai 27 モデルの⼊れ替え・検証が容易に Flexibility Agility

  28. #abejaai 28

  29. #abejaai 29 272 Registration 1,175 Accounts ABEJA Platform

  30. #abejaai 30 120 TB 850,000,000 Objects ABEJA Platform

  31. #abejaai 05 推論・再学習 04 デプロイ 03 学習 02 前処理 蓄積

    01 取得 31 04 デプロイ 01 取得・蓄積 05 推論・再学習 03 学習 02 蓄積 AIのビジネススケールを 拡⼤する メトリクス監視 トリガー 推論コード管理 モデル管理 Blue/Greenデプロイメント データレイク アノテーションツール 事前推論 データセット 学習コード管理 ハイパーパラメータ管理 学習ジョブ (CPU・GPU) ABEJA Platformの機能
  32. #abejaai 32 Retailの動画解析システム カメラ カメラ 集計 ダッシュボード モデルC モデルA モデルB

    モデルD キュー 動画 保存 モデル 推論 推論結果 保存
  33. #abejaai Gateway DataLake Trigger LB Container DB Storage Events Subscriber

    Batch DB Container Image Inference log Inference Code Inference Result Platformのアーキテクチャー (以前)
  34. #abejaai 34 DataLake

  35. #abejaai 35 Rawデータを蓄積するためのサービス ストレージはS3を利⽤ 内製のGatewayを経由してS3へPUT DataLake

  36. #abejaai Gateway DataLake Trigger LB Container DB Storage Events Subscriber

    Batch DB Container Image Inference log Inference Code Inference Result Platformのアーキテクチャー (以前)
  37. #abejaai 37 Trigger

  38. #abejaai 38 特定イベントに対し、推論APIを実⾏ イベントはDataLakeへのPUT or スケジュール 推論結果はDataLakeへ格納 Trigger

  39. #abejaai One day… 39 Refferal:flicker https://bit.ly/2H8Ffhx

  40. #abejaai 40 2019年5⽉ Retailの通常のTrafficから6倍のTraffic

  41. #abejaai 41 Golden Week Refferal:flicker https://bit.ly/2H81CUp

  42. #abejaai 42 2019年8⽉ Retailの通常のTrafficから4倍のTraffic

  43. #abejaai 43 Summer Vacation Refferal:flicker https://bit.ly/2H81CUp

  44. #abejaai 44 ࣌ظతͳτϥϑΟοΫ্ঢ 5⽉ 8⽉

  45. #abejaai 45 利⽤店舗増加のため、取得データ画像の増加

  46. #abejaai 46 秒間 平均200ファイルOverのアップロード

  47. #abejaai 47

  48. #abejaai 48 %#$16ෛՙ 

  49. #abejaai 49 Lambda 1回の処理でさばくメッセージ数が少ない ⼤量のメッセージは捌ききれていない 結果︓バックエンド⾼負荷とキュー処理の遅延 メッセージキューの停滞

  50. #abejaai 50 SQS Subscriber タイムアウト付きでバルク更新処理を実装 Queueを計測しつつ、同時実⾏数を調整 SubscriberをECSで実装 メッセージキューの停滞への アプローチ Queue

    Status RDB Batch ECS
  51. #abejaai Gateway DataLake Trigger LB Container DB Storage Events Subscriber

    Batch DB Container Image Inference log Inference Code Inference Result Platformのアーキテクチャー (以前)
  52. #abejaai Gateway DataLake Trigger LB Container DB Storage Events Subscriber

    Batch Container Image Inference log Inference Code Inference Result DB Platformのアーキテクチャー (刷新後)
  53. #abejaai 53

  54. #abejaai 54

  55. #abejaai 解決 55 Refferal:flicker https://bit.ly/2SsKEoQ

  56. #abejaai 56 当時はタスクフォースを設⽴ モデル精度向上も実施 https://bit.ly/2Shfa6v

  57. #abejaai 57 次のTry

  58. #abejaai 58 AWS BatchをKubernetesへ刷新予定

  59. #abejaai 59 We are hiring!!

  60. #abejaai 60 Summary ・Insight for Retailの顧客数は右肩上がり ・そのスケールに対応するため、Platformも⽇々改善・開発 ・プロダクトの成⻑と共に動かし続けることの重要性 ・今後、GCPも積極的に活⽤ ・顧客価値のある機能改善・開発がより重要に

    ・⼀緒に取り組んでくれるメンバーを募集中︕
  61. #abejaai 61 Thank you!!