áá±áž áá¬á! áá±á¬ááºážáá«ážáá²á· áá¬áá¬ááŒááºáá»ááºááᯠáááºážáá²á·á¡á¬áá¯á¶ááᯠáá«áááºááŒáááºá
á€áá
áºááŒáááºá áá»áœááºá¯ááºááẠáááºáá±á¬ááºááŸá¯ mesh á¡á
áááºá¡ááá¯ááºážáá»á¬ážá áá±áá¬áá±áá¬ááºááŸáá·áº ááááºážáá»á¯ááºáá±ážáá±áá¬áẠááŸá
áºáá¯áá¯á¶ážá áá±á¬áºááŒáá»ááºááᯠ"ááá¯áá»ááºááŒá®áž áá¬áá¬ááŒááºáááº" ááŒá
áºáááºá á€áá±á¬áºááŒáá»ááºááẠáá»áœááºá¯ááºá¡á¬áž áá¬ážáááºááá¯ááºáá¯á¶ážááŸáá·áº á
áááºáááºá
á¬ážá
áá¬á¡áá±á¬ááºážáá¯á¶ážáᯠáááºáááŒá®áž á¡áá±ážá¡ááŒá®ážáá¯á¶ážááŸá¬ "áá¯á¶ážá ááá¯á¡ááºáá«ááá¬áž" áá°áá±á¬ áá¬ážáááºááŸá¯áá®ááá¯á· áŠážáááºááœá¬ážá
á±áá«áááºá
"Service mesh" áá°áá±á¬ á¡áá°á¡áááẠááŒá®ážáá²á·ááá·áº ááŸá
áºááŸá
áºá¡ááœááºáž (áá°áááºáž áá±á¬ááºážáá«áž á¡á±á¬ááºááá¯áá¬á 10 áááºá 2017 áá¯ááŸá
áº) ááœáẠááá¯ááá¯áá±áááºážá
á¬ážáá¬áá²á·ááŒá®áž áá±áá¬ááœááºááœáẠáá«áááºáá°á¡áá±á¡ááœáẠááá¯ážáá¬áááºááŸáá·áºá¡áá»áŸá áá»áœááºá¯ááºááẠáá
áºáá¯áá¯á¶ážááŒá¬ážááœáẠááŸá¯ááºááœá±ážááŸá¯áá»á¬áž á¡ááááẠááá¯ážáá¬áááºááᯠááœá±á·áá²á·ááááºá ááá°áá®áá±á¬ ááŒá±ááŸááºážáááºážáá»á¬ážááᯠááŸáá¯ááºážááŸááºáá¯á¶ááŸáá·áº ááá·áºáá»ááºáááºááá¯ááºáᬠáááºážááá¬á¡ááá¯ááºážá¡ááá¯ááºážá
áá°ááá¯ááºáááœáẠáá»áœááºáá±á¬áºáá±ážáá¬ážáá²á·áá±á¬ ááœá
áºáá¬áá»á¬ážááœáẠáá±á¬áºááŒáá«ááŸááá±á¬ á¡ááœá²áá»á¬ážá á¡ááŒá±á¡áá±ááẠá¡áá±á¬ááºážáá¯á¶áž á¡áá»ááºážáá»á¯ááºááŒá
áºááẠá
áááºáá±á¬ááºááŸá¯ááœááºááŸá¯ááºááœá±ážááŸá¯ #1- Linkerd ~ = Nginx ~ = Haproxy ~ = ááá¯ááºá á¬ážááŸááºá áááºážááá¯á·á¡áááºá០Istio ááŸáá·áº áááºážáá°ááá¯ááºáá«á Istio ááẠáá¯á¶ážáááœá²ááŒá¬ážááŒá¬ážáá¬ážáá±á¬ á¡áá¬áá áºáá¯ááŒá áºáááºá á/
áááá¡áá»ááºááŸá¬ ááá¯ážááá¯ážáá±áá¬áá±áá¬ááºáá»á¬ážááŒá áºáááºá áá°ááá¯á·áá¬áá¬áá°ááá¯á· áá¬ááŸááá¯ááºáá°ážá áá°ááá¯á·ááẠáá±á¬ááºááẠáá áºáá¯áá¯á¡ááœáẠáá¶á á¬ážáá»ááºááŸáááááºá á/
Istio ááẠá¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáá»áááºáááºáá¬ážáá±á¬ ááááºážáá»á¯ááºáá±áá¬ááºá á¥ááá¬áá áºáá¯ááŒá áºáááºá áá«á áááŒá¬ážá¡ááœáŸá¬áá«á /á¡áá¯á¶áž
áááẠtweets áá»á¬ážááœáẠááá°áá®áá±á¬ááá±á¬áá»ááºáá»á¬ážá áœá¬ (Linkerdá NGINXá HAProxyá Envoy ááŸáá·áº Istio) ááá¯áá±á¬áºááŒáá¬ážáá±á¬áºáááºáž ááá¯áá¡áá±ážááŒá®ážáááºááŸá¬ data planeá service mesh ááŸáá·áº control plane ááá¯á·á áá±áá¯áá»ááá±á¬ááá¬ážáá»á¬ážááᯠááááºáááºáá±ážááŒááºážááŒá áºáááºá á€ááá¯á·á áºááœááºá áá»áœááºá¯ááºááẠáá±á¬ááºááŒááºáá¯ááºááŒá®áž á¡ááœááºááŒáá·áºáá¬ážáá±á¬á¡ááá·áºááœáẠ"áá±áá¬áá±áá¬ááº" ááŸáá·áº "ááááºážáá»á¯ááºááŸá¯áá±áá¬ááº" áá°áá±á¬ áá±á«áá¬ááá»á¬ážááᯠááá¯ááá¯ááŒá±á¬ááºážááŸáá·áº ááœá áºáá¬ááœááºáá±á¬áºááŒáá¬ážáá±á¬ ááá±á¬áá»ááºáá»á¬ážááŸáá·áº áááºáááºááá·áº á ááºážáááºážáá»ááºáá»á¬ážá¡ááŒá±á¬ááºáž ááœá±ážááœá±ážáá«áááºá
Service Mesh ááá¯áᬠáá¬áá²á
áá¯á¶ 1- áááºáá±á¬ááºááŸá¯ mesh ááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááº
áá¯á¶ 1 á¡ááŒá±áá¶á¡áá»áá¯á¶ážá¡ááá·áºááœáẠáááºáá±á¬ááºááŸá¯ááœááºáá áºáá¯á ááá±á¬ááá¬ážááᯠááá¯ááºáá±á¬áºáááºá áááºáá±á¬ááºááŸá¯á¡á ᯠ(AD) áá±ážáá¯ááŸááááºá áááºáá±á¬ááºááŸá¯áá áºáá¯á á®ááẠáá±áááœááºáž ááá±á¬ááºá á®áá¬áá¬áá áºáá¯ááŸáá·áº áááºá ááºáá±áááºá á¡ááá®áá±ážááŸááºážáá áºáá¯áááºážá០ááœááºáááºá¡ááœá¬ážá¡áá¬á¡á¬ážáá¯á¶ážááᯠ(HTTPá RESTá gRPCá Redis á áááºááŒáá·áº) ááẠáá±ááá¹ááááá±á¬ááºá á®ááŸáááá·áº ááá·áºáá»á±á¬áºáá±á¬ ááŒááºááááºáá±á¬ááºááŸá¯á¡á á¯á¡áá±ážáá»á¬ážááá¯á· áá±ážááá¯á·áááºá á€áááºážá¡á¬ážááŒáá·áºá á¡ááá®áá±ážááŸááºážá¥ááá¬ááẠááœááºáááºáá áºáá¯áá¯á¶ážááᯠáááááá¬ážáááá² áááºážáááŒááºááœááºážááá±á¬ááºá á®ááá¯áᬠááááŸááááºá á¡ááŸááºááááºá¡á¬ážááŒáá·áºá ááŒáá·áºáá±ááŸá¯á áá áºááœááºáááºááᯠáááºáá±á¬ááºááŸá¯á០áááºááŸá¬ážáá²á·áááºá
á¡áá«ááºáá±
áááºáá±á¬ááºááŸá¯ mesh ááœááºá á¡ááá®áá±ážááŸááºážá¡ááœáẠá ááºááœááºážááŸá ááá±á¬ááºá á®áá¬áá¬ááẠá¡á±á¬ááºáá«áá¯ááºáááºážáá»á¬ážááᯠáá¯ááºáá±á¬ááºáááº-
- áááºáá±á¬ááºááŸá¯ááŸá¬ááœá±ááœá±á·ááŸáááŸá¯. ááá·áºáá»áŸá±á¬ááºááœáŸá¬á¡ááœáẠáááºááá·áºáááºáá±á¬ááºááŸá¯áá»á¬áž/áá»áŸá±á¬ááºááœáŸá¬áá»á¬ážááᯠáááá¯ááºááááºážá
- áá»ááºážáá¬áá±ážá á áºáá±ážááŒááºážá. áááºáá±á¬ááºááŸá¯ááŸá¬ááœá±ááœá±á·ááŸáááŸá¯á០ááŒááºáá¬áá±á¬ áááºáá±á¬ááºááŸá¯ááŒá áºáááºáá»á¬ážááẠáá±á¬ááºážááœááºááŒá®áž ááœááºáááºá¡ááœá¬ážá¡áá¬ááᯠáááºáá¶ááẠá¡áááºááá·áºááŒá áºááŒá®áá¬ážá áááºážááœáẠáá¯ááºáá±á¬ááºáá±áá±á¬ (á¥ááá¬- áá¯á¶á·ááŒááºááŸá¯/áá»ááºážáá¬áá±ážá á áºáá±ážááŒááºáž) ááŸáá·áº passive (á¥ááá¬- áá»ááºážáá¬áá±ážááŸáá·áºááá®ááœááºáá±á¬áááºáá±á¬ááºááŸá¯á¡ááŒá±á¡áá±áááœáŸááºááŒáá»ááºá¡ááŒá Ạ3 áááºááá¯áẠ5xx á¡ááŸá¬ážáá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááŒááºáž) áá»ááºážáá¬áá±ážá á áºáá±ážááŸá¯áá»á¬áž ááŸá áºáá¯áá¯á¶ážáá«áááºááá¯ááºáááºá
- áááºážááŒá±á¬ááºážáá±áž. REST áááºáá±á¬ááºááŸá¯áá áºáá¯á០"/foo" ááá¯á· áá±á¬ááºážááá¯áá»ááºááᯠáááºáá¶áááŸááá±á¬á¡áá«á áááºááá·áºáááºáá±á¬ááºááŸá¯á¡á á¯á¡áá±ážáá¶ááá¯á· áá±á¬ááºážááá¯áá»ááºááᯠáá±ážááá¯á·ááá·áºááááºážá
- Load áá»áááºááœááºáá»áŸá¬. áááºážááŒá±á¬ááºážááŒáá±á ááºááœáẠáááºáá±á¬ááºááŸá¯á¡á á¯á¡áá±ážááᯠááœá±ážáá»ááºááŒá®ážáááºááŸáá·áºá áááºááá·áºáááºáá±á¬ááºááŸá¯á¥ááá¬áᶠáá±á¬ááºážááá¯áá»ááºááᯠáá±ážááá¯á·ááá·áºááááºážá áááºá¡áá»áááºáá¯ááºááœá¬ážáá²á ááẠcircuit breaking settings áá²á·áá²á áá±á¬ááºážááá¯ááŸá¯ áá¡á±á¬ááºááŒááºáá«á áááºážááᯠááŒááºá ááºážááá·áºáá«ááá¬ážá
- á¡áá±á¬ááºá¡áá¬ážááŒááŒááºážááŸáá·áº ááœáá·áºááŒá¯áá»ááº. áááºáá¬áá±á¬áá±á¬ááºážááá¯ááŸá¯áá»á¬ážá¡ááœááºá áá±á«áºááá¯ááŸá¯áááºáá±á¬ááºááŸá¯ááᯠmTLS ááá¯á·ááá¯áẠá¡ááŒá¬ážááá¹ááá¬ážá¡áá»áá¯á·ááᯠá¡áá¯á¶ážááŒá¯á áá»áŸáá¯á·ááŸááºáááºá¹áá±áááŒáá·áº áá±á¬áºáá¯ááºááá¯ááº/ááœáá·áºááŒá¯ááá¯ááºáá«ááá¬ážá áááºážááᯠá¡ááá¡ááŸááºááŒá¯/ááœáá·áºááŒá¯áá«áá áááºáá±á¬ááºááŸá¯ááœáẠáá±á¬ááºážááá¯áá¬ážáá±á¬ áááºáááºááŸá¯ (á¡áá¯á¶ážááŸááº) ááᯠáá±á«áºááá¯ááœáá·áº ááá¯á·ááá¯áẠá¡áá±á¬ááºá¡áá¬ážáááá¯ááºáá¯á¶áá±á¬ áá¯á¶á·ááŒááºááŸá¯ááᯠááŒááºáá±ážááá·áºáá«ááá¬ážá
- ááŒááºááá¯ááºá áœááºáž. áá±á¬ááºážááá¯áá»ááºáá áºáá¯á á®á¡ááœáẠá¡áá±ážá áááºá á¬áááºážááá¬ážáá»á¬ážá ááŸááºáááºážáá»á¬áž/ááŸááºáááºážáá»á¬ážááŸáá·áº ááŒáá·áºáá±áá¬ážáá±á¬ ááŒá±áá¬áá¶áá±áá¬ááᯠá¡á±á¬áºááá±áá¬áá»á¬áž áá±á«áºáá±á«ááºáá¬áá±á¬á¡áá«ááœáẠááŒáá·áºáá±áá¬ážáá±á¬ áááºážááŒá±á¬ááºážá á®ážáááºážááŸá¯ááŸáá·áº á¡ááŸá¬ážááŸá¬ááŒááºááŒááºážááá¯ááºáᬠááŒá¿áá¬áá»á¬ážááᯠáá¬ážáááºááá¯ááºá á±ááẠáá¯ááºáá±ážááá·áºáá«áááºá
áá±áá¬áá±áá¬ááºááẠservice mesh ááŸá ááááºá¡áá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážá¡ááœáẠáá¬áááºááŸááááºá ááááºáá±á¬á·á proxy local to the service (sidecar) ááẠdata plane ááŒá áºáááºá áá áºáááºážááá¯ááá±á¬áº áá±áá¬áá±áá¬ááºááẠáááºáá±á¬ááºááŸá¯áá áºáá¯áᶠááá¯á·ááá¯áẠáá±ážááá¯á·ááá·áº ááœááºáááºáááºáá±á·ááºá»ááá¯ááºážááᯠá¡ááŒá±á¡áá±á¡á áá¯ááºááœáŸáá·áºááŒááºážá áááºááá·áºááŒááºážááŸáá·áº á á±á¬áá·áºááŒáá·áºááŒááºážá¡ááœáẠáá¬áááºááŸááááºá
ááááºážáá»á¯ááºáá±ážáá±áá¬ááº
áá±ááá¹áá ááá±á¬ááºá á®áá áºáá¯á០áá±áá¬áá¬ááºááœáẠáá±ážáá±á¬ááºáá±á¬ ááœááºááẠabstraction ááẠááŸá±á¬áºáááºáááº(?)á ááá¯á·áá±á¬áºá áááºáá±á¬ááºááŸá¯ B ááá¯á· "/foo" áááºážááŒá±á¬ááºážá¡ááŒá±á¬ááºáž ááá±á¬ááºá á®á áááºááá¯á·ááááááºážá ááá±á¬ááºá á®áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááŒáá·áº ááŒáá·áºááŸááºáá±áá±á¬ áááºáá±á¬ááºááŸá¯ááŸá¬ááœá±ááœá±á·ááŸáááá·áºáá±áá¬ááᯠáááºááá¯á·á¡áá¯á¶ážááŒá¯ááá¯ááºáááºáááºážá áááºáá»áááºááœááºáá»áŸá¬áá»áááºááŸáááŒááºážá á¡áá»áááºáá¯ááºááŒááºážá áááºáááºážáá±á¬ááºááŒááºážá áááºááŒáá·áº áá±á¬ááºáá»á¬ážááᯠáááºááá¯á·ááŒááºáááºáááºááŸááºáá¬ážááááºážá á¡ááŒá¬/á¡á áááºážáááºážáááºáž ááá¯á·ááá¯áẠáá¬áá¬ááŸááá±á¬ á¡ááœá¬ážá¡áá¬á¡áá°ážá¡ááŒá±á¬ááºážáááºážáááºážááᯠá¡áá¯á¶ážááŒá¯á á¡ááá®áá±ážááŸááºážááᯠáááºáááºááá¯á· ááŒáá·áºáá»ááºá¡áá¯á¶ážááŒá¯ááááºážá á áá áºáá áºáá¯áá¯á¶áž á¡áá±á¬ááºá¡áá¬ážá áá á áºááŒááºážááŸáá·áº ááœáá·áºááŒá¯áá»ááºáááºáááºáá»á¬ážááᯠáááºáá°á á á®á ááºáááºááŸááºáá±ážááááºážá
á¡áááºáá«á¡áá¬áá»á¬ážá¡á¬ážáá¯á¶ážááẠservice mesh áááááºážáá»á¯ááºááŸá¯áá±áá¬ááºáááááºážáá»á¯ááºááŸá¯á¡á±á¬ááºááœááºááŸááááºá ááááºážáá»á¯ááºáá±ážáá±áá¬ááºááẠáá®ážááŒá¬ážááá¯ááºáá¶áá²á· proxy á¡á á¯á¡áá±ážááá¯áá°ááŒá®áž áááºážááá¯á·á¡á¬áž ááŒáá·áºáá±ááá·áºá áá áºá¡ááŒá ẠááŒá±á¬ááºážáá²áá±ážáááºá.
áá±áá¬áá±áá¬ááºááŸáá·áº ááááºážáá»á¯ááºáá±ážáá±áá¬ááºá áá®ážááŒá¬ážááá±á¬ááá¬ážáá»á¬ážááᯠáááºážááá¬ááŸááºáá»á¬ážá áœá¬á ááŸá¬ááœá±ááœá±á·ááŸááááŒááºážá¡ááŒá±á¬ááºážáááºážááŸá¬ áá°á¡áá»á¬ážá á¯á¡ááœáẠááááºážáá»á¯ááºáá±ážáá±áá¬ááºááẠááá¯ááºáá¶ááŒá¬ážááŒá áº/áá¬ážááááºáá±á¬áºáááºáž áá±áá¬áá±áá¬ááºááẠáááºážááŸá®ážáá»áœááºážáááºáá±á¬ááŒá±á¬áá·áºááŒá áºáááºáᯠáááºáá«áááºá áá»áœááºá¯ááºááá¯á·ááẠáá¯ááºááá¯ááºážááá¯ááºáá¬ááœááºááẠrouter áá»á¬ážááŸáá·áº switches áá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáá±áááºááŸá¬ ááŒá¬áá«ááŒá®á áááºáááºáá»á¬áž/áá±á¬ááºážááá¯áá»ááºáá»á¬ážááẠá¡ááŸáẠA á០á¡ááŸáẠB ááá¯á· ááœá¬ážáááºááá¯á¡ááºááŒá±á¬ááºážááŸáá·áº áááºážááá¯áá¯ááºáá±á¬ááºááẠáá¬á·ááºáá²ááŸáá·áº áá±á¬á·ááºáá²ááºááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á·áá¬ážáááºáá«áááºá áá±á¬á·ááºáá²ááºááá±á¬ááºá á®áá»á¬ážá áá»áá¯ážáááºáá áºáá»á¬ážááẠáá»áœááºá¯ááºááá¯á·á¡áá»áááºááŒá¬ááŒáá·áºá áœá¬á¡áá¯á¶ážááŒá¯áá²á·ááá·áº áááááá¬áá»á¬ážá áááºá á®áá¬ážááŸááºážáá»á¬ážááŒá áºáááºá
áá¯á¶ 2: áá°áá¬ážááááºážáá»á¯ááºááŸá¯áá±áá¬ááº
ááá¯á·áá±á¬áºáááºážá ááœááºáááºá¡á±á¬áºááá±áá¬á¡áá»á¬ážá
á¯ááẠá€á
áá
áºáá¡á
áááºá¡ááá¯ááºážááᯠáááºááá·áºáááºážááá¬á¡á
áááºá¡ááá¯ááºážááŸáá·áºáá»áŸ áááºá
ááºááŸá¯áááŒá¯ááá¯ááºáá±á¬áºáááºáž ááááºážáá»á¯ááºáá±áá¬ááºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯áá±áááºááŸá¬ ááŒá¬ááŒáá·áºáá±ááŒá®ááŒá
áºáááºá á¡ááŒá±á¬ááºážááŒáá»ááºá ááá¯ážááŸááºážáá«áááº
ááá±á·áá±ááºááœáẠá¡áá¯á¶ážááŒá¯áá±áá±á¬ ááááºážáá»á¯ááºáá±áá¬ááºá¡áá»á¬ážá
á¯ááŸá¬ áá»áœááºá¯ááºááá¯á·ááŒá
áºáááºá.
á¡áá±á«áº áá¯á¶ á "áá°áá¬ážááááºážáá»á¯ááºááŸá¯áá±áá¬ááº" áá¯áá±á«áºáááºááá¯ááŒááááºá á€á¡áá¯á¶ážáá»ááŸá¯ á¡áá»áá¯ážá¡á á¬ážááœááºá á¡ááœááºá¡áá¯á¶ážáá»á¬ážáá²ááŒá áºáá±á¬á ááá¯ážááœá¬ážáá±á¬ áá°áá¬ážá¡á±á¬áºááá±áá¬ááẠscripts áá»á¬ážááŸáá áºááá·áº ááŒá áºááá¯ááºáá»á±ááŸááá±á¬ áá¯á¶á á¶áá»á¬ážááᯠáááºáá®ážáá±ážááŒá®áž proxy á¡á¬ážáá¯á¶ážááá¯á· á¡áá°ážáá¯ááºáááºážá ááºá¡áá»áá¯á·ááŸáááá·áº ááŒáá·áºáá»ááºáá»áá¬ážáá«áááºá ááá¯á·áá±á¬áẠááá±á¬ááºá á®áá»á¬ážááẠá€ááœá²á·á ááºážáá¯á¶ááᯠá áááºá¡áá¯á¶ážááŒá¯ááŒá®áž ááœááºážáá¶áá¬ážáá±á¬ áááºáááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áá±áá¬áá±áá¬ááºááᯠá áááºáá¯ááºáá±á¬ááºáááºá
áá¯á¶ 3- á¡ááá·áºááŒáá·áºáááºáá±á¬ááºááŸá¯ááœááºááááºážáá»á¯ááºáá±ážáá±áá¬ááº
á¡áá±á«áº áá¯á¶ á áááºáá±á¬ááºááŸá¯ mesh á "ááá¯ážáá»á²á·" ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºááᯠááŒááááºá áááºážááœáẠá¡á±á¬ááºáá« á¡á áááºá¡ááá¯ááºážáá»á¬áž áá«áááºáá«áááºá
- áá°áá¬áž: á áá áºáá áºáá¯áá¯á¶ážááŸáá·áºáááºáááºááŒá®áž á¡ááá·áºááŒáá·áºáá¬ážáá±á¬ áá¯á¶ážááŒááºáá»ááºáá»á¬ážáá»áá±á¬ (á áááºááá¯ážáááºážáááºáᯠáá»áŸá±á¬áºááá·áºáá±á¬) áá¯áá¹ááá¯ááºáá áºáŠážááŸááá±áá±ážáááºá
- áá±áá¬áẠUI ááᯠááááºážáá»á¯ááºáá«á: áá°áá
áºáŠážááẠá
áá
áºá¡á¬áž ááááºážáá»á¯ááºáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áá°á á¡ááºáá¬áá±á·á
Ạá¡áá»áá¯ážá¡á
á¬ážá¡áá»áá¯á·ááŸáá·áº á¡ááŒááºá¡ááŸáẠáá¯á¶á·ááŒááºáááºá áááºážááẠáááºáá±á«áºáááºá á¡áááá·áºáá±ážá
á¬ááŒá±á¬ááºáž á¡ááá®áá±ážááŸááºáž (CLI) ááá¯á·ááá¯áẠá¡ááŒá¬ážáá±á¬ á¡ááºáá¬áá±á·á
áºá¡áá»áá¯á· ááŒá
áºááá¯ááºáááºá á¡áá¯á¶ážááŒá¯áá°ááŒá¬ážáá¶ááᯠá¡áá¯á¶ážááŒá¯á á¡á±á¬áºááá±áá¬ááẠááá¹áá¬áá¯á¶ážááá¯ááºáᬠá
áá
áºááœá²á·á
ááºážáá¯á¶ááá¯ááºáᬠááá·áºáááºáá±á¬ááºáá»á¬ážááᯠáááºáá±á¬ááºááœáá·áºááŸááááº-
- ááŒáá·áºáá»ááºááááºážáá»á¯ááºááŸá¯á á¡ááŒá¬/á¡á áááºáž ááŸáá·áº/ááá¯á·ááá¯áẠáááŒááºážááŒááºáž áááºážááŒá±á¬ááºážááŒá±á¬ááºážááŒááºážá
- á¡áá±á¬ááºá¡áá¬ážá áá á áºááŒááºážááŸáá·áº ááœáá·áºááŒá¯áá»ááºááœá±ážáá»ááºá áá¬áá»á¬áž
- á¥ááá¬á¡á¬ážááŒáá·áº á¡ááá®áá±ážááŸááºáž A á "/foo" ááŸáá·áºáááºáááºááá·áº á¡áá»ááºá¡áááºááᯠáá±á¬ááºážááá¯ááá·áºá¡áá« áááºážááŒá±á¬ááºážáááºááŸááºááŒááºáž ááá¬ážáááºááŸááºáá»ááºáá»á¬áž
- á¡áá»áááºáá¯ááºááŒááºážá áááºá ááºážááŒááºážá circuit breaking áááºáááºáá»á¬áž á áááºááá¯á·áá²á·ááá¯á·áá±á¬ áá»áááºááœááºáá»áŸá¬áááºáááºáá»á¬ážááᯠááœá²áá»áá«á
- á¡áá¯ááºáá»áááºááá¬ážáá±ážááœá²áá°: áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠKubernetes ááá¯á·ááá¯áẠNomad áá²á·ááá¯á·áá±á¬ á¡áá»áááºááá¬ážááœá²ááŒááºáž/á á¯á ááºážááŸá¯á áá Ạá¡áá»áá¯ážá¡á á¬ážá¡áá»áá¯á·ááŸáá áºááá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá±á«áºááœáẠáá¯ááºáá±á¬ááºáá«áááºá á¡á á®á¡á ááºááœá²áá°ááẠáááºážááá±ááᶠááá±á¬ááºá á®ááŸáá·áºá¡áá° áááºáá±á¬ááºááŸá¯ááᯠáááºááẠáá¬áááºááŸááááºá
- áááºáá±á¬ááºááŸá¯ááŸá¬ááœá±ááœá±á·ááŸáááŸá¯. á¡á á®á¡á ááºááœá²áá°ááẠáááºáá±á¬ááºááŸá¯ááŒá áºáááºáá»á¬ážááᯠá áááºááŒá®áž áááºááá·áºááá·áºá¡áá«á áááºážááẠáááºáá±á¬ááºááŸá¯ááŸá¬ááœá±ááœá±á·ááŸáááŸá¯á áá áºááá¯á· áá»ááºážáá¬áá±ážá¡ááŒá±á¡áá±ááᯠá¡á á®áááºáá¶áááºá
- Sidecar proxy configuration APIs - áá±ááá¹áá ááá±á¬ááºá á®áá»á¬ážááẠá¡á±á¬áºááá±áá¬ááŒá¬ážáááºá áœááºáááºááŸá¯áááŸááá² áá±á¬ááºáá¯á¶ážááœáẠáááááºáááºážááŒá áºáá±á¬ áá±á¬áºáááºááᯠá¡áá¯á¶ážááŒá¯á á¡áá»áá¯ážáá»áá¯ážáá±á¬ á áá áºá¡á áááºá¡ááá¯ááºážáá»á¬ážá០á¡ááŒá±á¡áá±ááᯠáááºááŒáœá áœá¬ áá¯ááºáá°áááºá áááºááŸááááºáááºáá±ááá·áº áááºáá±á¬ááºááŸá¯ááŒá áºáááºáá»á¬ážááŸáá·áº áá±áááá¯ááºáᬠááá±á¬ááºá á®áá¬áá¬áá»á¬áž áá«áááºáá±á¬ á áá áºáá áºáá¯áá¯á¶ážááẠáá±á¬ááºáá¯á¶ážááœáẠáá±áá áá áºáá áºáá¯á¡ááŒá Ạáá±á«ááºážá ááºááœá¬ážáá«áááºá Envoy á universal data plane API ááẠáááºááœá±á·ááœáẠáááºááá¯á·á¡áá¯ááºáá¯ááºááŒá±á¬ááºáž á¥ááá¬áá áºáá¯ááŒá áºáááºá
á¡ááŒá±áá¶á¡á¬ážááŒáá·áºá ááááºážáá»á¯ááºáá±ážáá±áá¬ááºá áááºááœááºáá»ááºááŸá¬ áá±áá¬áá±áá¬ááºá០áá±á¬ááºáá¯á¶ážááœáẠáááºáá¶ááá·áºáá°áá«áááᯠáááºááŸááºáááºááŒá áºáááºá ááá¯ááá¯á¡ááá·áºááŒáá·áºáá±á¬ ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºáá»á¬ážááẠá¡áá»áá¯á·áá±á¬á áá áºáá»á¬ážá á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠá¡á±á¬áºááá±áá¬á០áááºááŸá¬ážáááºááŒá áºááŒá®áž áááºážááá¯á·ááẠááŸááºáááºá áœá¬á¡áá¯ááºáá¯ááºáá«á áá°ááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºááŸá¯áááºážááẠááá¯á¡ááºáá«áááºá...
áá±áá¬áá±áá¬ááºááŸáá·áº ááááºážáá»á¯ááºáá±ážáá±áá¬ááºá áá±áá¬áá±áá¬ááºááŸáá·áº ááááºážáá»á¯ááºááŸá¯áá±áá¬áẠá¡ááŸá áºáá»á¯ááº
- áááºáá±á¬ááºááŸá¯ mesh data áá±áá¬ááºâ á áá áºá¡ááœááºážááŸá áááºáááº/áá±á¬ááºážááá¯ááŸá¯ááá¯ááºážá¡áá±á«áº áááºáá±á¬ááºááŸá¯ááŸááááºá á¡ááá®áá±ážááŸááºáž/áááºáá±á¬ááºááŸá¯ááŸá¬ááœá±ááœá±á·ááŸáááŸá¯á áá»ááºážáá¬áá±ážá á áºáá±ážááŒááºážá áááºážááŒááŒááºážá áá»áááºááœááºáá»áŸá¬ááŸáááŒááºážá á¡áá±á¬ááºá¡áá¬ážá áá á áºááŒááºáž/ááœáá·áºááŒá¯áá»ááºááŸáá·áº ááŒáá·áºááŸá¯ááá¯ááºááŸá¯ááá¯á·á¡ááœáẠáá¬áááºááŸááááºá
- áááºáá±á¬ááºááŸá¯ááœááºááááºážáá»á¯ááºáá±ážáá±áá¬ááº: áááºáá±á¬ááºááŸá¯ááœááºáááºá¡ááœááºáž áááºáááºáá±ááá·áº áá±áá¬áá±áá¬ááºáá»á¬ážá¡á¬ážáá¯á¶ážá¡ááœáẠáá°áá«áááŸáá·áº ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááᯠáá¶á·ááá¯ážáá±ážáááºá á áá áºááŸá áááºááá·áºáááºáá±á·áá»áºáá»á¬áž/áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááá¯áá»áŸ ááááá«á ááááºážáá»á¯ááºáá±ážáá±áá¬ááºááẠáá±áá¬áá±áá¬ááºá¡á¬ážáá¯á¶ážááᯠááŒáá·áºáá±ááá·áºá áá áºá¡ááŒá ẠááŒá±á¬ááºážáá²áá±ážáááºá
áááºááŸá ááá±á¬áá»ááºááŸá¯áááºáž
á¡áááºáá±á¬áºááŒáá« ááŸááºážáááºážáá»ááºááᯠáá¬ážáááºááŒá®ážá áááºáá±á¬ááºááŸá¯ mesh ááá±á¬áá»ááºá áááºááŸáá¡ááŒá±á¡áá±ááᯠááŒáá·áºááŒáá«á áá¯á·á
- áá±áá¬áá±áá¬ááºááœá±Linkerdá NGINXá HAProxyá Envoyá Traefik
- áá±áá¬ááºáá»á¬ážááᯠááááºážáá»á¯ááºáá«á: Istioá Nelsoná SmartStack
á¡áááºáá±á¬áºááŒáá« ááŒá±ááŸááºážáá»ááºáá áºáá¯á á®ááᯠáááºááŸáá¯ááºážá áœá¬ ááœá²ááŒááºážá áááºááŒá¬ááŒáá·áºááá·áºá¡á á¬ážá ááá¯á¡áá»áááºááœáẠáá±áá áá áºá¡ááœááºáž ááŸá¯ááºááœá±ážááŸá¯áá»á¬ážá áœá¬ááᯠááŒá áºá á±áááºáᯠáá»áœááºá¯ááºáá¯á¶ááŒááºááá·áº á¡áá»ááºá¡áá»áá¯á·ááᯠá¡áá»ááºážáá»á¯áẠááŒá±á¬ááŒáá«áááºá
Linkerd ááẠ2016 á¡á á±á¬ááá¯ááºážááœáẠservice mesh á¡ááœáẠááááá¯á¶áž data plane proxy servers áá»á¬ážáá²á០áá áºáá¯ááŒá áºááŒá®áž service mesh design model ááᯠáááááŒá¯ááá á±ááẠáá±á¬ááºážáá±á¬á¡áá¯ááºáá áºáᯠáá¯ááºáá±á¬ááºáá²á·áááºá ááá¯á·áá±á¬áẠ6 áááá·áºá¡ááŒá¬ááœáẠEnvoy ááẠLinkerd ááŸáá·áºáá°ážáá±á«ááºážáá²á·ááẠ(2015 áá¯ááŸá áºááŸá±á¬ááºážááá¯ááºážááááºážá Lyft ááŸáá·áº á¡áá°ááŸááá²á·áá±á¬áºáááºáž)á Linkerd ááŸáá·áº Envoy ááá¯á·ááẠservice meshes áá»á¬ážááᯠááœá±ážááœá±ážáá¬ááœáẠá¡áá»á¬ážáá¯á¶ážáá±á¬áºááŒáá±á·ááŸááá±á¬ ááá±á¬áá»ááºááŸá áºáá¯ááŒá áºáááºá
Istio ááᯠáá±á 2017 ááœááºááŒá±ááŒá¬áá²á·áááºá Istio ááá±á¬áá»ááºá áááºááŸááºážáá»ááºáá»á¬ážááẠááŒááá¬ážááá·áº ááá¯ážáá»á²á·ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºááŸáá·áº á¡ááœááºáááºáá°áááºá áá¯á¶ á. Istio á¡ááœáẠá¡áá°ážááá¯ááºá á¬ážááŸááºááẠáá°áááºážááá±á¬ááºá á®ááŒá áºáááºá ááá¯á·ááŒá±á¬áá·áº Istio ááẠááááºážáá»á¯ááºáá±ážáá±áá¬ááºááŒá áºááŒá®áž Envoy ááẠáá±áá¬áá±áá¬ááºááŒá áºáááºá á¡áá»áááºááá¯á¡ááœááºáž Istio ááẠá áááºááŸá¯ááºááŸá¬ážááŸá¯áá»á¬ážá áœá¬ááᯠáá¯ááºáá±ážáá²á·ááŒá®áž á¡ááŒá¬ážáá±á¬ áá±áá¬áá±áá¬ááºáá»á¬ážááẠEnvoy (Linkerd ááŸáá·áº NGINX ááŸá áºáá¯á áá¯á¶ážááẠIstio ááŸáá·áº áá±á«ááºážá ááºážááŸá¯ááᯠááá¯ááºááŒáá²á·áááº) á¡ááœáẠá¡ááŒá¬ážáá±áá¬áá±áá¬ááºáá»á¬áž á áááºáá±á«ááºážá ááºáá²á·áááºá áá°áá®áá±á¬ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºá¡ááœááºáž ááá°áá®áá±á¬áá±áá¬áá±áá¬ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áºá¡áá»ááºááŸá¬ ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºááŸáá·áº áá±áá¬áá±áá¬ááºááá¯á·ááẠáááºážáááºážááŒááºááŒáẠááœá²áá±áááºááá¯ááºááŒá±á¬ááºáž ááá¯ááá¯ááŒááºážááŒá áºáááºá Envoy á áá±áá°áá»áá±áá¬áá±áá¬áẠAPI áá²á·ááá¯á·áá±á¬ API áá áºáá¯ááẠá áá áºá á¡á áááºá¡ááá¯ááºážááŸá áºáá¯ááŒá¬ážááœáẠáá±á«ááºážáá°ážááœá²á·á ááºážááá¯ááºáááºá
Nelson ááŸáá·áº SmartStack ááá¯á·ááẠááááºážáá»á¯ááºááŸá¯áá±áá¬ááºááŸáá·áº áá±áá¬áá±áá¬ááºááᯠááá¯ááºážááŒá¬ážáá¯á¶ááŒááẠáá°áá®áá±ážáá«áááºá Nelson ááẠEnvoy ááᯠáááºážá proxy á¡ááŒá Ạá¡áá¯á¶ážááŒá¯áᬠHashiCorp stack ááᯠá¡ááŒá±áá¶á service mesh á¡ááœáẠáá¯á¶ááŒááºá áááºáá»ááá±á¬ ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºááᯠáááºáá±á¬ááºáááºá ááŒá±ááá¯á¶áž á áá¬ááœá±á SmartStack ááẠáááºáá±á¬ááºááŸá¯ meshes ááŸáá¯ááºážáá áºáá áºáá¯á ááááá¯á¶ážááŒá áºáá±á¬ááºážááŒá áºááá¯ááºáááºá SmartStack ááẠHAProxy ááá¯á·ááá¯áẠNGINX á¡áá®ážáá áºááá¯ááºááœáẠááááºážáá»á¯ááºááŸá¯áá±áá¬ááºááᯠáááºáá±á¬ááºááŒá®áž áá±áá¬áá±áá¬ááºá០áááºáá±á¬ááºááŸá¯ mesh á០ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºááᯠááá¯ááºážááŒááºááá¯ááºá áœááºážááᯠááá¯ááºááŒáááºá
áááºáá±á¬ááºááŸá¯ mesh áá«áá±á¬ ááá¯ááºáááá¯áá¬ážáá
áºáááá¯áá¬ááẠá¡á¬áá¯á¶á
á°ážá
áá¯ááºááŸá¯ ááá¯áá»á¬ážáá¬áá±ááẠ(ááŸááºááŸáá«!)á ááá±á¬áá»ááºáá»á¬ážááŸáá·áº áá±á¬ááºážáá»áá°áá»á¬ážááẠá€áŠážáááºáá»ááºááœáẠáá¯ááºáá±á¬ááºááẠááá¯áá»á¬ážáá¬áá«áááºá áá¬ááá·áºááŸá
áºá¡áááºážáááºá¡ááœááºážááŸá¬ data plane áá²á· control plane ááŸá
áºáá¯á
áá¯á¶ážááŸá¬ áááºážáá
áºáá®ááœááºááŸá¯ááœá± á¡áá»á¬ážááŒá®ážááœá±á·áá¬áááŒá®áž ááá°áá®áá²á· á¡á
áááºá¡ááá¯ááºážááœá±ááᯠáááºáá±á¬ááºážáá±á«ááºážá
ááºáá¬ážáá«áááºá á¡áá¯á¶ážá
áœááºá¡á¬ážááŒáá·áºá á¡á±á¬áºááá±áá¬á¡ááœáẠmicroservice áááá¯áá¬áááºáá¬ááẠááá¯ááá¯ááœáá·áºáááºážááŒá®áž ááŸá±á¬áºáááºáá±á¬ (?) ááŒá
áºáá¬ááá·áºáááºá
á
áááºááá¯áá¬ááœá± áá»áŸá±á¬á·áááºážáá¬áááºááá¯á· áá»áŸá±á¬áºááá·áºáá«áááºá
áá±á¬á·áá°ááŸá¯áá»á¬áž
- áááºáá±á¬ááºááŸá¯ááœááºáá áºáá¯ááœáẠááá°áá®áá±á¬ á¡á áááºá¡ááá¯ááºážááŸá áºáá¯áá«áááºáááº- áá±áá¬áá±áá¬ááºááŸáá·áº ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºá á¡á áááºá¡ááá¯ááºážááŸá áºáá¯á áá¯á¶áž ááá¯á¡ááºááŒá®áž áááºážááá¯á·ááá«áá² á áá áºááẠá¡áá¯ááºáááŒá áºáá«á
- áá°ááá¯ááºážá ááááºážáá»á¯ááºáá±ážáá±áá¬ááºáá²á· áááºážááŸá®ážááŒááŒá®ážá áá®á¡áá»áááºááŸá¬ ááááºážáá»á¯ááºáá±ážáá±áá¬ááºáᬠáááºááŒá áºááá¯ááºáá«áááºá
- áá±áá¬áá±áá¬ááºáá»á¬ážá¡á¬ážáá¯á¶ážááẠá¡ááºá¹áá«áááºáá»á¬ážá á áœááºážáá±á¬ááºáááºá ááŒááºáááºáááºááŸááºááá¯ááºááŸá¯ááŸáá·áº ááá¯ážáá»á²á·ááá¯ááºááŸá¯ááá¯á·á¡áá±á«áº ááŒáá¯ááºááá¯ááºááŒáááºá
- ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºáá»á¬ážá¡á¬ážáá¯á¶ážááẠá¡ááºá¹áá«áááºáá»á¬ážá ááŒááºáááºáááºááŸááºááá¯ááºááŸá¯á ááá¯ážáá»á²á·ááá¯ááºááŸá¯ááŸáá·áº á¡áá¯á¶ážááŒá¯áááœááºáá°ááŸá¯ááá¯á·ááœáẠá¡áá»ááºážáá»ááºáž ááŒáá¯ááºááá¯ááºááŒáááºá
- ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºáá áºáá¯ááœáẠáá±áá¬áá±áá¬ááºáá»á¬ážá áœá¬ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááẠááŸááºáááºáá±á¬ abstractions ááŸáá·áº APIs áá»á¬ážáá«ááŸááááºá
source: www.habr.com