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

マイクロサービスダッシュボードの紹介

Yuta UEKUSA
December 15, 2021

 マイクロサービスダッシュボードの紹介

Yuta UEKUSA

December 15, 2021
Tweet

Other Decks in Technology

Transcript

  1. Infrastructure as Codeで構築したリソースの可視化と再利用
    マイクロサービスダッシュボードの紹介

    View full-size slide

  2. 2
    自己紹介
    2017年7月に旧ソウゾウに入社
    2018年1月にメルペイに異動。テックリードとしてマイクロサービスの開発を担当
    2019年7月にArchitectチームに異動
    現在は主にマイクロサービスのためのダッシュボードの開発を担当
    Merpay, Inc. Architect Team
    Yuta Uekusa

    View full-size slide

  3. 3
    Agenda
    メルペイのマイクロサービスアーキテクチャについて
    01
    マイクロサービスダッシュボードの紹介
    02
    今後の取り組み
    03

    View full-size slide

  4. メルペイのマイクロサービスアーキテクチャに
    ついて
    4

    View full-size slide

  5. 5
    マイクロサービスアーキテクチャ
    Client
    API Gateway Service B
    Service A
    Service C
    Authority
    Cloud
    Spanner
    Pub/Sub
    Cloud
    Spanner
    Cloud
    Storage

    View full-size slide

  6. 6
    マイクロサービスアーキテクチャ
    API
    Gateway
    Service B
    Service A
    Service C
    Authority
    Cloud
    Spann
    er
    Pub/
    Sub
    Cloud
    Spann
    er
    Clo
    ud
    Stor
    age
    API
    Gateway
    Service B
    Service A
    Service C
    Authority
    Cloud
    Spann
    er
    Pub/
    Sub
    Cloud
    Spann
    er
    Clo
    ud
    Stor
    age
    Development Production

    View full-size slide

  7. 7
    マイクロサービスアーキテクチャ
    Client
    Cloud
    Spanner
    Pub/Sub
    Cloud
    Spanner
    Namespace
    Cloud
    Storage
    Service C
    Namespace
    Namespace
    Namespace
    Namespace
    Service B
    Service A
    API Gateway
    Authority

    View full-size slide

  8. 8
    マイクロサービスアーキテクチャ: インフラ構築
    Namespace: Service A Project: Service A
    boot strap Service A

    View full-size slide

  9. 9
    マイクロサービスアーキテクチャ: インフラ構築
    microservices-terraform リポジトリ

    View full-size slide

  10. 10
    マイクロサービスアーキテクチャ: 通信プロトコル
    Client
    Cloud
    Spanner
    Pub/Sub
    Cloud
    Spanner
    Namespace
    Cloud
    Storage
    Service C
    Namespace
    Namespace
    Namespace
    Namespace
    Service B
    Service A
    API Gateway
    Authority
    gRPC
    gRPC
    gRPC

    View full-size slide

  11. マイクロサービスダッシュボードの紹介
    11

    View full-size slide

  12. 12
    マイクロサービスダッシュボードとは?
    マイクロサービスに関する様々なデータを収集
    01
    集めたデータを可視化するウェブポータルサイト
    02
    集めたデータをAPIとして提供
    03

    View full-size slide

  13. 13
    モチベーション
    マイクロサービスの状態や品質を把握したい
    01
    ドキュメントが自動的に生成される状態にしたい
    02

    View full-size slide

  14. 14
    機能紹介
    ・トップ画面
    ・サービス詳細画面
    ・サービス詳細画面: インフラ
    ・サービス詳細画面: アプリケーション
    ・サービス詳細画面: API
    ・サービス詳細画面: SLO

    View full-size slide

  15. 15
    機能紹介: トップ画面

    View full-size slide

  16. 16
    機能紹介: トップ画面

    View full-size slide

  17. 17
    機能紹介: サービス詳細画面

    View full-size slide

  18. 18
    機能紹介: サービス詳細画面
    serviceID: merpay-service-a
    description: This is service-a
    corporation: MERPAY
    teamName: merpay-architect-jp
    contact:
    slack:
    generalChannelId: C0123456
    alertChannelId: C12345678

    service spec file

    View full-size slide

  19. 19
    機能紹介: サービス詳細画面(サービスの依存関係, 費用のグラフ)

    View full-size slide

  20. 20
    機能紹介: サービス詳細画面(インフラタブ)

    View full-size slide

  21. 21
    機能紹介: サービス詳細画面(アプリケーションタブ)

    View full-size slide

  22. 22
    機能紹介: サービス詳細画面(アプリケーションタブ)

    View full-size slide

  23. 23
    機能紹介: サービス詳細画面(APIタブ)

    View full-size slide

  24. 24
    機能紹介: サービス詳細画面(APIタブ)

    View full-size slide

  25. 25
    機能紹介: サービス詳細画面(SLOタブ)

    View full-size slide

  26. 26
    機能紹介: SLOダッシュボード

    View full-size slide

  27. 27
    マイクロサービスダッシュボードの仕組み
    技術スタック
    Backend
    Frontend
    ● Go
    ● Cloud Spanner, Pub/Sub, Scheduler, Tasks
    ● gRPC, GraphQL (99designs/gqlgen, vektah/dataloaden)
    ● TypeScript
    ● React, Material-UI
    ● GraphQL (apollo-client)

    View full-size slide

  28. 28
    マイクロサービスダッシュボードの仕組み
    Single Page Application
    API Gateway
    Microservice
    Dashboard
    Go serves assets
    gRPC server
    GraphQL server
    Cloud
    Spanner
    Browse
    Get /
    Assets
    GraphQL Query
    Data
    etc

    View full-size slide

  29. 29
    データ収集の仕組み
    Cloud Scheduler: 定期的にデータを取得
    01
    Cloud Pub/Sub: イベントメッセージからデータを取得
    02
    Cloud Tasks: マニュアルオペレーション
    03
    データ収集のトリガー

    View full-size slide

  30. 30
    データ収集の仕組み
    トリガー発動後
    API Gateway
    Microservice
    Dashboard
    gRPC server
    Cloud
    Spanner
    HTTP
    Cloud Scheduler
    Cloud Tasks
    Pub/Sub
    HTTP
    HTTP
    gRPC
    データ収集
    etc

    View full-size slide

  31. 31
    データ収集の仕組み
    トリガー発動後
    API Gateway
    Microservice
    Dashboard
    gRPC server
    Cloud
    Spanner
    HTTP
    Cloud Scheduler
    Cloud Tasks
    Pub/Sub
    HTTP
    HTTP
    gRPC
    タイムアウト
    処理中...
    etc

    View full-size slide

  32. 32
    データ収集の仕組み
    愚直に集めている
    管理するデータの構造を定義して機械的に処理可能にする
    データを集める

    View full-size slide

  33. 33
    データ収集の仕組み: データを集める
    マイクロサービスの一覧
    API Gateway
    Microservice
    Dashboard
    gRPC server
    Cloud
    Spanner
    Pub/Sub
    etc
    microservices-terraform
    リポジトリ
    CIで各microserviceの
    service-specをpublish
    service-specを保存

    View full-size slide

  34. 34
    データ収集の仕組み: データを集める
    マイクロサービスの依存関係のグラフ
    Datadog: /api/v1/service_dependencies
    Network: network policyの設定(terraformをパース)
    ServiceEnv: Podの環境変数の宛先

    View full-size slide

  35. 35
    データ収集の仕組み: データを集める
    毎月の費用グラフ
    Microservice
    Dashboard
    Cloud
    Spanner
    etc
    費用データを格納
    費用データを保存
    BigQuery
    費用データを取得
    Platform

    View full-size slide

  36. 36
    データ収集の仕組み: データを集める
    GCPリソース
    Microservice
    Dashboard
    Cloud
    Spanner
    etc
    GCPリソースのデータを保存
    Cloud Asset API で取得
    Cloud APIs
    microservices-terraform
    git clone & parse terraform

    View full-size slide

  37. 37
    データ収集の仕組み: データを集める
    Kubernetesリソース
    API Gateway
    Microservice
    Dashboard
    GraphQL server
    Cloud
    Spanner
    etc
    Browse
    Kubernetes API
    GraphQL Query Kubernetes API
    Development
    Production
    kubernetes/client-go

    View full-size slide

  38. 38
    データ収集の仕組み: データを集める
    gRPC API定義
    API Gateway
    Microservice
    Dashboard
    gRPC server
    Cloud
    Spanner
    Pub/Sub
    etc
    platform-proto
    リポジトリ
    CIでFileDescriptorSetを生成してpublish
    FileDescriptorSetを保存

    View full-size slide

  39. 39
    データ収集の仕組み: データを集める
    SLO
    Microservice
    Dashboard
    Cloud
    Spanner
    etc
    デイリーでSLOの履歴を保存
    datadog API で取得

    View full-size slide

  40. 40
    データ収集の仕組み: データを集める
    Schema
    Service Spec Service Dependency
    Service Cost
    Google Project
    Kubernetes Namespace
    Service API
    Service SLO

    View full-size slide

  41. 41
    データの再利用
    GraphQL APIを提供
    API Gateway
    Microservice
    Dashboard
    GraphQL server
    Cloud
    Spanner
    Browse
    GraphQL Query
    etc
    GraphQL Query
    System

    View full-size slide

  42. 42
    データの再利用
    マイクロサービスに関するデータのHUB
    Microservice Dashboard

    View full-size slide

  43. 今後の取り組み
    43

    View full-size slide

  44. 44
    今後の取り組み
    データの更新イベント
    Microservice
    Dashboard
    Cloud
    Spanner
    etc
    2.データの更新をpublish
    Pub/Sub
    1.何かデータを保存

    View full-size slide

  45. 45
    今後の取り組み
    データの更新イベントをきっかけに行動を起こす
    Microservice
    Dashboard
    Cloud
    Spanner
    etc
    2.データの更新をpublish
    Pub/Sub
    1.何かデータを保存
    System
    3.データの更新をsubscribe
    4.アクション

    View full-size slide

  46. 46
    抱えている課題
    各マイクロサービスに対応してほしいことがあるとき
    Service A
    Service C
    Service B

    🙇
    🙇
    🙇
    🙇

    View full-size slide

  47. 47
    抱えている課題
    マイクロサービス毎にTODOの管理
    Service A: TODO
    Service C: TODO
    Service B: TODO

    Microservice
    Dashboard
    Service A Owner
    Platform
    進捗確認
    やること確認

    View full-size slide

  48. 48
    今後の取り組み
    TODO管理用のAPIの提供
    Service A: TODO
    Service C: TODO
    Service B: TODO

    Microservice
    Dashboard
    GraphQL API
    TODO System
    TODO更新

    View full-size slide

  49. 49
    今後の取り組み
    イベントをきっかけとしたTODOの更新
    Service A: TODO
    Service C: TODO
    Service B: TODO

    Microservice
    Dashboard
    GraphQL API
    TODO System
    TODO更新
    Pub/Sub
    データ更新イベント

    View full-size slide

  50. 50
    今後の取り組み
    イベントをきっかけとした一貫したデータの変換
    something
    Microservice
    Dashboard
    GraphQL API
    System
    変換&更新
    Pub/Sub
    データ更新イベント

    View full-size slide