What is service mesh? on shinjuku-mokumoku vol.15
What is service mesh?@threetreeslighton shinjuku mokumoku programming #151 / 24
View Slide
WhoVP of Engineering atEvent Organizerおじさん Repro2 / 24
ネットワーク上の異なるコンピュータ上にコンポーネントが配置されているシステムe.g. cloud系のmanaged serviceを使ったsystemDistributed System?3 / 24
牧歌的な分散システムシンプルなサービスであればこんなイメージで⾏けるが、考えるべきことは多い 4 / 24
1.ネットワークは落ちない2.遅延はゼロ3.無限の帯域4.セキュア5.変更されないトポロジ6.⼀⼈の管理者7.転送コストはゼロ8.均⼀なネットワークFallacies of distributedcomputing5 / 24
誤った考えには対策しなきゃいかん6 / 24
さらに求められることRapid provisioning of compute resourcesBasic monitoringRapid deploymentEasy to provision storageEasy access to the edgeAuthentication/AuthorisationStandardised RPCetc...7 / 24
これはやばい8 / 24
対策としての1. service discovery2. circuit breakers9 / 24
ServiceDiscovery10 / 24
What's ServiceDiscovery特定の要求を満たすサービスのインスタンスやコンテナを⾃動的に⾒つけるプロセスのこと11 / 24
Typically ServiceDiscovery以下のhealth checkによって実現される事が多い1. DNS2. load balancer12 / 24
more complexrequirement1. clientの負荷分散2. staging, productionなどの異なる環境3.別リージョン、クラウドに散らばるとなると典型的な⽅法では苦しい、、、13 / 24
circuitbrakers14 / 24
concern of remoterequestRemote Requestは、timeoutになるまでhangするその状態で多数のrequestがくるとresourceを⾷いつぶして死ぬかもしれないref Martin Fowler - CircuitBreaker15 / 24
何度も同じことをするすべてのサービスにおいて同じようなコードを同じように書きまくる必要がある16 / 24
こんな感じ開発者はこれを意識しなければいけない17 / 24
上記を踏まえた昨今18 / 24
サービス規模・⼈員規模がそれなりになってくると出てくることマイクロサービスいっぱいAWS, GCPの楽しいマルチクラウドいわゆる distributed microservice architecture19 / 24
開発者もDevOpsも死ぬ可搬性・スケーラビリティを考えたマイクロサービス設計必要とされている知識は利⽤するクラウドとサービス数だけある監視のための各種サービスのlog, metricsの収集、そのフォーマットの共通化サービス間の認証・認可によるアクセス制御20 / 24
特に認証認可は、、、上記の問題を解決するために⾔語向けSDKを提供していた。がサービスごとにリリースサイクルは異なるSDK提供する⾔語でしか効果がない結果、SDKが揃わない。開発者はこれを意識しなければいけない21 / 24
しょうがないから、、、serviceと分離し、sidecarでいく22 / 24
そこでIstio1.勝⼿にサイドカー⽴てる2.上記の問題を解決するための設定を外部から注⼊provides a uniform way to secure, connect, andmonitor microservices.23 / 24
refSOTA - Service meshとは何かPhil Calçado - Pattern: Service MeshThe mechanics of deploying Envoy at LyftOrilly - seeking SREIntroducing Istio Service Mesh for MicroservicesMartin Fowler - CircuitBreaker24 / 24