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

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

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

Ad22fcf5773b906c08330f4d57242212?s=128

Kohei Ota

April 24, 2020
Tweet

Transcript

  1. Perfect Service Mesh INFRA STUDY MEETUP #1 「INFRASTRUCTURE AS CODE」

    PRESENTED BY @INDUCTOR
  2. 自己紹介  Name: Kohei Ota (@inductor)  Company: HPE 

    Role: Cloud Native and DevOps Solutions Architect  Interests  Docker  Kubernetes  Scalable Infra with good developer experience
  3. そもそもなんでIaC会に サービスメッシュなのか

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

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

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

  7. ECサイト

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

  9. APP DB カート テーブル 商品 テーブル ユーザー テーブル 決済 テーブル

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

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

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

    データの関係がどんどん 複雑になる テーブル テーブル テーブル テーブル テーブル テーブル テーブル テーブル テーブル テーブル テーブル テーブル
  13. マイクロサービスにすると?

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

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

    Service DB Service DB Service DB 登場人物が増えても コンポーネントは シンプルに保てる
  16. もっと増えると スケールの限界が見えてくる

  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クライアントの実装 サービス間の連携・暗号化 リリース管理 サービスが増えるごと に毎回やってると死ぬ
  18. マイクロサービス によくある構成  Microserviceアーキテクチャを使って 複数のアプリケーションを作成する場合 アプリケーション開発側には次のような 自由度と制約が与えらえる  開発言語は問わない 

    Dockerなどのパッケージングを用 いてアプリケーションの動作を担保  他サービスの情報を参照するときは組み 込み関数やDBのJOIN句は原則使わず、 RESTやgRPCなどを用いたサービス間通 信を使用する  サービスの正常性、異常性を定義し、必 要であればサーキットブレイクやリトラ イ処理などを行う
  19. 全サービスに共通の設定を まとめたくなってくる

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

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

  22. 基本的な構成

  23. ユーザー DB カート DB 商品 DB 決済 DB サービス プロキシ

    サービス プロキシ サービス プロキシ サービス プロキシ コントロール プレーン 作成、削除、設定の管理 具体的には? ・gRPCなどのプロキシ ・リトライ処理 ・サービスが正常でなくなったとき の挙動などを制御 ・デプロイ戦略 サービス全体 の監視
  24. 共通設定をコード化し、 マイクロサービス構成で インフラとアプリの間の 治安を守る

  25. まとめ  IaC(Infra as Code/Config)はインフラの構成管理に再現性を持たせるための仕組み  複数のサービスでデザインテンプレートを使いまわしたり、構成管理の安全性、持続性 提供速度を高めることができる  構成管理を突き詰めていくと、アプリケーション・インフラともにサービス全体の複雑性

    を容認せざるを得なくなることがある(いわゆるマイクロサービス化における副作用)  マイクロサービスというバズワードで作られ続ける小さなアプリケーションたちを インフラの構成管理を担保しながら守っていく仕組みが必要 サービスメッシュはこれらの複雑性を解決するための1つの手法
  26. おわり