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

サービスメッシュを完全に理解する / Perfect Service Mesh

サービスメッシュを完全に理解する / Perfect Service Mesh

Kohei Ota

April 24, 2020
Tweet

More Decks by Kohei Ota

Other Decks in Programming

Transcript

  1. Perfect Service Mesh
    INFRA STUDY MEETUP #1 「INFRASTRUCTURE AS CODE」
    PRESENTED BY @INDUCTOR

    View Slide

  2. 自己紹介
     Name: Kohei Ota (@inductor)
     Company: HPE
     Role: Cloud Native and DevOps Solutions
    Architect
     Interests
     Docker
     Kubernetes
     Scalable Infra with good developer
    experience

    View Slide

  3. そもそもなんでIaC会に
    サービスメッシュなのか

    View Slide

  4. サービスメッシュは
    IaCの側面もある

    View Slide

  5. インフラでもサービスメッシュ
    を気にすべき理由

    View Slide

  6. の前に
    まずマイクロサービスの話

    View Slide

  7. ECサイト

    View Slide

  8. ECサイト
    カート情報 商品情報
    ユーザー情報 決済情報

    View Slide

  9. APP
    DB
    カート
    テーブル
    商品
    テーブル
    ユーザー
    テーブル
    決済
    テーブル
    何の注文したか
    確認したい

    View Slide

  10. APP
    DB
    カート
    テーブル
    商品
    テーブル
    ユーザー
    テーブル
    決済
    テーブル
    JOINとかめっちゃ頑張って
    クエリを発行

    View Slide

  11. APP
    DB
    カート
    テーブル
    商品
    テーブル
    ユーザー
    テーブル
    決済
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    サービスが大きくなると

    View Slide

  12. APP
    DB
    カート
    テーブル
    商品
    テーブル
    ユーザー
    テーブル
    決済
    テーブル
    データの関係がどんどん
    複雑になる
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル
    テーブル

    View Slide

  13. マイクロサービスにすると?

    View Slide

  14. ユーザー
    DB
    カート
    DB
    商品
    DB
    決済
    DB
    API GW
    HTTP Request

    View Slide

  15. ユーザー
    DB
    カート
    DB
    商品
    DB
    決済
    DB
    API GW
    Service
    DB
    Service
    DB
    Service
    DB
    登場人物が増えても
    コンポーネントは
    シンプルに保てる

    View Slide

  16. もっと増えると
    スケールの限界が見えてくる

    View Slide

  17. ユーザー
    DB
    カート
    DB
    商品
    DB
    決済
    DB
    API GW
    Service
    DB
    Service
    DB
    Service
    DB
    ユーザー
    DB
    カート
    DB
    商品
    DB
    決済
    DB
    Service
    DB
    Service
    DB
    Service
    DB
    ユーザー
    DB
    カート
    DB
    商品
    DB
    決済
    DB
    Service
    DB
    Service
    DB
    Service
    DB
    ユーザー
    DB
    カート
    DB
    商品
    DB
    決済
    DB
    Service
    DB
    Service
    DB
    Service
    DB
    変なリクエストの監視
    gRPCクライアントの実装
    サービス間の連携・暗号化
    リリース管理
    サービスが増えるごと
    に毎回やってると死ぬ

    View Slide

  18. マイクロサービス
    によくある構成
     Microserviceアーキテクチャを使って
    複数のアプリケーションを作成する場合
    アプリケーション開発側には次のような
    自由度と制約が与えらえる
     開発言語は問わない
     Dockerなどのパッケージングを用
    いてアプリケーションの動作を担保
     他サービスの情報を参照するときは組み
    込み関数やDBのJOIN句は原則使わず、
    RESTやgRPCなどを用いたサービス間通
    信を使用する
     サービスの正常性、異常性を定義し、必
    要であればサーキットブレイクやリトラ
    イ処理などを行う

    View Slide

  19. 全サービスに共通の設定を
    まとめたくなってくる

    View Slide

  20. そこで
    サービスメッシュの登場

    View Slide

  21. サービスメッシュを3行で
     マイクロサービスに共通の規約を切り出し
     サービス数が増えてもスケールできる構成管理を
    アプリケーションとインフラの間に提供しつつ
     それら全体をコードで管理するための仕組み

    View Slide

  22. 基本的な構成

    View Slide

  23. ユーザー
    DB
    カート
    DB
    商品
    DB
    決済
    DB
    サービス
    プロキシ
    サービス
    プロキシ
    サービス
    プロキシ
    サービス
    プロキシ
    コントロール
    プレーン
    作成、削除、設定の管理
    具体的には?
    ・gRPCなどのプロキシ
    ・リトライ処理
    ・サービスが正常でなくなったとき
    の挙動などを制御
    ・デプロイ戦略
    サービス全体
    の監視

    View Slide

  24. 共通設定をコード化し、
    マイクロサービス構成で
    インフラとアプリの間の
    治安を守る

    View Slide

  25. まとめ
     IaC(Infra as Code/Config)はインフラの構成管理に再現性を持たせるための仕組み
     複数のサービスでデザインテンプレートを使いまわしたり、構成管理の安全性、持続性
    提供速度を高めることができる
     構成管理を突き詰めていくと、アプリケーション・インフラともにサービス全体の複雑性
    を容認せざるを得なくなることがある(いわゆるマイクロサービス化における副作用)
     マイクロサービスというバズワードで作られ続ける小さなアプリケーションたちを
    インフラの構成管理を担保しながら守っていく仕組みが必要
    サービスメッシュはこれらの複雑性を解決するための1つの手法

    View Slide

  26. おわり

    View Slide