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

20180830 Merpay Microservices Platform

tjun
August 30, 2018

20180830 Merpay Microservices Platform

tjun

August 30, 2018
Tweet

More Decks by tjun

Other Decks in Technology

Transcript

  1. Merpay SRE @tjun

    Microservice基盤

    View Slide

  2. 2
    自己紹介
    Copyright © Merpay, Inc. All Rights Reserved.
    @tjun
    SRE Team at Merpay

    View Slide

  3. 3
    Merpayのアーキテクチャ
    01
    今日の目次
    02
    ● Microservice アーキテクチャ
    Microservicesの構築
    ● 構成管理
    ● CI/CD
    Copyright © Merpay, Inc. All Rights Reserved.
    03
    Microservicesの運用
    ● 運用の仕組みづくり
    ● 運用体制

    View Slide

  4. MerpayのMicroserviceアーキテクチャ

    View Slide

  5. メルペイのアーキテクチャ概要
    Clients
    Merpay
    API
    Gateway
    API
    ServiceA
    ServiceA
    ServiceA
    API

    View Slide

  6. メルペイのアーキテクチャのポイント
    Clients
    Merpay
    API
    Gateway
    API
    ServiceA
    ServiceA
    ServiceA
    API
    1. Microservices
    2. GKE(Google Kubernetes Engine)
    3. API Gateway

    View Slide

  7. Microservices
    ● Scaleする組織&サービスに耐えられるアーキテクチャ
    ● 機能やデータをサービスごとに分離できる
    ○ コードが分かれている(当たり前)
    ○ チームが分かれている
    ○ データベースが分かれている
    ○ Kubernetesのnamespaceが分かれている
    ○ GCPのprojectが分かれている
    サービスの安定性・安全性を実現するために重要

    View Slide

  8. MerpayのMicroservices
    ● ほとんどはGoで書かれている
    ○ Go microservice templateのようなコードがある
    ● gRPCでやりとり
    ○ protoファイルで定義を決めて共有できる
    ○ 多言語対応が比較的カンタン
    ● APIレイヤを分離することで、各サービスはサービスの機能に専念
    できる
    ○ クライアントを意識するのはAPIレイヤの仕事

    View Slide

  9. GKE(Google Kubernetes Engine)
    ● Microserviceのための機能
    ○ Namespace
    ○ Secret
    ○ RBAC
    ○ Managed Istio(まだ使ってない)
    ● 運用が楽になるための機能
    ○ Managed kubernetes
    ○ Update/Rollback
    ○ Load balance & Autoscale
    ○ Auto repair

    View Slide

  10. Merpay API Gateway
    Clients
    Merpay
    API
    Gateway
    API
    ServiceA
    ServiceA
    ServiceA
    API

    View Slide

  11. Merpay API Gateway (+GLB)
    ● RequestのRouting + Protocol transform(後述)
    ● 共通のEndpoint処理
    ○ DDoS Protection(GLB)
    ○ SSL Termination(GLB)
    ○ Authentication
    ○ Buffering
    ● Observability
    ○ Logging & Tracing
    参考: 「API GatewayによるMicroservices化」 by deeeet

    View Slide

  12. API Gatewayの特徴
    ● メルカリのAPI Gatewayとcoreは同じ
    ○ もともとcoreがGoのpkgとして実装されている
    ○ coreの上にMerpayのロジックを載せている
    ● API Gateway自体もGKE上に動いている
    ● ObservabilityはMicroserviceでは重要
    ○ ErrorRateやLatancyがサービスの信頼性の指標になる

    View Slide

  13. API GatewayのProtocol Transform
    3rd
    Party
    Merpay
    API
    Gateway
    API
    API
    Browser
    App
    gRPC
    HTTP + Protobuf
    HTTP + JSON
    RESTful API

    View Slide

  14. メルペイのアーキテクチャのポイント
    Clients
    Merpay
    API
    Gateway
    API
    ServiceA
    ServiceA
    ServiceA
    API
    1. Microservices
    2. GKE(Google Kubernetes Engine)
    3. API Gateway

    View Slide

  15. Microservices Platformの構築

    View Slide

  16. Microservice Platform team @mercari
    ● Microservices Platform = GCP, GKEとその周りの仕組み
    ○ MerpayのサービスはMicroservicesPlatform上に構築
    ● Merpay SREはPlatform側の改善にも参加する

    View Slide

  17. CI/CD
    ● CI
    ○ GitHubのPRベースの開発
    ○ CircleCIまたは CloudBuildでCI
    ○ GoogleDockerRegistryにImageをPush
    ● CD
    ○ SpinnakerでKubernetesのnamespaceに対してdeploy
    ○ 開発者自身がdeployを行える
    ○ Canary releaseなどの機能も今後利用していく

    View Slide

  18. Bootstrap & Ops with Terraform
    ● 新たなserviceを作るとき `./script/new` コマンドで
    ○ GCP Project
    ○ Kubernetes namespace
    ○ Sentry/Pagerduty
    などを作成し、紐付けするPullRequestを自動生成するstarter-kitがあ

    ● Databaseの追加やIAMの追加などインフラに対する変更をTerraformの
    コードで管理・レビューできる

    View Slide

  19. GCP project for GKE
    Centralized cluster
    Namespace: Service A
    Namespace: Service B
    IAM: SRE IAM: Team A
    Service A
    Service B
    RBAC: Team A
    RBAC: Team B
    Bootstrap
    Bootstrap
    IAM: Team B

    View Slide

  20. Platform Security
    ● EndPointをAPI Gatewayに集約
    ● Serviceごとにコードやデータを分離
    ● 権限を持つチームメンバをコードで管理&Review
    ● GCP, Kubernetes, SpinnakerなどのAudit Loggingとその監視
    ● 各レイヤでのセキュリティ対策や監視
    ○ Deploy, Container Image
    ○ Kubernetes Cluster, Pod
    ○ GCP(Database, Network)

    View Slide

  21. Microservicesの運用準備

    View Slide

  22. 運用体制イメージ
    サービスに関する問題
    ● Error
    ● Latency
    ● DB
    ● 問い合わせ
    Service Alert
    PlatformやInfraの問題
    ● kubernetes
    ● Gateway
    ● GCPまわり
    Platform Alert
    Service Team SRE
    (Sinmetal)
    Microservice
    Platform
    Team
    GCP

    View Slide

  23. 運用の仕組みの共通化
    ● Microserviceでは各サービスのチームがOwnerとなって運用を進め
    ていく。技術選定も自由。
    ● とはいえ、SREや他のチームのメンバーがサポートするためには共
    通化が必要
    ● ルールの共通化: SLO(Service Level Objective)を決めよう
    ● ツールの共通化: StackDriver, Datadog, Sentry, Pagerduty

    View Slide

  24. 運用の仕組みの共通化
    ● SLO: サービスが信頼できる状態かどうか判断するための指標
    ○ 例: Gatewayで測定して、あるAPIのRequestの成功率が99.99%
    ○ 指標がないと、何を直すのか、いつ緊急対応するのかの判断ができない
    ● ツールの共通化
    ○ ログ: StackDriver & BigQuery, メトリクス: Datadog, エラー通知: Sentry, 当番通
    知: Pagerduty
    ○ Microservice starter-kitで自動で各サービスのTeamやProjectなどが生成され

    View Slide

  25. まとめ

    View Slide

  26. まとめ
    merpayのSREは
    ● MicroservicePlatformを使ったサービス運用を行うチームです
    ● MicroservicePlatform自体の改善にも参加しています
    GCPやりたい人、KubernetesやMicroserviceやりたい人、DB, Network, Securityなどが
    得意な人、ぜひ一緒にやりましょう!!
    merpay 採用ページの SiteReliability までお願いします
    We are hiring!!!

    View Slide