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

NoOps Meetup Tokyo #7: 入門サービスメッシュ

taiki45
July 29, 2019

NoOps Meetup Tokyo #7: 入門サービスメッシュ

taiki45

July 29, 2019
Tweet

More Decks by taiki45

Other Decks in Technology

Transcript

  1. Taiki Ono
    NoOps Meetup Tokyo #7
    入門サービスメッシュ

    View Slide

  2. View Slide

  3. Agenda
    ● 業界がサービスメッシュに至るまでの変遷
    ● サービスメッシュの技術的要素を一部解説
    3

    View Slide

  4. 歴史
    ● 2011年8月 Finagle public release
    ● 2013年10月 SmartStack public release
    ● 2014年11月 Prana public release
    ● 2016年2月 Linkerd public release
    ○ 2017年4月 Linkerd v1.0 public release
    ○ 2018年9月 Linkerd v2 pubic release
    ● 2016年9月 Envoy public release
    4

    View Slide

  5. Microservices 界の当時の状況
    ● Service discovery, routing, load balancing
    ● Observability outputs (stats, tracing, logging)
    ● Implementations of retry, circuit breaking, rate limiting, timeouts,
    and other distributed systems best practices.
    ● Protocols (HTTP/1, HTTP/2, gRPC, databases, caching, etc.).
    ● Authentication and Authorization
    5

    View Slide

  6. Upstreams
    Architecture of SmartStack
    proxy
    app
    Upstreams
    Nerve
    Synapse DB
    Upstreams

    View Slide

  7. https://medium.com/netflix-techblog/prana-a-sidecar-for-your-netflix-paas-based-applications-and-services-258a5790a015

    View Slide

  8. Concept of Service Mesh
    proxy
    app
    Control plane
    Upstreams
    proxy
    Upstreams
    proxy

    View Slide

  9. 要素技術

    View Slide

  10. xDS API for data-plane configuration
    proxy
    app
    Control plane
    Upstreams
    proxy
    Upstreams
    proxy
    xDS API
    xDS API

    View Slide

  11. Envoy config management via xDS APIs
    ● Envoy is a universal data plane
    ● xDS == * Discovery Service (various configuration APIs). E.g.,:
    ○ LDS == Listener Discovery Service, CDS == Cluster Discovery Service
    ● Both gRPC streaming and JSON/YAML REST via proto3!
    ● Central management system can control a fleet of Envoys avoiding
    per-proxy config file hell
    ● Global bootstrap config for every Envoy, rest taken care of by the
    management server
    ● Envoys + xDS + management system == fleet wide traffic management
    distributed system
    11

    View Slide

  12. List of xDS APIs
    ● Cluster Discovery Service
    ● Route Discovery Service
    ● Endpoint Discovery Service
    ● Listener Discovery Service
    ● Health Discovery Service
    ● Rate Limit Service
    ● Secret Discovery Service
    ● Metric Service
    12

    View Slide

  13. xDS APIs
    ● API definitions (mirror) https://github.com/envoyproxy/data-plane-api
    ● Framework for Go https://github.com/envoyproxy/go-control-plane
    ● Framework for Java
    https://github.com/envoyproxy/java-control-plane
    ● 基本的にデータソース (e.g. k8s API server) からデータを取得、いい感じな
    データ構造に変換して配信
    13

    View Slide

  14. Service Mesh Interface
    Control plane
    Tools
    User area Product area

    View Slide

  15. まとめ Q&A
    ● Microservices の進展とともに分散システムの課題がいっぱい増えてきた
    ● 課題へのアプローチがライブラリモデルから out of process モデルへと変
    遷してきた
    ● 同時に静的な設定ファイルモデルから動的なマネージメントサーバー方式へ
    と変化してきた
    Q&A: @taiki45 でも対応

    View Slide