Slide 1

Slide 1 text

Microservice Dashboard Introduction and Deep Dive Yuta Uekusa Engineering Productivity Team, Merpay, Inc.

Slide 2

Slide 2 text

Yuta Uekusa Engineering Productivity Team 2018年1月にメルペイに参画し、テックリードとしてマイク ロサービスの開発に携わる。その後、 Architectチーム でマイクロサービスダッシュボードの開発などを担当。 2022年1月からEngineering Productivityチームに 所属。

Slide 3

Slide 3 text

目次 01 Microservice Dashboardについて 02 Microservice Dashboardの機能と仕組み 03 APIを活用したデータの二次利用

Slide 4

Slide 4 text

目次 01 Microservice Dashboardについて 02 Microservice Dashboardの機能と仕組み 03 APIを活用したデータの二次利用

Slide 5

Slide 5 text

Microservice Dashboard ● 全てのマイクロサービスの情報を収集し、可視化することを目的とした社 内サービス ○ Webブラウザで簡単に閲覧 ○ 集めたデータをAPIで提供 ■ APIの活用事例は後述

Slide 6

Slide 6 text

開発の経緯 ● マイクロサービスの情報の把握が難しい ○ サービスの概要 ○ SLOの定義 ○ 開発しているチームメンバー ○ SlackチャンネルやPagerduty ● 運用ドキュメントとして社内Wikiにまとめていたが全てのサービスを網 羅できておらず管理が大変 ● 2019年12月頃に開発がスタート

Slide 7

Slide 7 text

目次 01 Microservice Dashboardについて 02 Microservice Dashboardの機能と仕組み 03 APIを活用したデータの二次利用

Slide 8

Slide 8 text

技術スタック ● Backend ○ Go ○ Cloud Spanner, Pub/Sub, Scheduler ○ GraphQL, gRPC ● Frontend ○ TypeScript ○ React, MUI ○ GraphQL

Slide 9

Slide 9 text

Single Page Application API Gateway Microservice Dashboard Frontend assets GraphQL API Spanner Get Assets GraphQL Query Browse

Slide 10

Slide 10 text

API API Gateway Microservice Dashboard GraphQL API gRPC API Spanner GraphQL Query System Pub/Sub Scheduler HTTP Request

Slide 11

Slide 11 text

機能一覧 01 サービスの情報を可視化する 02 サービスの情報資産を可視化する 03 サービスの依存関係を可視化する 04 サービスのコストを可視化する 05 サービスの品質を可視化する

Slide 12

Slide 12 text

サービスの情報を可視化する ● マイクロサービスの情報を簡単に把握できるようにすることを目的 ○ サービスの概要が分かる ○ 開発しているチームメンバーが分かる ○ 質問するためのSlackチャンネルが分かる

Slide 13

Slide 13 text

サービスの情報① ● Microservice Starter-kit ○ Platformチームが提供しているTerraform module ○ マイクロサービスの初期構築に必要なインフラリソースを用意してく れる ■ GCPプロジェクトやKubernetes namespaceなど ○ サービスIDというサービスを一意に識別するためのIDを定義

Slide 14

Slide 14 text

サービスの情報② ● Microservices Spec ○ マイクロサービスのメタデータの定義 ○ service.yamlというYAMLファイル ○ 構造はprotobufで定義

Slide 15

Slide 15 text

microservices-terraformリポジトリで管理されている microservices/ ▼ kouzoh-echo-jp/ ▼ development/ module_microservice_starter_kit.tf ▶ production/ service.yaml …

Slide 16

Slide 16 text

Microservice Starter-kitのデータを集める仕組み Microservice Dashboard microservices-terraform ① git clone
 ③ 保存
 ② Terraformファイルをパース&加工 
 Spanner Cloud Schedulerによる時間トリガー

Slide 17

Slide 17 text

Microservices Specのデータを集める仕組み Microservice Dashboard Pub/Sub microservices-terraform ① CIからデータをpublish 
 ③ 保存
 ② データを加工
 API Gateway Spanner

Slide 18

Slide 18 text

サービス一覧画面

Slide 19

Slide 19 text

サービス概要画面

Slide 20

Slide 20 text

チームの情報 ● Microservices Team-kit ○ Platformチームが提供しているTerraform module ○ チームのメンバーリストや権限を宣言的に管理 ○ Starter-kitと同じ仕組みで収集している

Slide 21

Slide 21 text

チーム詳細画面

Slide 22

Slide 22 text

機能一覧 01 サービスの情報を可視化する 02 サービスの情報資産を可視化する 03 サービスの依存関係を可視化する 04 サービスのコストを可視化する 05 サービスの品質を可視化する

Slide 23

Slide 23 text

サービスの情報資産を可視化する ● マイクロサービスがどういった情報資産を保有しているか把握できるよう にすることを目的 ○ システム的に管理することで情報資産の棚卸しを効率化する ○ サービスの重要度を把握することで情報セキュリティ対策の分析に 役立てる

Slide 24

Slide 24 text

サービスの情報資産 ● 個人情報のみを対象とする ○ 個人情報の分類をprotobufで定義 ■ 個人情報区分(誰の個人情報か) ● お客様、従業員など ■ 個人情報の種類 ● Email、電話番号など ■ 組み合わせによって重要度が決まる

Slide 25

Slide 25 text

サービスの情報資産の画面

Slide 26

Slide 26 text

