ΠΡΠΈΠ²Π΅Ρ, Π₯Π°Π±Ρ! ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ Π²Π°ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ
Π ΡΡΠΎΡ ΡΠ°Π· Β«Π·Π°Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π²Π΅Π»ΠΎΡΡΒ» ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² service mesh, data plane ΠΈ control plane. ΠΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΡΡΠΈΠΌ ΠΊ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Β«Π Π½ΡΠΆΠ½ΠΎ Π»ΠΈ ΠΎΠ½ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅?Β».
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ΄Π΅Ρ Β«Π‘Π΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (Service mesh)Β» ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
Π΄Π²ΡΡ
Π»Π΅Ρ (ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΡΡΠ°ΡΡΡ ΠΎΡ 10 ΠΎΠΊΡΡΠ±ΡΡ 2017), Π° ΡΠΈΡΠ»ΠΎ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ Π²ΠΎΠ·ΡΠΎΡΠ»ΠΎ, Ρ ΡΠ²ΠΈΠ΄Π΅Π» ΡΠΎΡΠ°Π·ΠΌΠ΅ΡΠ½ΡΠΉ ΡΠΎΡΡ ΠΏΡΡΠ°Π½ΠΈΡΡ ΡΡΠ΅Π΄ΠΈ Π²ΡΠ΅Π³ΠΎ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
Π‘ΠΈΡΡΠ°ΡΠΈΡ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΡΠΈΡΠΌΠΈ ΡΠ²ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π½Π°ΠΏΠΈΡΠ°Π» Π² ΠΈΡΠ»Π΅:
ΠΡΡΠ°Π½ΠΈΡΠ° Ρ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΡ (service mesh) β 1: Linkerd ~ = Nginx ~ = Haproxy ~ = Envoy. ΠΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ Π½Π΅ ΡΠ°Π²Π΅Π½ Istio. Istio β ΡΡΠΎ Π½Π΅ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΎΠ΅. 1 /
ΠΠ΅ΡΠ²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data planes). Π‘Π°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΎΠ½ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ. ΠΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ Π½Π° ΡΡΠΎ-ΡΠΎ Π±ΠΎΠ»ΡΡΠ΅Π΅. 2 /
Istio ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ°ΡΡΠΈ Π²ΠΌΠ΅ΡΡΠ΅ Π²ΠΌΠ΅ΡΡΠ΅. ΠΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ»ΠΎΠΉ. /ΠΊΠΎΠ½Π΅Ρ
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠ²ΠΈΡΠ°Ρ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² (Linkerd, NGINX, HAProxy, Envoy ΠΈ Istio), Π½ΠΎ, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, Π²Π²ΠΎΠ΄ΡΡΡΡ ΠΎΠ±ΡΠΈΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane), ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (service mesh) ΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane). Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ Ρ ΡΠ΄Π΅Π»Π°Ρ ΡΠ°Π³ Π½Π°Π·Π°Π΄ ΠΈ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΡΡΠΎ Ρ ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ ΠΏΠΎΠ΄ ΡΠ΅ΡΠΌΠΈΠ½Π°ΠΌΠΈ Β«ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ (data plane)Β» ΠΈ Β«ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane)Β» Π½Π° ΠΎΡΠ΅Π½Ρ Π²ΡΡΠΎΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ ΡΠ΅ΡΠΌΠΈΠ½Ρ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΌ Π² ΡΠ²ΠΈΡΠ°Ρ .
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ ΡΠ΅ΡΡ (What is a service mesh, really)?
Π ΠΈΡΡΠ½ΠΎΠΊ 1: ΠΠ±Π·ΠΎΡ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (Service mesh overview)
Π ΠΈΡΡΠ½ΠΎΠΊ 1 ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (service mesh) Π½Π° ΡΠ°ΠΌΠΎΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅. ΠΡΡΡ ΡΠ΅ΡΡΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° (A-D). ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠ²ΡΠ·Π°Π½ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΠΊΡΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. ΠΠ΅ΡΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΡΠ°ΡΠΈΠΊ (HTTP, REST, gRPC, Redis ΠΈ Ρ. Π.) ΠΎΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π·Π½Π°Π΅Ρ ΠΎ ΡΠ΅ΡΠΈ Π² ΡΠ΅Π»ΠΎΠΌ ΠΈ Π·Π½Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠΊΡΠΈ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΠ΅ΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π±ΡΠ»Π° ΡΠ΄Π°Π»Π΅Π½Π° ΠΎΡ ΡΠ΅ΡΠ²ΠΈΡΠ°.
ΠΠ»ΠΎΡΠΊΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ (Data plane)
Π ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (service mesh) ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ:
- ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (Service discovery). ΠΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ/ΡΠ»ΡΠΆΠ±Ρ/ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ?
- ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ (Health checking). Π―Π²Π»ΡΡΡΡΡ Π»ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (service discovery), ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΡΠΌΠΈ ΠΈ Π³ΠΎΡΠΎΠ²Ρ Π»ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΡΠ°ΡΠΈΠΊ? ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠ°ΠΊ Π°ΠΊΡΠΈΠ²Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΡΠ²Π΅ΡΠ° / healthcheck), ΡΠ°ΠΊ ΠΈ ΠΏΠ°ΡΡΠΈΠ²Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ 3 ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ 5xx ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π΅Π·Π΄ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°) ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ.
- ΠΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ (Routing). ΠΠΎΠ»ΡΡΠΈΠ² ΠΎΡ ΡΠ΅ΡΠ²ΠΈΡΠ° REST Π·Π°ΠΏΡΠΎΡ ΠΊ «/foo», Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π·Π°ΠΏΡΠΎΡ?
- ΠΠ°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° Π½Π°Π³ΡΡΠ·ΠΊΠΈ (Load balancing). ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ ΠΊΠ»Π°ΡΡΠ΅Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°, Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ Π·Π°ΠΏΡΠΎΡ? Π‘ ΠΊΠ°ΠΊΠΈΠΌ ΡΠ°ΠΉΠΌΠ°ΡΡΠΎΠΌ? Π‘ ΠΊΠ°ΠΊΠΈΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΎΠ±ΡΡΠ²Π° ΡΠ΅ΠΏΠΈ (circuit breaking)? ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ Π½Π΅ ΡΠ΄Π°Π»ΡΡ, Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ?
- ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ (Authentication and authorization). ΠΠ»Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΡΠ΅ΡΠ²ΠΈΡ Π±ΡΡΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΠΎΠ·Π½Π°Π½/Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ mTLS ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°? ΠΡΠ»ΠΈ ΠΎΠ½ ΠΎΠΏΠΎΠ·Π½Π°Π½/Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π»ΠΈ Π΅ΠΌΡ Π²ΡΠ·ΡΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ (endpoint) Π² ΡΠ΅ΡΠ²ΠΈΡΠ΅ ΠΈΠ»ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ Π½Π΅Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ?
- ΠΠ°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡ (Observability). ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΆΡΡΠ½Π°Π»Ρ/Π»ΠΎΠ³ΠΈ ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ.
ΠΠ° Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΠΏΡΠ½ΠΊΡΡ Π² ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (service mesh), ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ (data plane). ΠΠΎ ΡΡΡΠΈ, Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° (sidecar) ΠΏΡΠΎΠΊΡΠΈ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ Π΄Π°Π½Π½ΡΡ (data plane). ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ (data plane) ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΡΠ»ΠΎΠ²Π½ΡΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ, ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΡ ΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ΅ΡΠ΅Π²ΡΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΡΡΠ»Π°Π΅ΡΡΡ Π² ΡΠ΅ΡΠ²ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΡΡΠ»Π°Π΅ΡΡΡ ΠΈΠ· Π½Π΅Π³ΠΎ.
ΠΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (The control plane)
Π‘Π΅ΡΠ΅Π²Π°Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane), ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ»ΡΠ΅Π±Π½ΠΎΠΉ (?). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ·Π½Π°Π΅Ρ ΠΎ ΠΌΠ°ΡΡΡΡΡΠ΅ «/foo» ΠΊ ΡΠ΅ΡΠ²ΠΈΡΡ B? ΠΠ°ΠΊ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (service discovery), ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΎΠΊΡΠΈ-Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ? ΠΠ°ΠΊ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ, ΡΠ°ΠΉΠΌΠ°ΡΡΠ° (timeout), ΠΎΠ±ΡΡΠ²Π° ΡΠ΅ΠΏΠΈ (circuit breaking) ΠΈ Ρ.Π΄.? ΠΠ°ΠΊ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠ½Π΅Π³ΠΎ/Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ (blue/green) ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΠ°ΡΠΈΠΊΠ°? ΠΡΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ?
ΠΡΠ΅ Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΏΡΠ½ΠΊΡΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (service mesh). ΠΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π°Π±ΠΎΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Π±Π΅Π· ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡ Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΌΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane) ΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane), Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π»ΡΠ΄Π΅ΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ Π·Π½Π°ΠΊΠΎΠΌΠ°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΆΠ΅ΡΠΎΠ΄Π½Π°/Π½Π΅ΠΏΠΎΠ½ΡΡΠ½Π°. ΠΡ ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠ΅ΡΠ΅Π²ΡΠΌΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ°ΠΌΠΈ ΠΈ ΠΊΠΎΠΌΠΌΡΡΠ°ΡΠΎΡΠ°ΠΌΠΈ. ΠΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΡ/Π·Π°ΠΏΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ΄ΡΠΈ ΠΈΠ· ΠΏΡΠ½ΠΊΡΠ° Π Π² ΠΏΡΠ½ΠΊΡ Π, ΠΈ ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ΅ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΏΡΠΎΠΊΡΠΈ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΌΠΎΠ΄Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π ΠΈΡΡΠ½ΠΎΠΊ 2: Π§Π΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (Human control plane)
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΌΡ ΡΠΆΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane), Ρ
ΠΎΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ΅ΡΠ΅Π²ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΌΠΎΠ³ΡΡ Π½Π΅ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΡ ΡΠ°ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ. ΠΡΠΈΡΠΈΠ½Π° ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠ°:
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠ΅ΠΉ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) -ΡΡΠΎβ¦ ΠΌΡ.
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ 2 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΡΠΎ, ΡΡΠΎ Ρ Π½Π°Π·ΡΠ²Π°Ρ Β«Π§Π΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (Human control plane)Β». Π ΡΡΠΎΠΌ ΡΠΈΠΏΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ Π΅ΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ, ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ²Π°ΡΠ»ΠΈΠ²ΡΠΉ, ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ β ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² β ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π΅Ρ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π½Π° Π²ΡΠ΅Ρ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ . ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΎΠΊΡΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane) Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ.
Π ΠΈΡΡΠ½ΠΎΠΊ 3: Π Π°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΡ (Advanced service mesh control plane)
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ 3 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Β«ΡΠ°ΡΡΠΈΡΠ΅Π½Π½Π°ΡΒ» ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (service mesh). ΠΠ½Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ:
- Π§Π΅Π»ΠΎΠ²Π΅ΠΊ (The human): ΠΡΠ΅ Π΅ΡΠ΅ Π΅ΡΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ (Π½Π°Π΄Π΅ΡΡΡ, ΠΌΠ΅Π½Π΅Π΅ ΡΠ΅ΡΠ΄ΠΈΡΡΠΉ), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° Π²ΡΡΠΎΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ΅Π»ΠΎΠΌ.
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (Control plane UI): Π§Π΅Π»ΠΎΠ²Π΅ΠΊ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΡΠΈΠΏΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π΅Π±-ΠΏΠΎΡΡΠ°Π», ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ (CLI) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΊΠΈΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ:
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ, ΡΠΈΠ½ΠΈΠΉ/Π·Π΅Π»Π΅Π½ΡΠΉ (blue/green) ΠΈ/ΠΈΠ»ΠΈ Ρ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΡΠΌ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΠ°ΡΠΈΠΊΠ°
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ
- Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ A Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ «/foo», ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π½Π°Π³ΡΡΠ·ΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΉΠΌΠ°ΡΡΡ (timeouts), ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ (retries), ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΠ±ΡΡΠ²Π° ΡΠ΅ΠΏΠΈ (circuit breaking) ΠΈ Ρ.Π΄.
- ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ (Workload scheduler): Π‘Π΅ΡΠ²ΠΈΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠ΅ΡΠ΅Π· ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ/ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Kubernetes ΠΈΠ»ΠΈ Nomad. ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ»ΡΠΆΠ±Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΅Π΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
- ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° (Service discovery). ΠΠΎΠ³Π΄Π° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΈ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΎΠ½ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°.
- API ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ° (Sidecar proxy configuration APIs) : ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ· ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ Β«ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΡΡΠ΅Β» (eventually consistent) Π±Π΅Π· ΡΡΠ°ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΠΎΡΡΠΎΡΡΠ°Ρ ΠΈΠ· Π²ΡΠ΅Ρ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΡΡ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΠ΄Π½Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ. API ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane) Π² Envoy ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅.
ΠΠΎ ΡΡΡΠΈ, ΡΠ΅Π»Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΡΡΠ° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ Π΄Π°Π½Π½ΡΡ (data plane). ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΡΠ±Π΅ΡΡΡ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π±ΠΎΠ»ΡΡΠ΅ Π΄Π΅ΡΠ°Π»Π΅ΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ!..
ΠΠ»ΠΎΡΠΊΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π‘Π²ΠΎΠ΄ΠΊΠ° (Data plane vs. control plane summary)
- ΠΠ»ΠΎΡΠΊΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ cΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (Service mesh data plane): Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ / Π·Π°ΠΏΡΠΎΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΉ/ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ, ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ, Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ / Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡ.
- ΠΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ cΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (Service mesh control plane): ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ Π²Π½ΡΡΡΠΈ cΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΠ΅ ΡΡΠΎΠ³Π°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² / Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
Π’Π΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° (Current project landscape)
Π Π°Π·ΠΎΠ±ΡΠ°Π²ΡΠΈΡΡ Ρ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ΠΌ Π²ΡΡΠ΅, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Β«ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (service mesh)Β».
- ΠΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (Data planes): Linkerd, NGINX, HAProxy, Envoy, Traefik
- ΠΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (Control planes): Istio, Nelson, SmartStack
ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ³Π»ΡΠ±Π»Π΅Π½Π½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Ρ ΠΊΡΠ°ΡΠΊΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²Π»ΡΡΡ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅, ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡ ΠΌΠ½Π΅Π½ΠΈΡ, Π²ΡΠ·ΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΠΏΡΡΠ°Π½ΠΈΡΡ Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ.
Π Π½Π°ΡΠ°Π»Π΅ 2016 Π³ΠΎΠ΄Π° Linkerd Π±ΡΠ» ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane) Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (service mesh) ΠΈ ΠΏΡΠΎΠ΄Π΅Π»Π°Π» ΡΠ°Π½ΡΠ°ΡΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½Π½ΠΎΡΡΠΈ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Β«ΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ ΡΠ΅ΡΡΒ» (service mesh). ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· 6 ΠΌΠ΅ΡΡΡΠ΅Π² ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Envoy ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΡΡ ΠΊ Linkerd (Ρ ΠΎΡΡ ΡΠ°Π±ΠΎΡΠ°Π» Π² Lyft Ρ ΠΊΠΎΠ½ΡΠ° 2015 Π³ΠΎΠ΄Π°). ΠΠΈΠ½ΠΊΠ΅ΡΠ΄ ΠΈ Envoy β ΡΡΠΎ Π΄Π²Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ ΡΠ΅ΡΠ΅ΠΉ (service mesh).
Istio Π±ΡΠ»ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΎ Π² ΠΌΠ°Π΅ 2017 Π³ΠΎΠ΄Π°. Π¦Π΅Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Istio ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane), ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΡ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 3. Envoy Π΄Π»Ρ Istio ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Β«ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡΒ». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Istio ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane), Π° Envoy β ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ Π΄Π°Π½Π½ΡΡ (data plane). ΠΠ° ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Istio Π²ΡΠ·Π²Π°Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ»Π½Π΅Π½ΠΈΠΉ, ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane) Π½Π°ΡΠ°Π»ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°ΠΌΠ΅Π½Ρ Envoy (ΠΈ Linkerd, ΠΈ NGINX ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Istio). Π’ΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane), ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ (data plane) Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Ρ. Π’Π°ΠΊΠΎΠΉ API ΠΊΠ°ΠΊ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ API ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane) Envoy ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΌΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠ°ΡΡΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΡ.
Nelson ΠΈ SmartStack ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane). Nelson ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Envoy Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠΊΡΠΈ ΠΈ ΡΡΡΠΎΠΈΡ Π½Π°Π΄Π΅ΠΆΠ½ΡΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΡ (service mesh) Π½Π° Π±Π°Π·Π΅ ΡΡΠ΅ΠΊΠ° HashiCorp, Ρ.Π΅. Nomad ΠΈ Ρ.Π΄. SmartStack ΡΡΠ°Π», ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΠΏΠ΅ΡΠ²ΡΠΌ ΠΈΠ· Π½ΠΎΠ²ΠΎΠΉ Π²ΠΎΠ»Π½Ρ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ ΡΠ΅ΡΠ΅ΠΉ (service mesh). SmartStack ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) Π²ΠΎΠΊΡΡΠ³ HAProxy ΠΈΠ»ΠΈ NGINX, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·Π²ΡΠ·ΠΊΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΡ (service mesh) ΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane).
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Ρ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΡ (service mesh) ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°Π΅Ρ ΠΊ ΡΠ΅Π±Π΅ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ (ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ!), ΠΈ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΈ Π²Π΅Π½Π΄ΠΎΡΠΎΠ² Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΡΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. Π ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π»Π΅Ρ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π½ΠΎΠ²Π°ΡΠΈΠΉ ΠΊΠ°ΠΊ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ
Π΄Π°Π½Π½ΡΡ
(data plane), ΡΠ°ΠΊ ΠΈ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ
ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane), Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². Π ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ ΡΡΠ΅ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠΉ ΠΈ Π²ΠΎΠ»ΡΠ΅Π±Π½ΠΎΠΉ (?) Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°.
ΠΠ°Π΄Π΅ΡΡΡ, Π²ΡΠ΅ ΠΌΠ΅Π½Π΅Π΅ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ (Key takeaways)
- Π‘Π΅ΡΠ²ΠΈΡΠ½Π°Ρ ΡΠ΅ΡΡ (service mesh) ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°Π·Π½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ: ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane) ΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane). ΠΠ±Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ, ΠΈ Π±Π΅Π· Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
- ΠΡΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane), ΠΈ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ Π²Ρ!
- ΠΡΠ΅ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ (data plane) ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ.
- ΠΡΠ΅ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ, ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΈ ΡΠ΄ΠΎΠ±ΡΡΠ²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
- ΠΠ΄Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΈ API, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ (data plane).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com