Spanner Autoscaler

2e1e9884fb61b5c0014818fc7e080f25?s=47 micnncim
November 13, 2019

Spanner Autoscaler

merpay インフラ Talk #5: https://mercari.connpass.com/event/150728/

2e1e9884fb61b5c0014818fc7e080f25?s=128

micnncim

November 13, 2019
Tweet

Transcript

  1. @micnncim
 Spanner Autoscaler
 merpay infra talk #5


  2. @micnncim
 Expert Team Intern


  3. Spanner オートスケールしない問題
 Kubernetes Operator とは
 Spanner Autoscaler の紹介
 01 02

    03
  4. Spanner オートスケールしない問題
 4

  5. トラフィックに応じたノード数を設定できない 
 突発的な高トラフィックに対応できない 
 オートスケールしないと何が困るか
 高トラフィック対策にノード数を余分に多く設定すると トラフィックが小さいときにコストが余分に発生する 


  6. https://medium.com/google-cloud-jp/cloud-spanner-のハイレベルアーキテクチャ解説-fee62c17f7ed
 Spanner ハイレベルアーキテクチャ


  7. R/W を実行するコンピュートリソース ノードには直接ローカルストレージはアタッチされない Spanner における Node の役割
 データ自体は分散ファイルシステムに保存される

  8. Kubernetes Operator とは
 8

  9. Kubernetes では多数の Controller が動いている Controller は Deployment, Service など Resource

    が 宣言された Desired State になるように動く = Reconciliation Loop Kubernetes Controller 101
 Controller は自作してデプロイすることが出来る = Custom Controller Resource も独自に作ることが出来る = CRD (Custom Resource Definition) Custom Controller と CRD で Stateful なアプリケーションを自動化 = Operator
  10. Kubernetes Controller 101


  11. Kubernetes Operator


  12. kubernetes/client-go, kubernetes/code-generator kubernetes-sigs/kubebuilder Custom Controller を開発するには?
 operator-framework/operator-sdk GoogleCloudPlatform/metacontroller

  13. Spanner Autoscaler の紹介
 13

  14. Spanner のオートスケールを行う Kubernetes Operator Horizontal Pod Autoscaler に影響を受けている Spanner Autoscaler


    kubebuilder を利用 本番 Microservices に導入予定 & OSS 化予定
  15. 宣言的に設定を記述したい Reconciliation Loop がオートスケールの用途に合う Why use Kubernetes Operator?


  16. Spanner Autoscaler: CRD
 ❖ spec.scaleTargetRef.instanceId スケール対象の Instance ID ❖ spec.minNodes

    スケール時の最小 Node 数 ❖ spec.maxNodes: スケール時の最大 Node 数 ❖ targetCPUUtilization.highPriority スケール後の目標となる 優先度の高いユーザータスクと 優先度の高いシステムタスクの 合計 CPU 使用率
  17. ARCHITECURE

  18. Reconciler: Resource に対して最適な Node 数を計算し Reconciliation Loop を実行 Syncer: 各

    Resource を Google Cloud API で取得した Spanner Instance の状態と同期 Spanner Autoscaler: Inside

  19. Spanner Autoscaler を使えば Spanner でもオートスケールできる!
 Kubernetes Custom Controller で 様々なリソース・アプリケーションの自動化が可能

    まとめ