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

Spanner Autoscaler

micnncim
November 13, 2019

Spanner Autoscaler

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

micnncim

November 13, 2019
Tweet

More Decks by micnncim

Other Decks in Programming

Transcript

  1. @micnncim

    Spanner Autoscaler

    merpay infra talk #5


    View Slide

  2. @micnncim

    Expert Team Intern


    View Slide

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

    Kubernetes Operator とは

    Spanner Autoscaler の紹介

    01
    02
    03

    View Slide

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

    4

    View Slide

  5. トラフィックに応じたノード数を設定できない 

    突発的な高トラフィックに対応できない 

    オートスケールしないと何が困るか

    高トラフィック対策にノード数を余分に多く設定すると
    トラフィックが小さいときにコストが余分に発生する 


    View Slide

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

    Spanner ハイレベルアーキテクチャ


    View Slide

  7. R/W を実行するコンピュートリソース
    ノードには直接ローカルストレージはアタッチされない
    Spanner における Node の役割

    データ自体は分散ファイルシステムに保存される

    View Slide

  8. Kubernetes Operator とは

    8

    View Slide

  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

    View Slide

  10. Kubernetes Controller 101


    View Slide

  11. Kubernetes Operator


    View Slide

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

    operator-framework/operator-sdk
    GoogleCloudPlatform/metacontroller

    View Slide

  13. Spanner Autoscaler の紹介

    13

    View Slide

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

    kubebuilder を利用
    本番 Microservices に導入予定 & OSS 化予定

    View Slide

  15. 宣言的に設定を記述したい
    Reconciliation Loop がオートスケールの用途に合う
    Why use Kubernetes Operator?


    View Slide

  16. Spanner Autoscaler: CRD

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

    View Slide

  17. ARCHITECURE

    View Slide

  18. Reconciler: Resource に対して最適な Node 数を計算し Reconciliation Loop を実行
    Syncer: 各 Resource を Google Cloud API で取得した Spanner Instance の状態と同期
    Spanner Autoscaler: Inside


    View Slide

  19. Spanner Autoscaler を使えば
    Spanner でもオートスケールできる!

    Kubernetes Custom Controller で
    様々なリソース・アプリケーションの自動化が可能
    まとめ


    View Slide