情報資産台帳の自動生成 ● 収集したデータを元に情報資産台帳を自動的に作成できる ○ 情報資産の棚卸しを効率化する ○ 情報セキュリティ対策の分析に利用する

Slide 27

Slide 27 text

機能一覧 01 サービスの情報を可視化する 02 サービスの情報資産を可視化する 03 サービスの依存関係を可視化する 04 サービスのコストを可視化する 05 サービスの品質を可視化する

Slide 28

Slide 28 text

サービスの依存関係を可視化する ● マイクロサービスの呼び出し元と呼び出し先を簡単に把握できるように することを目的 ○ 知らないサービスからリクエストされていないか ○ 意図しないサービスへリクエストしていないか

Slide 29

Slide 29 text

サービス依存関係の情報 01 DatadogのService Dependency API 02 Terraformで管理しているNetwork Policyの設定 03 マイクロサービスの環境変数に入っている宛先 今回は三つめの環境変数を元に依存関係データを作成する仕 組みについて紹介

Slide 30

Slide 30 text

マイクロサービスの環境変数 ● Kubernetes カスタムコントローラー ○ 特定のリソースの状態変化に応じて任意の処理を行う ● PodとCronJobリソースの状態変化に応じて処理を行うコントローラー を開発 ○ namespace内のConfigMapを含む環境変数を取得し、宛先の パターンに当てはまる文字列を抽出する ○ 既存データと抽出したデータを比較して差分があれば更新

Slide 31

Slide 31 text

サービス依存関係のグラフ

Slide 32

Slide 32 text

機能一覧 01 サービスの情報を可視化する 02 サービスの情報資産を可視化する 03 サービスの依存関係を可視化する 04 サービスのコストを可視化する 05 サービスの品質を可視化する

Slide 33

Slide 33 text

サービスのコストを可視化する ● 組織のメンバーがコスト最適化できそうなサービスを探したり、 開発チー ムがサービスのコストの状態を把握できるようにすることを目的

Slide 34

Slide 34 text

サービスのコストの情報 ● Platformチームが毎月集計しているBigQueryのデータと連携 ○ GCPのコスト ○ GKEのコスト ○ Datadogのコスト

Slide 35

Slide 35 text

サービスのコストの情報を集める仕組み Microservice Dashboard ② データを加工して保存 
 ① 費用データをクエリ 
 BigQuery Platformチーム 費用データを格納
 Spanner Cloud Schedulerによる月次トリガー

Slide 36

Slide 36 text

サービスのコスト画面

Slide 37

Slide 37 text

コストダッシュボード画面

Slide 38

Slide 38 text

機能一覧 01 サービスの情報を可視化する 02 サービスの情報資産を可視化する 03 サービスの依存関係を可視化する 04 サービスのコストを可視化する 05 サービスの品質を可視化する

Slide 39

Slide 39 text

サービスの品質を可視化する ● マイクロサービスの信頼性について開発チームだけでなく組織のメン バーも把握できるようにすることを目的 ● メルペイSREチームが主導して開発

Slide 40

Slide 40 text

SLOのステータス ● メルペイSREチームによってマイクロサービスのSLOの設定をサポート する基盤が整備されている ● SLO module ○ メルペイSREチームが提供しているTerraform module ○ DatadogのSLOのモニターなどを宣言的に管理

Slide 41

Slide 41 text

SLOのステータスを集める仕組み Microservice Dashboard ② データを加工して保存 
 ① Datadog API で取得 
 Spanner Cloud Schedulerによる日次トリガー microservices-terraform SLO IDなどを連携


Slide 42

Slide 42 text

サービスのSLO画面

Slide 43

Slide 43 text

SLOダッシュボード画面

Slide 44

Slide 44 text

目次 01 Microservice Dashboardについて 02 Microservice Dashboardの機能と仕組み 03 APIを活用したデータの二次利用

Slide 45

Slide 45 text

集めたデータをAPIで提供する ● 集めたデータを社内で有効活用できるようにすることを目的 ○ 様々なデータを正規化して再利用性を高める ○ 業務の自動化を推進して生産性の向上に繋げる ● システムからだけでなく個人でも使うことができる ● GraphQLを採用 ○ ユースケースに縛られない柔軟性

Slide 46

Slide 46 text

活用事例 01 マイクロサービスのオーナーの連絡先を抽出 02 一時的な権限付与を行う運用ツール

Slide 47

Slide 47 text

サービスオーナーの連絡先を抽出 ● 各マイクロサービスに何か対応のお願いをすることがある ● なかなか対応を進めてもらえないマイクロサービスに対しては、サービス オーナーに直接連絡してお願いすることがある ○ サービスオーナーの連絡先を抽出するためにAPIが利用されてい る

Slide 48

Slide 48 text

curlで抽出する例 実行結果

Slide 49

Slide 49 text

活用事例 01 マイクロサービスのオーナーの連絡先を抽出 02 一時的な権限付与を行う運用ツール

Slide 50

Slide 50 text

一時的な権限付与を行う運用ツール ● Carrier ○ Platformチームで開発している運用ツール ○ 指定のサービスに対してGCPやKubernetesのRoleをリクエスト でき、オーナーの承認を得ると一時的に権限が付与される

Slide 51

Slide 51 text

Carrier

Slide 52

Slide 52 text

まとめ ● Microservice Dashboard ○ 全てのマイクロサービスの情報を収集し、可視化する ○ 集めたデータをAPIで提供することで業務の自動化を推進し、生産 性向上につなげる

Slide 53

Slide 53 text

No content