$30 off During Our Annual Pro Sale. View Details »

メルペイを支えるGKEとCloud Spanner / 2019 Google Cloud Architect Night 1

tjun
November 26, 2019

メルペイを支えるGKEとCloud Spanner / 2019 Google Cloud Architect Night 1

2019年11月26日の 第 1 回 Google Cloud Architect Night の資料です

tjun

November 26, 2019
Tweet

More Decks by tjun

Other Decks in Technology

Transcript

  1. メルペイを支えるGKEとCloud Spanner
    Google Cloud Architect Night #1
    Merpay SRE
    @tjun
    Junichiro Takagi https://speakerdeck.com/tjun/2019-google-cloud-architect-night-1

    View Slide

  2. メルペイ
    サービス規模
    マイクロサービスアーキテクチャ
    40以上 マイクロサービス
    2019 3Qで 1444億円以上を取り扱う
    メルカリ 決済基盤(US メルカリ事業も含む数字 )
    500万人以上 利用者
    (メルペイ「電子マネー」 登録を行ったユーザーと、「メルペイコード払い」、「ネット決済」、
    「メルペイスマート払い」等 利用者 合計(重複を除く)2019年10月時点)

    View Slide

  3. API Gateway
    Authority
    API
    Service X
    API
    Service Y
    Google Cloud Load Balancer
    Service A Service B
    Google Kubernetes Engine
    Service C
    Web
    Service Z
    Cloud
    Spanner
    Project A
    Cloud
    Spanner
    Cloud
    Pub/Sub
    Project B
    Project GKE
    共通 GKEクラスタ

    3

    1

    2
 個別 Project

    レイヤーアーキテクチャ

    4
 Cloud Spanner

    アーキテクチャ

    View Slide

  4. Google Kubernetes Engine
    Kubernetes
    マイクロサービス 実行基盤・オーケストレーション
    - 自己修復性 あるReplication Controller
    - ServiceによるLoad Balancing
    - DeploymentによるRollout/Rollback
    - Horizontal Pod Autoscalerによるスケールアウト
    - Kubernetes 自体 拡張性やエコシステム
    早く構築し、安定して運用するためにGKEを利用

    View Slide

  5. マイクロサービス on
    Google Kubernetes Engine
    すべて マイクロサービスが同じClusterに乗っている
    - Cluster自体 Platform Teamが構築・運用
    - Namespace内を各チームが開発・運用
    Google Kubernetes Engine
    Namespace: service-a
    Container A
    Container A
    Container A
    Namespace: service-b
    Container A
    Container A
    Container B

    View Slide

  6. マイクロサービス on Google Cloud Platform
    ● 1つ マイクロサービスが1つ GCP Projectを持つ
    ● 各 Project 中に Spanner や Pub/Sub などを作成
    ● 権限設定したService Account を Kubernetes Secretに配置
    ● Terraformで管理
    CircleCI
    Project A
    Cloud
    Spanner
    Cloud
    Pub/Sub
    GitHub
    Terraform
    Code Project B
    Cloud
    Spanner Big Query

    View Slide

  7. マイクロサービス 階層構
    Client アプリ、加盟店等 パートナー様
    API Gateway 全て リクエストがAPI Gatewayを通る
    共通処理とルーティング
    API サービス クライアントから リクエストとレスポンス 責任を持つ
    裏側にある複数 マイクロサービス アグリゲーション
    Backend サービス 機能 ロジックを実現する
    Backend
    Service
    API Gateway
    API
    Service
    Client

    View Slide

  8. Cloud Spanner 概要
    SQL-Likeなクエリとトランザクションと、高可用性を実現するデータストア
    ノードを追加すると性能がスケールする
    ノードを減らすこともできる

    View Slide

  9. Cloud Spanner 選定 理由
    Cloud Spanner + サービス サイズに合わせて性能がスケールできる
    + 運用コストが少ない
    ー 当時、開発経験が社内・社外にあまりなかった
    Cloud SQL + MySQL 開発経験 ある
    ー メンテナンスウィンドウ ダウンタイム
    ー 書き込み性能が、目標を満たせなかった
    MySQL on GCE + Local SSD を使え 性能が出せる
    ー 今後マイクロサービスが増えていく中で運用に不安

    View Slide

  10. Cloud Spanner を運用してみた感想
    運用開始 前後 さまざまな問題が発生しましたが、今で 比較的安定し
    た運用ができています。
    ● Go ライブラリ 問題
    ● GKE上 DNS解決に時間がかかる問題
    などなど調査しながら対応してきました。
    メルカリ Tech Blog メルペイで Spannerと 戦い 日々という記
    事を参照してください!

    View Slide

  11. まとめ
    メルペイで 、Google Kubernetes Engine と
    Cloud Spanner を使ってサービスを構築・運用して
    います
    どちらも正しく理解して活用すると、スケールする
    サービス・組織 インフラ基盤となります

    View Slide

  12. 採用してます!
    エンジニア・エンジニアリングマネージャ各職
    種で採用してます
    https://jp.merpay.com/careers/
    質問 @tjun にDMでも大丈夫です

    View Slide

  13. 67

    View Slide