Slide 1

Slide 1 text

What is service mesh? @threetreeslight on shinjuku mokumoku programming #15 1 / 24

Slide 2

Slide 2 text

Who VP of Engineering at Event Organizer おじさん Repro 2 / 24

Slide 3

Slide 3 text

ネットワーク上の異なるコンピュータ上にコンポー ネントが配置されているシステム e.g. cloud 系のmanaged service を使ったsystem Distributed System? 3 / 24

Slide 4

Slide 4 text

牧歌的な分散システム シンプルなサービスであればこんなイメージで⾏け るが、考えるべきことは多い 4 / 24

Slide 5

Slide 5 text

1. ネットワークは落ちない 2. 遅延はゼロ 3. 無限の帯域 4. セキュア 5. 変更されないトポロジ 6. ⼀⼈の管理者 7. 転送コストはゼロ 8. 均⼀なネットワーク Fallacies of distributed computing 5 / 24

Slide 6

Slide 6 text

誤った考えに は対策しなき ゃいかん 6 / 24

Slide 7

Slide 7 text

さらに求められること Rapid provisioning of compute resources Basic monitoring Rapid deployment Easy to provision storage Easy access to the edge Authentication/Authorisation Standardised RPC etc... 7 / 24

Slide 8

Slide 8 text

これはやばい 8 / 24

Slide 9

Slide 9 text

対策としての 1. service discovery 2. circuit breakers 9 / 24

Slide 10

Slide 10 text

Service Discovery 10 / 24

Slide 11

Slide 11 text

What's Service Discovery 特定の要求を満たすサービスのインスタンスやコン テナを⾃動的に⾒つけるプロセスのこと 11 / 24

Slide 12

Slide 12 text

Typically Service Discovery 以下のhealth check によって実現される事が多い 1. DNS 2. load balancer 12 / 24

Slide 13

Slide 13 text

more complex requirement 1. client の負荷分散 2. staging, production などの異なる環境 3. 別リージョン、クラウドに散らばる となると典型的な⽅法では苦しい、、、 13 / 24

Slide 14

Slide 14 text

circuit brakers 14 / 24

Slide 15

Slide 15 text

concern of remote request Remote Request は、timeout になるまでhang する その状態で多数のrequest がくるとresource を⾷いつぶ して死ぬかもしれない ref Martin Fowler - CircuitBreaker 15 / 24

Slide 16

Slide 16 text

何度も同じことをする すべてのサービスにおいて同じようなコードを同じ ように書きまくる必要がある 16 / 24

Slide 17

Slide 17 text

こんな感じ 開発者はこれを意識しなければいけない 17 / 24

Slide 18

Slide 18 text

上記を踏まえ た昨今 18 / 24

Slide 19

Slide 19 text

サービス規模・⼈員規模がそれなりになってくると 出てくること マイクロサービスいっぱい AWS, GCP の楽しいマルチクラウド いわゆる distributed microservice architecture 19 / 24

Slide 20

Slide 20 text

開発者もDevOps も死ぬ 可搬性・スケーラビリティを考えたマイクロサービス設 計 必要とされている知識は利⽤するクラウドとサービス数 だけある 監視のための各種サービスのlog, metrics の収集、そのフ ォーマットの共通化 サービス間の認証・認可によるアクセス制御 20 / 24

Slide 21

Slide 21 text

特に認証認可は、、、 上記の問題を解決するために⾔語向けSDK を提供して いた。が サービスごとにリリースサイクルは異なる SDK 提供する⾔語でしか効果がない 結果、SDK が揃わない。開発者はこれを意識しなけれ ばいけない 21 / 24

Slide 22

Slide 22 text

しょうがないから、、、 service と分離し、sidecar でいく 22 / 24

Slide 23

Slide 23 text

そこでIstio 1. 勝⼿にサイドカー⽴てる 2. 上記の問題を解決するための設定を外部から注⼊ provides a uniform way to secure, connect, and monitor microservices. 23 / 24

Slide 24

Slide 24 text

ref SOTA - Service mesh とは何か Phil Calçado - Pattern: Service Mesh The mechanics of deploying Envoy at Lyft Orilly - seeking SRE Introducing Istio Service Mesh for Microservices Martin Fowler - CircuitBreaker 24 / 24