Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pocochaの急成長を支えるDeNA的なインフラ運用改善【DeNA TechCon 2021...

Pocochaの急成長を支えるDeNA的なインフラ運用改善【DeNA TechCon 2021】/techcon2021-6

ステイホームも重なり急成長している Pococha では、増え続ける膨大な利用に対して Small Start した新規事業によくある、インフラ観点でのアーキテクチャの課題、運用の課題、性能管理の課題を抱えていました。

これまで数多くの大規模サービスを運用してきた DeNA がそのノウハウを活かし、 Pococha が新規事業から大規模サービスとなる上で安定化のためにやった、DB 分割や Auto Scaling などの運用改善についてご紹介します。

また、DeNA のインフラ基盤がどのように支えられているか、どのようにコスト最適化を目指しているかについても詳しくお話しします。

DeNA_Tech

March 03, 2021
Tweet

More Decks by DeNA_Tech

Other Decks in Technology

Transcript

  1. API 2017 2021 req/s 20 8,500 vCPU 4 2,000 Mbps

    10 3,000 QPS 80 35,000 [2021/01]
  2. DeNA のインフラ運用特色 • どこでも動かせる ◦ On Premise / Public Cloud

    • 複数サービス横断 ◦ Metadata(後述) を利用した共通的な Script たち
  3. DeNA のインフラ運用特色 • どこでも動かせる ◦ On Premise / Public Cloud

    • 複数サービス横断 ◦ Metadata(後述) を利用した共通的な Script たち • QCT の追求 ◦ https://www.slideshare.net/dena_tech/denaqctiaas-aws-summit-tokyo-2019
  4. Pococha のインフラ構成 • 開発チームで全て構築運用 • 基盤は AWS ◦ EC2(API /

    batch / daemon) ◦ Aurora ◦ ElastiCache ◦ etc. Small Start なプロジェクト
  5. Pococha の成長と課題 [アーキテクチャ] • VPC CIDR 不足 ◦ IP Address

    枯渇の恐れ • CDN 対象不足 ◦ CDN 使わず origin からデータ直接配信 • SPOF なサーバ群 ◦ 停止するとサービスへの影響大
  6. • 障害対応 • 性能管理とチューニング • DB 分割 • Auto Scaling

    DeNA のインフラ品質で達成 Pococha の成長を支える運用改善
  7. DB 分割 [垂直分割] • テーブル単位での分割 ◦ User: users / user_friends

    / ... ◦ Live: lives / archived_lives / ... ◦ Log: login_logs / used_item_logs / ... • テーブル用途毎で Cluster にまとめる
  8. • テーブル単位での分割 ◦ User: users / user_friends / ... ◦

    Live: lives / archived_lives / ... ◦ Log: login_logs / used_item_logs / ... • テーブル用途毎で Cluster にまとめる アクセス頻度に応じた負荷分散 DB 分割 [垂直分割]
  9. DB 分割 [水平分割] • レコード毎に分割 ◦ users などレコードが膨大になりうるもの ◦ ScaleUp

    で限界となりうるもの • 大きなテーブルを複数 Cluster に分割 • Shard と key を mapping
  10. DB 分割 [水平分割] User Mapping user_id shard_id 10001 1 10002

    2 10003 1 ... ... User Shard 1 User Shard 2
  11. DB 分割 [水平分割] User Mapping User Shard 1 User Shard

    2 User Shard 3 User Shard 4 user_id shard_id 10001 1 10002 2 10003 1 ... ...
  12. DB 分割 [水平分割] User Mapping User Shard 1 User Shard

    2 User Shard 3 User Shard 4 user_id shard_id 10001 1 10002 2 10003 1 ... ... 90001 3 90002 4 90003 3 90004 4
  13. DB 分割 [水平分割] User Mapping User Shard 1 User Shard

    2 User Shard 3 User Shard 4 user_id shard_id 10001 1 10002 2 10003 1 ... ... 90001 3 90002 4 90003 3 90004 4 重み付けによる負荷の均等化
  14. I. DB 分割 II. Auto Scaling A. 人はなぜ Auto Scaling

    したいのか B. DeNA と Auto Scaling 戦いの歴史 C. Pococha で解決したかったこと D. QCT を意識した Auto Scaling 構成 Pococha の成長を支える運用改善
  15. DeNA と Auto Scaling 戦いの歴史 1. 一枚岩 Script 期 2.

    Workflow と Spot Instances 期 [AWS] 3. Managed Instance Group 期 [GCP]
  16. Auto Scaling との戦い [1/3] 一枚岩 Script 期 • 大量構築にかかる時間大 •

    コードの運用が面倒 ◦ リトライ制御と複雑なロジック ◦ 起動から Service In まで全部担保しテストが面倒 ◦ タスク間の依存関係と冪等性の担保
  17. Auto Scaling との戦い [1/3] Cloud Launch Instances (Auto Scaler) Server

    Server Server Network Check Provision Monitor ServiceIn Server Server Server Server Server Server 一枚岩 Script 期 Metadata
  18. Metadata Auto Scaling との戦い [1/3] Cloud Launch Instances (Auto Scaler)

    Server Server Server Network Check Provision Monitor ServiceIn Server Server Server Server Server Server 一枚岩 Script 期
  19. Auto Scaling との戦い [1/3] Server Server Server Network Check Provision

    Monitor Server Server Server Server Server Server Metadata 一枚岩 Script 期 Metadata に依存 共通 Script 利用
  20. Auto Scaling との戦い [1/3] 一枚岩 Script 期 Server Server Server

    Network Check Provision Monitor Server Server Server Server Server Server Metadata Retry の制御 冪等性の担保
  21. Auto Scaling との戦い [1/3] Server Server Server Network Check Provision

    Post Provision Server Server Server Server Server Server Metadata Monitor Server Server Server 一枚岩 Script 期
  22. Metadata Auto Scaling との戦い [1/3] Cloud Launch Instances (auto-scaler) Server

    Server Server Network Check Provision Monitoring ServiceIn Server Server Server Server Server Server 一枚岩 Script 期 高速化と安定性に課題
  23. Auto Scaling との戦い [2/3] Workflow と Spot Instances 期 [AWS]

    • Launch と Provisioning の分離 • Metadata への登録を非同期に • (内製)Workflow ツールにより構築を並行化
  24. Auto Scaling との戦い [2/3] Workflow と Spot Instances 期 [AWS]

    AWS Launch Instances (Auto Scaler) Server Server Server Metadata Database Scheduler Scheduler Scheduler Executor Sync Sync Scheduler API Script / etc...
  25. Auto Scaling との戦い [2/3] Launch Instances (Auto Scaler) Server Server

    Server Metadata Database Scheduler Scheduler Scheduler Executor Sync Sync Scheduler API Synchronizer Workflow AWS Workflow と Spot Instances 期 [AWS] Script / etc...
  26. Auto Scaling との戦い [2/3] Scheduler Scheduler Scheduler Executor Sync Sync

    Scheduler API Workflow と Spot Instances 期 [AWS]
  27. Auto Scaling との戦い [2/3] Workflow と Spot Instances 期 [AWS]

    • Instance の管理は Script ◦ AZ 分散 ◦ 複数 Instance Type ◦ Spot Instance 起動できないときに Failover ◦ On Demand と Spot の割合
  28. Auto Scaling との戦い [2/3] Workflow と Spot Instances 期 [AWS]

    • Instance の管理は Script ◦ AZ 分散 ◦ 複数 Instance Type ◦ Spot Instance 起動できないときに Failover ◦ On Demand と Spot の割合 管理 Script のロジックが煩雑
  29. Auto Scaling との戦い [3/3] Managed Instance Group 期 [GCP] •

    Instance の管理を GCP に任せる ◦ AZ の分散 ◦ 台数維持 • Instance Group の抽象化 ◦ AWS でも動かせるように
  30. Auto Scaling との戦い [3/3] Managed Instance Group 期 [GCP] Workflow

    Sync Instance Controller Auto Scaler Server Server Server Adapter GCP Instance Group Instance Group Instance Group
  31. Auto Scaling との戦い [3/3] Workflow Sync Instance Controller Auto Scaler

    Server Server Server Adapter GCP Instance Group Instance Group Instance Group Managed Instance Group 期 [GCP]
  32. Auto Scaling との戦い [3/3] Workflow Sync Instance Controller Auto Scaler

    GCP Server Server Server Adapter Instance Group Instance Group Instance Group Managed Instance Group 期 [GCP]
  33. Auto Scaling との戦い [3/3] Managed Instance Group 期 [GCP] •

    Instance の撤去対象選定は DeNA で実施 ◦ Service Out を事前にするなど必要 • Auto Scaler は未だに独自実装 • Instance Controller が複雑
  34. Auto Scaling との戦い [3/3] Managed Instance Group 期 [GCP] •

    Instance の撤去対象選定は DeNA で実施 ◦ Service Out を事前にするなど必要 • Auto Scaler は未だに独自実装 • 登場人物が増えすぎた 次はもっとシンプルな構成に
  35. DeNA と Auto Scaling 戦いの歴史 1. 一枚岩 Script 期 2.

    Workflow と Spot Instances 期 [AWS] 3. Managed Instance Group 期 [GCP]
  36. 1. 一枚岩 Script 期 2. Workflow と Spot Instances 期

    [AWS] 3. Managed Instance Group 期 [GCP] Step and a step DeNA と Auto Scaling 戦いの歴史
  37. • 少しでも早く Scale • インフラ共通 Script 群で運用 • より Managed

    Service を活かした構成 Pococha で解決したかったこと
  38. QCT を意識した Auto Scaling 構成 • 安定化 ◦ インフラ共通 Script

    群で運用 ◦ より Managed Service を活かした構成 • 高速化 ◦ 少しでも早く Scale • コスト最適化
  39. • 安定化 ◦ インフラ共通 Script 群で運用 ◦ より Managed Service

    を活かした構成 • 高速化 ◦ 少しでも早く Scale • コスト最適化 QCT を意識した Auto Scaling 構成
  40. • 安定化 ◦ インフラ共通 Script 群で運用 ◦ より Managed Service

    を活かした構成 • 高速化 ◦ 少しでも早く Scale • コスト最適化 QCT を意識した Auto Scaling 構成
  41. Auto Scaling との戦い [2/3] Workflow と Spot Instances 期 [AWS]

    AWS Launch Instances (Auto Scaler) Server Server Server Metadata Database Scheduler Scheduler Scheduler Executor Sync Sync Scheduler API [再掲]
  42. Auto Scaling との戦い [2/3] Workflow と Spot Instances 期 [AWS]

    AWS Launch Instances (Auto Scaler) Server Server Server Metadata Database Scheduler Scheduler Scheduler Executor Sync Sync Scheduler API [再掲]
  43. Auto Scaling との戦い [2/3] Workflow と Spot Instances 期 [AWS]

    AWS Launch Instances (Auto Scaler) Server Server Server Metadata Database Scheduler Scheduler Scheduler Executor Sync Sync Scheduler API [再掲] Managed Service で再設計
  44. Pococha Auto Scaling 運用 + インフラ • Instance 台数管理 •

    負荷に応じた増減 • イベント前の増設 • AMI が最新の状態 • Scale の正確さ
  45. AWS

  46. Pococha Auto Scaling 運用 + インフラ • Instance 台数管理 •

    負荷に応じた増減 • イベント前の増設 • AMI が最新の状態 • Scale の正確さ Auto Scaling Group(ASG) Scaling policy Scheduled action Launch Templates Lifecycle hooks
  47. • 安定化 ◦ インフラ共通 Script 群で運用 ◦ より Managed Service

    を活かした構成 • 高速化 ◦ 少しでも早く Scale • コスト最適化 Managed + Workflow で網羅 QCT を意識した Auto Scaling 構成
  48. Auto Scaling との戦い [2/3] Workflow と Spot Instances 期 [AWS]

    Launch Instances (Auto Scaler) Server Server Server Metadata Database Scheduler Scheduler Scheduler Executor Sync Sync Scheduler API Synchronizer Workflow AWS [再掲]
  49. Auto Scaling との戦い [2/3] Workflow と Spot Instances 期 [AWS]

    Launch Instances (Auto Scaler) AWS ここだけ AWS に置き換え
  50. Auto Scaling Group と Workflow 連携 AWS Metadata Sync Sync

    Scheduler Lifecycle SQS Server Server Server Scheduler Workflow ASG Wait
  51. Auto Scaling Group と Workflow 連携 AWS Metadata Sync Sync

    Scheduler Lifecycle SQS Server Server Server Scheduler Workflow ASG InService
  52. • Lifecycle に Enq されたら provision 開始 • Metadata は非同期で更新

    ◦ Lifecycle の処理をブロックしない ◦ 依存する provision script のみ影響 • Terminate も同様の流れ Auto Scaling Group と Workflow 連携
  53. 1. [AWS] Launch Instances 2. [AWS] Instance 情報を SQS に入れる

    3. [DeNA] SQS から Message 取得 4. [DeNA] (内製)Workflow ツールへリクエスト 5. [DeNA] Workflow が Provisioning 処理実行 6. [DeNA] 処理完了を AWS に通知 7. [AWS] Instance を Service In Auto Scaling Group と Workflow 連携
  54. Auto Scaling Group と Workflow 連携 AWS Metadata Sync Sync

    Server Server Server Scheduler Workflow Scheduler Lifecycle SQS ASG
  55. Auto Scaling Group と Workflow 連携 AWS Metadata Sync Sync

    Server Server Server Scheduler Workflow Scheduler Lifecycle SQS ASG
  56. Auto Scaling Group と Workflow 連携 AWS Metadata Sync Sync

    Server Server Server Scheduler Workflow Scheduler Lifecycle SQS ASG 簡単に内製ツール連携
  57. • 安定化 ◦ インフラ共通 Script 群で運用 ◦ より Managed Service

    を活かした構成 • 高速化 ◦ 少しでも早く Scale • コスト最適化 QCT を意識した Auto Scaling 構成
  58. • 安定化 ◦ インフラ共通 Script 群で運用 ◦ より Managed Service

    を活かした構成 • 高速化 ◦ 少しでも早く Scale • コスト最適化 => Spot Instances 活用 QCT を意識した Auto Scaling 構成
  59. • 安定化 ◦ インフラ共通 Script 群で運用 ◦ より Managed Service

    を活かした構成 • 高速化 ◦ 少しでも早く Scale • コスト最適化 Spot Instances のための設計 QCT を意識した Auto Scaling 構成
  60. • 複数 Instance Pool 利用 • Spot Interruptions • On

    Demand への Failover • On Demand を Spot へ置換 Spot Instances と Auto Scaling Group
  61. • 複数 Instance Pool 利用 • Spot Interruptions • On

    Demand への Failover • On Demand を Spot へ置換 Spot Instances と Auto Scaling Group
  62. • Instance Type の混合 ◦ Instance Pool = Instance Type

    x AZ • ASG 内で Traffic 分散はできない 複数 Instance Pool 利用
  63. • Instance Type の混合 ◦ Instance Pool = Instance Type

    x AZ • ASG 内で Traffic 分散はできない 複数 Instance Pool 利用
  64. 複数 ASG と Traffic weight • Instance Type の混合 ◦

    Instance Pool = Instance Type x AZ • ASG 内で Traffic 分散はできない 複数 Instance Pool 利用
  65. ASG 2x ASG 4x ASG 9x Target Group Target Group

    Target Group Load Balancer 複数 Instance Pool 利用
  66. 2 ASG 2x ASG 4x ASG 9x Target Group Target

    Group Target Group Load Balancer 4 9 複数 Instance Pool 利用
  67. 2 ASG 2x ASG 4x ASG 9x Target Group Target

    Group Target Group Load Balancer 4 9 複数 Instance Pool 利用
  68. 2 ASG 2x ASG 4x ASG 9x Target Group Target

    Group Target Group Load Balancer 4 9 複数 Instance Pool 利用
  69. 2 9 ASG 2x ASG 4x ASG 9x Target Group

    Target Group Target Group Load Balancer 4 複数 Instance Pool 利用
  70. 2 9 ASG 2x ASG 4x ASG 9x Target Group

    Target Group Target Group Load Balancer 4 複数 Instance Pool 利用 1台辺りの障害の影響を均等に
  71. C5.2xlarge (OnDemand) C5.2xlarge (Spot) ASG(2x) N M C5.2xlarge (OnDemand) C5.2xlarge

    (Spot) ASG(2x) N M 2xl (OnDemand) 2xl (OnDemand) 2xl (Spot) 2xl (Spot) ASG 2x N M 複数 Instance Pool 利用
  72. • 複数 Instance Pool 利用 • Spot Interruptions • On

    Demand への Failover • On Demand を Spot へ置換 Spot Instances と Auto Scaling Group
  73. • Shutdown 前に Service Out • Event と Workflow 連携は

    Lifecycle 流用 • 停止時に On Demand 増設しない Spot Interruptions
  74. • Shutdown 前に Service Out • Event と Workflow 連携は

    Lifecycle 流用 • 停止時に On Demand 増設しない Spot Interruptions
  75. Policy の Scale に全て委任 • Shutdown 前に Service Out •

    Event と Workflow 連携は Lifecycle 流用 • 停止時に On Demand 増設しない Spot Interruptions
  76. Server Scheduler Spot Interrupt ASG SQS Event InstanceId Event Bridge

    TerminateInstance In AutoScalingGroup Spot Spot Interruptions
  77. Server Scheduler Spot Interrupt ASG SQS Event InstanceId Event Bridge

    TerminateInstance In AutoScalingGroup Scheduler Workflow Scheduler Lifecycle SQS Terminate Lifecycle Spot Spot Interruptions
  78. 1. [AWS] Spot Interruption Event 検知 2. [AWS] Event の

    InstanceId を SQS に入れる 3. [DeNA] SQS から Message 取得 4. [DeNA] ASG に TerminateInstanceInAutoScalingGroup 実行 5. [AWS] Lifecycle を SQS に通知 6. [DeNA] Message 取得し Workflow へリクエスト 7. [DeNA] Workflow で Terminate 前処理 8. [AWS] Instance 削除 Spot Interruptions
  79. Server Scheduler Spot Interrupt ASG SQS Event InstanceId Event Bridge

    Scheduler Workflow Scheduler Lifecycle SQS Terminate Lifecycle 流用 TerminateInstance In AutoScalingGroup Terminate Lifecycle Spot Spot Interruptions
  80. • 複数 Instance Pool 利用 • Spot Interruptions • On

    Demand への Failover • On Demand を Spot へ置換 Spot Instances と Auto Scaling Group
  81. On Demand への Failover • Spot Instance が起動できないときに発動 ◦ Spot

    Interruptions ではない • 一時的に On Demand で代用
  82. On Demand で Capacity 確保 On Demand への Failover •

    Spot Instance が起動できないときに発動 ◦ Spot Interruptions ではない • 一時的に On Demand で代用
  83. Server ASG Event Event Bridge Scheduler Spot Failover SQS Failed

    detail Scheduler Global Lock Acquire Spot On Demand への Failover
  84. Server ASG Event Event Bridge Scheduler Spot Failover SQS Failed

    detail Scheduler Global Lock OnDemandBaseCapacity +N (N := DesiredCapacity - Instances) Acquire Spot On Demand への Failover
  85. ASG Event Event Bridge Scheduler Spot Failover SQS Failed detail

    Scheduler Global Lock Acquire Server Scheduler Workflow Scheduler Lifecycle SQS OnDemandBaseCapacity +N (N := DesiredCapacity - Instances) OnDemand On Demand への Failover
  86. 1. [AWS] ASG 起動失敗 Event 検知 2. [AWS] Event 情報を

    SQS に通知 3. [DeNA] SQS から Message 取得 4. [DeNA] Lock 取得 5. [DeNA] OnDemandBaseCapacity 変更 6. [DeNA] Lock release 7. [AWS] Instance 情報を SQS に通知 8. [DeNA] Lifecycle で Provisioning On Demand への Failover
  87. ASG Event Event Bridge Scheduler Spot Failover SQS Failed detail

    Scheduler Global Lock Acquire Server Scheduler Workflow SQS Scheduler Lifecycle OnDemandBaseCapacity +N (N := DesiredCapacity - Instances) OnDemand On Demand への Failover
  88. ASG Event Event Bridge Scheduler Spot Failover SQS Failed detail

    Scheduler Global Lock Acquire Server Scheduler Workflow SQS Scheduler Lifecycle OnDemandBaseCapacity +N (N := DesiredCapacity - Instances) OnDemand On Demand への Failover 正確で安定した Capacity 確保
  89. • 複数 Instance Pool 利用 • Spot Interruptions • On

    Demand への Failover • On Demand を Spot へ置換 Spot Instances と Auto Scaling Group
  90. On Demand を Spot へ置換 • Failover 後に Spot に戻す

    • メンテがないので Online で実行 • batch の定期実行で十分 ◦ いきなり安定化するとは考えにくい
  91. 定期的に Spot Instance を利用 On Demand を Spot へ置換 •

    Failover 後に Spot に戻す • メンテがないので Online で実行 • batch の定期実行で十分 ◦ いきなり安定化するとは考えにくい
  92. ASG Server Server Reduce OnDemand OnDemaneBaseCapacity - N (N :=

    threshold) OnDemand Spot On Demand を Spot へ置換
  93. ASG Reduce OnDemand Scheduler Workflow Scheduler Lifecycle SQS OnDemaneBaseCapacity -

    N (N := threshold) Server OnDemand Spot Server (Spot) Server On Demand を Spot へ置換
  94. Server (Spot) ASG Server Reduce OnDemand Scheduler Workflow Scheduler Lifecycle

    SQS OnDemaneBaseCapacity - N (N := threshold) Spot On Demand を Spot へ置換
  95. ASG Server Server Reduce OnDemand OnDemaneBaseCapacity - N (N :=

    threshold) OnDemand Spot On Demand を Spot へ置換
  96. ASG Server Server Reduce OnDemand SQS Event Event Bridge Failed

    detail OnDemaneBaseCapacity - N (N := threshold) OnDemand Spot On Demand を Spot へ置換
  97. ASG Server Server Reduce OnDemand SQS Event Event Bridge Failed

    detail Scheduler Spot Failover OnDemaneBaseCapacity - N (N := threshold) OnDemand Spot On Demand を Spot へ置換
  98. 1. [DeNA] OnDemandBaseCapacity 変更 2. [AWS] Spot Instances を起動 3.

    [AWS] Spot Instance 情報を SQS に通知 4. [DeNA] Lifecycle で Provisioning 5. [AWS] On Demand Instance 情報を SQS に通知 6. [DeNA] Lifecycle で削除前処理実行 7. [AWS] On Demand Instance 削除 On Demand を Spot へ置換 [成功]
  99. On Demand を Spot へ置換 [失敗] 1. [DeNA] OnDemandBaseCapacity 変更

    2. [AWS] ASG 起動失敗 Event 発火 3. [AWS] Event 情報を SQS に通知 4. [DeNA] SQS から Message 取得 5. [DeNA] Spot の Failover 処理実行
  100. ASG Server Server Reduce OnDemand SQS Event Event Bridge Failed

    detail Scheduler Spot Failover OnDemaneBaseCapacity - N (N := threshold) OnDemand Spot On Demand を Spot へ置換 失敗時は On Demand Failover
  101. ASG Spot Instances と Auto Scaling Group ASG 2x Event

    Bridge Scheduler Spot Failover SQS Scheduler Global Lock Scheduler Workflow Scheduler Lifecycle SQS Reduce OnDemand Sync Sync Metadata AWS
  102. ASG Spot Instances と Auto Scaling Group ASG 2x Event

    Bridge Scheduler Spot Failover SQS Scheduler Global Lock Scheduler Workflow Scheduler Lifecycle SQS Reduce OnDemand Sync Sync Metadata AWS
  103. ASG Spot Instances と Auto Scaling Group ASG 2x Event

    Bridge Scheduler Spot Failover SQS Scheduler Global Lock Scheduler Workflow Scheduler Lifecycle SQS Reduce OnDemand Sync Sync Metadata AWS Script のロジックを AWS へ
  104. Capacity Rebalancing • Interruption 前に代替 Spot を起動, Lifecycle 発火 ◦

    より安定して Spot instance の導入可能 • 起動しやすい Pool を自動選択 ◦ Spot Allocation Strategy = capacity-optimized • Spot の起動に失敗したら Event 発火可能 ◦ On Demand へ Failover 可能
  105. Capacity Rebalancing • Interruption 前に代替 Spot を起動, Lifecycle 発火 ◦

    より安定して Spot instance の導入可能 • 起動しやすい Pool を自動選択 ◦ Spot Allocation Strategy = capacity-optimized • Spot の起動に失敗したら Event 発火可能 ◦ On Demand へ Failover 可能 便利機能を簡単に導入
  106. Pococha Auto Scaling のさらなる夢 • Spot 比率自動調整 • Traffic weight

    自動調整 • Instance の Rolling update 完全自動化 • Subsystem の Tracking
  107. DB 分割 [水平分割] User Mapping User Shard 1 User Shard

    2 User Shard 3 User Shard 4 user_id shard_id 10001 1 10002 2 10003 1 ... ... 90001 3 90002 4 90003 3 90004 4
  108. 9 2 ASG 2x ASG 4x ASG 9x Target Group

    Target Group Target Group Load Balancer 4 複数 Instance Pool 利用
  109. ASG Spot Instances と Auto Scaling Group ASG 2x Event

    Bridge Scheduler Spot Failover SQS Scheduler Global Lock Scheduler Workflow Scheduler Lifecycle SQS Reduce OnDemand Sync Sync Metadata AWS
  110. Small Start から大規模サービスへ • 抜本的解決を目指す • 既存運用をできるだけ維持 ◦ 開発チーム ◦

    インフラチーム • 足りない部分の実装は細かく ◦ Managed Service に置き換え可能に
  111. Small Start から大規模サービスへ • 抜本的解決を目指す • 既存運用をできるだけ維持 ◦ 開発チーム ◦

    インフラチーム • 足りない部分の実装は細かく ◦ Managed Service に置き換え可能に Make you happy