Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

ECサイト

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

ユーザー 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クライアントの実装 サービス間の連携・暗号化 リリース管理 サービスが増えるごと に毎回やってると死ぬ

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

基本的な構成

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

おわり