Π ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρa (service mesh), ΠΈ Π΅ΡΠΎ ΠΎΡΠ΅ Π΅Π΄Π½Π°. Π£ΡΠ°! ΠΠΎ Π·Π°ΡΠΎ? ΠΠ°ΡΠΎΡΠΎ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΈΠ·ΡΠ°Π·Ρ ΠΌΠ½Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ, ΡΠ΅ Π΅ ΡΡΠ»ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅, Π°ΠΊΠΎ ΡΠ΅ΡΠ²ΠΈΠ·Π½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ Π±ΡΡ Π° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΈ 10 Π³ΠΎΠ΄ΠΈΠ½ΠΈ, ΠΏΡΠ΅Π΄ΠΈ ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, ΠΊΠ°ΡΠΎ Docker ΠΈ Kubernetes. ΠΠ΅ ΡΠ²ΡΡΠ΄Ρ, ΡΠ΅ ΠΌΠΎΡΡΠ° Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎ-Π»ΠΎΡΠ° ΠΎΡ Π΄ΡΡΠ³ΠΈΡΠ΅, Π½ΠΎ ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ΡΠ²ΠΈΠ·Π½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ ΡΠ° Π΄ΠΎΡΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΡΠΎ Π³Π»Π΅Π΄Π½ΠΈ ΡΠΎΡΠΊΠΈ ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π·Π° ΡΡΡ Π½ΠΎΡΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅.
Π©Π΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ° Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° dotCloud, ΠΊΠΎΡΡΠΎ Π±Π΅ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΡΡΠΎΡΠΈΠ½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ Ρ
ΠΈΠ»ΡΠ΄ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. Π©Π΅ ΠΎΠ±ΡΡΠ½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, Ρ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°Ρ
ΠΌΠ΅ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΠΈ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Ρ, ΠΈ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²ΠΈΠ·Π½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ Π±ΠΈΡ
Π° ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ (ΠΈΠ»ΠΈ Π½Π΅).
ΠΡΡΠΎΡΠΈΡΡΠ° Π½Π° dotCloud
ΠΠ΅ΡΠ΅ ΠΏΠΈΡΠ΅Ρ Π·Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° dotCloud ΠΈ ΠΈΠ·Π±ΠΎΡΠ° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π·Π° ΡΠ°Π·ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, Π½ΠΎ ΠΌΠ°Π»ΠΊΠΎ ΡΠ°Π·ΠΊΠ°Π·Π²Π°Ρ Π·Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΡΠ»ΠΎΠΉ. ΠΠΊΠΎ Π½Π΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ΅ Π³ΠΌΡΡΠΊΠ°ΡΠ΅ Π² ΡΠ΅ΡΠ΅Π½Π΅ΡΠΎ Π·Π° dotCloud, Π½Π°ΠΊΡΠ°ΡΠΊΠΎ Π΅ΡΠΎ ΡΡΡΠ½ΠΎΡΡΡΠ°: ΡΠΎΠ²Π° Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΊΠ°ΡΠΎ ΡΡΠ»ΡΠ³Π° PaaS, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°Ρ ΡΠΈΡΠΎΠΊ ΡΠΏΠ΅ΠΊΡΡΡ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Java, PHP, Pythonβ¦) Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΈΡΠΎΠΊΠΈ ΡΠΏΠ΅ΠΊΡΡΡ ΠΎΡ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ (MongoDB, MySQL, Redisβ¦) ΠΈ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ ΠΊΠ°ΡΠΎ ΡΠΎΠ·ΠΈ Π½Π° Heroku: ΠΊΠ°ΡΠ²Π°ΡΠ΅ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°, ΡΡ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° ΠΎΠ±ΡΠ°Π·ΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈ Π³ΠΈ ΡΠ°Π·Π³ΡΡΡΠ°.
Π©Π΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ ΠΌΠΈΠ½Π°Π²Π°ΡΠ΅ ΡΡΠ°ΡΠΈΠΊΡΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° dotCloud. ΠΠ΅ Π·Π°ΡΠΎΡΠΎ ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π½ΠΎ (Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Π·Π° ΡΠ²ΠΎΠ΅ΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ Π΄ΠΎΠ±ΡΠ΅!), Π° ΠΏΡΠ΅Π΄ΠΈ Π²ΡΠΈΡΠΊΠΎ Π·Π°ΡΠΎΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΡΠ°ΠΊΡΠ² Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΌΠΎΠΆΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π·Π° ΠΊΡΠ°ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΎΡ ΡΠΊΡΠΎΠΌΠ΅Π½ Π΅ΠΊΠΈΠΏ, Π°ΠΊΠΎ ΠΈΠΌ Π΅ Π½ΡΠΆΠ΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ°Π²Π½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΈΡΠ΅: ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°, Π°ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ° ΡΠ΅ΡΠ²ΠΈΠ·Π½Π° ΠΌΡΠ΅ΠΆΠ°. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΡ ΠΈΠ·Π±ΠΎΡ: Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π΄Π° ΠΊΡΠΏΠΈΡΠ΅.
ΠΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° Π·Π° Ρ ΠΎΡΡΠ²Π°Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π½Π° dotCloud ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ HTTP ΠΈ TCP ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ.
HTTP ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΎΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°ΡΠΈ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ . Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π΄Π½Π΅ΡΠ½ΠΈΡ ΡΠ΅ΡΡΡΡ ΠΏΠΎΡΡΠΈΠ³Π° Π² Kubernetes ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°ΡΠΈΡΠ΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ ΠΊΠ°ΡΠΎ .
ΠΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Ρ Ρ HTTP ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ ΠΏΡΠ΅Π· ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ΅ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΎΡΠΎ ΠΈΠΌΠ΅ ΡΠΊΠ°Π·Π²Π° Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°ΡΠΈΡΠ΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° dotCloud. ΠΠΈΡΠΎ ΠΎΡΠΎΠ±Π΅Π½ΠΎ.
TCP ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΡΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π² ΡΠΎΠ·ΠΈ ΡΡΠ΅ΠΊ ΡΡΠ΅Π· ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°.
ΠΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Ρ Ρ TCP ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎΡΠΎ ΠΈΠΌΠ΅ Π½Π° Ρ ΠΎΡΡΠ° (Π½Π΅ΡΠΎ ΠΊΠ°ΡΠΎ gateway-X.dotcloud.com) ΠΈ Π½ΠΎΠΌΠ΅Ρ Π½Π° ΠΏΠΎΡΡΠ°.
Π’ΠΎΠ²Π° ΠΈΠΌΠ΅ Π½Π° Ρ ΠΎΡΡ ΡΠ΅ ΡΠ΅Π·ΠΎΠ»Π²Π° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΠΎΡ ΡΡΡΠ²ΡΡΠΈ βnatsβ (Π½ΡΠΌΠ° ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ ), ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ TCP Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (ΠΈΠ»ΠΈ, Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΡΡΠ»ΡΠ³ΠΈ Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, ΠΊΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ).
ΠΠΊΠΎ ΡΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°ΡΠΈ Ρ Kubernetes, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠΎΠ²Π° ΡΠ΅ Π²ΠΈ Π½Π°ΠΏΠΎΠΌΠ½ΠΈ Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅ .
ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° dotCloud Π½ΡΠΌΠ°ΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅ : Π·Π° ΡΠ»Π΅ΡΠ½Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΡΡ Π΄ΠΎ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ Π½Π°ΡΠΈΠ½ ΠΎΡΠ²ΡΡΡΠ΅ ΠΈ ΠΎΡΠ²ΡΠ½ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°.
ΠΡΠΈΡΠΊΠΎ Π±Π΅ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡΠΎ: ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΈΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° HTTP ΠΈ TCP ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°ΡΠΈ ΠΌΡΠ΅ΠΆΠΈ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠΎΡΠΈΠ½ ΡΠ΅Π΄Π° Python. ΠΡΠΎΡΡΠΈ (Π±ΠΈΡ ΠΊΠ°Π·Π°Π», Π½Π°ΠΈΠ²Π½ΠΈ) Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ Π±ΡΡ Π° Π΄ΠΎΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ Ρ ΡΠ°ΡΡΠ΅ΠΆΠ° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ΠΈ ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ.
ΠΠ±ΡΠΈΡΠ΅Π½ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ ΠΊΠΎΠ΄ Π½Π΅ Π±Π΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ. ΠΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ, ΠΌΠΎΠ³Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π°Π΄ΡΠ΅ΡΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½ ΡΡΠ΅Π· ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°.
ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΎΡ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°ΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ½Π° ΠΌΡΠ΅ΠΆΠ°?
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΠΎΠ±Π·ΠΎΡΠ½ΠΎΡΡ. ΠΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½ΡΠΌΠ°Ρ ΠΌΠ΅ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π·Π° TCP ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡΡΠ°. Π©ΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ HTTP ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡΡΠ°, Π² ΠΏΠΎ-ΠΊΡΡΠ½ΠΈ Π²Π΅ΡΡΠΈΠΈ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡ Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΈ HTTP ΠΌΠ΅ΡΡΠΈΠΊΠΈ Ρ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° Π³ΡΠ΅ΡΠΊΠ° ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ, Π½ΠΎ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΈ ΠΎΡΠΈΠ²Π°Ρ ΠΎΡΠ΅ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΠΉΠΊΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΠΊΠ°ΡΠΎ Prometheus, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΠ±Π·ΠΎΡΠ½ΠΎΡΡΡΠ° Π΅ Π²Π°ΠΆΠ½Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° (Π·Π° Π΄Π° ΠΏΠΎΠΌΠ°Π³Π° ΠΏΡΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ), Π½ΠΎ ΠΈ ΠΏΡΠΈ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. Π‘ΡΠ°Π²Π° Π΄ΡΠΌΠ° Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ ΠΈ .
ΠΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡΡΠ° ΡΡΡΠΎ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π°. Π ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° dotCloud ΡΠ΅Π»ΠΈΡΡ ΡΡΠ°ΡΠΈΠΊ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· ΠΊΠ»ΡΡΡΠ΅Ρ ΠΎΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°ΡΠΈ Π²ΡΠ·Π»ΠΈ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°ΡΠ΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΡΠ°Π½ΠΈΡΠΈ Π½Π° AZ (Π·ΠΎΠ½ΠΈ Π½Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡ) ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π±Π°Π²ΡΠ½Π΅ΡΠΎ. ΠΠΎΠΌΠ½Ρ, ΠΊΠ°ΠΊ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ°Π²Π΅ΡΠ΅ Π½Π°Π΄ ΡΡΠΎ SQL Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ° ΠΈ Π·Π° Π²ΡΡΠΊΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ ΠΎΡΠ²Π°ΡΡΡΠ΅ Π½ΠΎΠ²ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ SQL ΡΡΡΠ²ΡΡΠ°. ΠΡΠΈ Π»ΠΎΠΊΠ°Π»Π΅Π½ Π·Π°ΠΏΡΡΠΊ ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π·Π°ΡΠ΅ΠΆΠ΄Π°ΡΠ΅ ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½ΠΎ, Π½ΠΎ Π² dotCloud Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΎΡΠ½Π΅ΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π·Π°ΡΠΎΡΠΎ Π·Π° Π²ΡΡΠΊΠΎ TCP ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ (ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΎ SQL Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅) ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π΄Π΅ΡΠ΅ΡΠΊΠΈ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ. Π ΡΠΎΠ·ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ Π±Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π½ Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ.
Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΈ ΡΠ΅ ΡΠΏΡΠ°Π²ΡΡ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Ρ ΡΠ°ΠΊΠΈΠ²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΠ° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ, ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ, ΡΠ΅ Π²ΡΡΠ·ΠΊΠΈΡΠ΅ ΡΠ° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π² ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΠ°. ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡΡ ΠΏΠΎΡΠΎΠΊ ΠΎΡΡΠ°Π²Π° ΡΡΡΠΈΡΡ: ΠΊΠ»ΠΈΠ΅Π½Ρ β ΠΌΡΠ΅ΠΆΠ° β ΡΡΠ»ΡΠ³Π°, Π½ΠΎ ΡΠ΅Π³Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π° Π½Π΅ Π½Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈ Π²ΡΠ·Π»ΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ β ΠΌΡΠ΅ΠΆΠ° Π΅ Π»ΠΎΠΊΠ°Π»Π½Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ·Π° (ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ).
Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΈ ΡΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΏΠΎ-ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ. ΠΠ°ΡΠΎ ΡΠ»Π΅Π΄ΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅ΡΠ΅, ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ°ΡΠΈΠΊ ΠΊΡΠΌ ΠΏΠΎ-Π±ΡΡΠ·ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ.
Π‘ΠΈΠ³ΡΡΠ½ΠΎΡΡ ΡΡΡΠΎ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ°. ΠΡΠ΅ΠΆΠ°ΡΠ° Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° dotCloud ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠ»ΠΎ Π½Π° EC2 Classic ΠΈ Π½Π΅ ΠΊΡΠΈΠΏΡΠΈΡΠ°ΡΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° (Π½Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ΅ Π°ΠΊΠΎ Π½ΡΠΊΠΎΠΉ ΡΡΠΏΠ΅Π΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΡΠΏΠΈΠΎΠ½ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΡΡΠ°ΡΠΈΠΊ Π½Π° EC2, Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ). Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ Π·Π°ΡΠΈΡΠ°Π²Π°Ρ ΡΠ΅Π»ΠΈΡ Π½Π°Ρ ΡΡΠ°ΡΠΈΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π²Π·Π°ΠΈΠΌΠ½Π° TLS Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΎ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅.
ΠΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ
ΠΠΎΠ±ΡΠ΅, ΠΎΠ±ΡΡΠ΄ΠΈΡ ΠΌΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°, Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π·Π° ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° dotCloud?
Π‘Π°ΠΌΠ°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΡΠ΅ ΡΡΡΡΠΎΠ΅ΡΠ΅ ΠΎΡ ΠΎΠΊΠΎΠ»ΠΎ ΡΡΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ, ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΊΠΎΠΈ ΠΏΡΠΈΠ΅ΠΌΠ°Ρ Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΎΡ Π΄ΡΡΠ³ΠΈ, Π° Π½ΡΠΊΠΎΠΈ Π±ΡΡ Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠΈ Π½Π° Π·Π°Π΄Π΅Π½ ΠΏΠ»Π°Π½, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Ρ Π° Ρ Π΄ΡΡΠ³ΠΈ ΡΡΠ»ΡΠ³ΠΈ, Π½ΠΎ ΡΠ°ΠΌΠΈΡΠ΅ ΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ΅ΠΌΠ°Ρ Π° Π²ΡΡΠ·ΠΊΠΈ. ΠΡΠ² Π²ΡΠ΅ΠΊΠΈ ΡΠ»ΡΡΠ°ΠΉ Π²ΡΡΠΊΠ° ΡΡΠ»ΡΠ³Π° ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ ΠΊΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ Π½Π° Π°Π΄ΡΠ΅ΡΠΈΡΠ΅, Ρ ΠΊΠΎΠΈΡΠΎ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅.
ΠΠ½ΠΎΠ³ΠΎ Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ ΡΡΠ»ΡΠ³ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΠΏΠΈΡΠ°Π½Π°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΌΡΠ΅ΠΆΠ° Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅. ΠΡΡΡΠ½ΠΎΡΡ, ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΡΡΠΎΡΠΈΠ½Π°ΡΠ° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ Π½Π° dotCloud Π±ΡΡ Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° dotCloud. ΠΠΎ ΠΌΠ°Π»ΠΊΠΎΡΠΎ Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΡΡΠ»ΡΠ³ΠΈ (Π² ΡΠ°ΡΡΠ½ΠΎΡΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΠ°Π·ΠΈ ΠΌΡΠ΅ΠΆΠ° Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅) ΠΈΠΌΠ°Ρ Π° Π½ΡΠΆΠ΄Π° ΠΎΡ Π½Π΅ΡΠΎ ΠΏΠΎ-ΠΏΡΠΎΡΡΠΎ, Ρ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (ΡΡΠΉ ΠΊΠ°ΡΠΎ Π·Π° ΡΠ°Π±ΠΎΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π° Π΄Π° Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠ°ΠΌΠΈΡΠ΅ ΡΠ΅Π±Π΅ ΡΠΈ - ΡΡΠ°ΡΠ°ΡΠ° Π΄ΠΎΠ±ΡΠ° Π΄ΠΈΠ»Π΅ΠΌΠ° Ρ ΠΊΠΎΠΊΠΎΡΠΊΠ°ΡΠ° ΠΈ ΡΠΉΡΠ΅ΡΠΎ).
Π’Π΅Π·ΠΈ Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, Π²Π°ΠΆΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π±ΡΡ
Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½ΠΈ ΡΡΠ΅Π· ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ»ΡΡΠΎΠ²ΠΈ Π²ΡΠ·Π΅Π»Π°. ΠΡΠΈ ΡΠΎΠ²Π° Π½Π΅ Π±ΡΡ
Π° Π°Π½Π³Π°ΠΆΠΈΡΠ°Π½ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°: ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ, ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΈ runner. ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΡΠ°Π²Π½ΠΈΡΠ΅ Ρ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, ΡΠΎΠ²Π° Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΡΠΊΠΈΡ ΠΏΠ°Π½Π΅Π» Ρ docker run Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° Π²ΡΠ·Π»ΠΈΡΠ΅, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° Π΄Π΅Π»Π΅Π³ΠΈΡΠ°ΡΠ΅ Π·Π°Π΄Π°ΡΠ°ΡΠ° Π½Π° Kubernetes. Π’ΠΎΠ²Π° Π΅ Π΄ΠΎΡΡΠ° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° , ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ»ΠΈ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π°Π²ΡΠΎΠ½ΠΎΠΌΠ΅Π½ ΠΊΠ»ΡΡΡΠ΅Ρ.
Π’Π΅Π·ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π±ΡΡ Π° Π΅ΠΊΡΠΏΠΎΠ½ΠΈΡΠ°Π½ΠΈ ΠΏΠΎ ΠΏΡΠΎΡΡ ΠΈ Π³ΡΡΠ± Π½Π°ΡΠΈΠ½: ΠΈΠΌΠ΅Π½Π°ΡΠ° ΠΈ Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ ΠΈΠΌ Π±ΡΡ Π° ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈ Π² YAML ΡΠ°ΠΉΠ»; Π° Π²ΡΠ΅ΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π²Π·Π΅ΠΌΠ΅ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° ΡΠΎΠ·ΠΈ YAML ΡΠ°ΠΉΠ» Π·Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅.
ΠΡ Π΅Π΄Π½Π° ΡΡΡΠ°Π½Π°, ΡΠΎΠ²Π° Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π²ΡΠ½ΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ ΠΊΠ»ΡΡΠΎΠ²Π΅/ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΡΠΎ Zookeeper (Π½Π΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅, ΠΏΠΎ ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π° etcd ΠΈΠ»ΠΈ Consul). ΠΡ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π°, ΡΠΎΠ²Π° Π·Π°ΡΡΡΠ΄Π½ΡΠ²Π°ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅. ΠΡΠ΅ΠΊΠΈ ΠΏΡΡ ΠΏΡΠΈ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅, Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ YAML ΡΠ°ΠΉΠ» (ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π·Π°ΡΠ΅Π΄ΡΡ). ΠΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ!
ΠΠΎ-ΠΊΡΡΠ½ΠΎ Π·Π°ΠΏΠΎΡΠ½Π°Ρ
ΠΌΠ΅ Π΄Π° Π²Π½Π΅Π΄ΡΡΠ²Π°ΠΌΠ΅ Π½ΠΎΠ²Π° ΡΡ
Π΅ΠΌΠ°, Π² ΠΊΠΎΡΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°ΡΠ΅ Ρ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΡΠΎΠΊΡΠΈ-ΡΡΡΠ²ΡΡ. ΠΠΌΠ΅ΡΡΠΎ Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΏΠΎΡΡΠ°, ΠΌΡ Π±Π΅ΡΠ΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° Π·Π½Π°Π΅ ΡΠ°ΠΌΠΎ Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΈ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ ΡΡΠ΅Π· localhost. ΠΠΎΠΊΠ°Π»Π½ΠΈΡΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΡΡΠ²ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠΎΠ²Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΈ Π³ΠΎ Π½Π°ΡΠΎΡΠ²Π° ΠΊΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈΡ ΡΡΡΠ²ΡΡ. Π‘Π΅Π³Π° ΠΏΡΠΈ ΠΏΡΠ΅ΠΌΠ΅ΡΡ Ρ Π±Π΅ΠΊΠ΅Π½Π΄Π° Π½Π° Π΄ΡΡΠ³Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΈΠ»ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π²ΠΌΠ΅ΡΡΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΊΡΠΈΡΠ°; ΠΈ ΠΏΡΠ΅Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π²Π΅ΡΠ΅ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ.
(Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π±Π΅ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠ° ΡΡΠ°ΡΠΈΠΊΠ° Π² TLS Π²ΡΡΠ·ΠΊΠΈ ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΠΎΠΊΡΠΈ-ΡΡΡΠ²ΡΡ Π½Π° ΠΏΡΠΈΠ΅ΠΌΠ½Π°ΡΠ° ΡΡΡΠ°Π½Π°, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ TLS Π±Π΅Π· ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ΅ΠΌΠ°ΡΠ°ΡΠ° ΡΡΠ»ΡΠ³Π°, ΠΊΠΎΡΡΠΎ Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π° Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ° Π²ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΌΠΎ Π½Π° localhost).
Π’ΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΈΡΠ° Π½Π° ΠΎΡ Airbnb, Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° Π΅, ΡΠ΅ SmartStack Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ, Π΄ΠΎΠΊΠ°ΡΠΎ Π²ΡΡΡΠ΅ΡΠ½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° dotCloud Π±Π΅ΡΠ΅ ΠΏΡΠΈΠ±ΡΠ°Π½Π°, ΠΊΠΎΠ³Π°ΡΠΎ dotCloud ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΠ½Π° Π² Docker.
ΠΠΈΡΠ½ΠΎ Π°Π· ΡΠΌΡΡΠ°ΠΌ SmartStack Π·Π° Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΊΠ°ΡΠΎ Istio, Linkerd ΠΈ Consul Connect, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ ΡΠ»Π΅Π΄Π²Π°Ρ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½:
- Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠΊΡΠΈ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π».
- ΠΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Ρ Ρ ΠΏΡΠΎΠΊΡΠΈ.
- ΠΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠ°Π²Π½ΠΈΠ½Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠΊΡΠΈ-ΡΡΡΠ²ΡΡΠ° ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄ΠΈΡΠ΅.
- β¦ ΠΠ΅ΡΠ°Π»Π±Π°!
Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ΅ΡΠ²ΠΈΡ-ΡΠ΅ΡΠ΅ΡΠΊΠ°ΡΠ°
ΠΠΊΠΎ Π΄Π½Π΅Ρ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΌΡΠ΅ΠΆΠ°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡ
ΠΎΠ΄Π½ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ Π²ΡΡΡΠ΅ΡΠ½Π° DNS Π·ΠΎΠ½Π°, ΡΡΠΏΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Ρ Π°Π΄ΡΠ΅ΡΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ 127.0.0.0/8. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ HAProxy Π½Π° Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π» Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΠΏΡΠΈΠ΅ΠΌΠ°ΠΉΠΊΠΈ Π²ΡΡΠ·ΠΊΠΈ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π°Π΄ΡΠ΅Ρ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° (Π² ΡΠ°Π·ΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° 127.0.0.0/8) ΠΈ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°ΠΉΠΊΠΈ/Π±Π»Π°ΠΆΠ°ΠΉΠΊΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° HAProxy ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° , ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° Π² etcd ΠΈΠ»ΠΈ Consul ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π½ΠΎΠ²Π΅Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° HAProxy, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ.
ΠΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°ΠΊΠ° ΡΠ°Π±ΠΎΡΠΈ Istio! ΠΠΎ Ρ Π½ΡΠΊΠΎΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ:
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΠΌΠ΅ΡΡΠΎ HAProxy.
- ΠΠ°ΠΏΠ°Π·Π²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° ΡΡΠ΅Π· Kubernetes API Π²ΠΌΠ΅ΡΡΠΎ etcd ΠΈΠ»ΠΈ Consul.
- ΠΠ° ΡΡΠ»ΡΠ³ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Ρ Π°Π΄ΡΠ΅ΡΠΈ Π²ΡΠ² Π²ΡΡΡΠ΅ΡΠ½Π°ΡΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° (Π°Π΄ΡΠ΅ΡΠΈ Π½Π° Kubernetes ClusterIP) Π²ΠΌΠ΅ΡΡΠΎ 127.0.0.0/8.
- ΠΠΌΠ° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ (Citadel) Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π²Π·Π°ΠΈΠΌΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° TLS ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΡΡΠ²ΡΡΠΈΡΠ΅.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠ° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΡΠΎ ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅ Π½Π° Π²Π΅ΡΠΈΠ³Π°ΡΠ° (circuit breaking), ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅, Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ°Π½Π°ΡΠ΅ΠΉΠΊΠΈ ΠΈ Π΄Ρ.
ΠΠ΅ΠΊΠ° Π½Π°ΠΊΡΠ°ΡΠΊΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅.
Envoy Proxy
Envoy Proxy Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Lyft [ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½Ρ Π½Π° Uber Π½Π° ΠΏΠ°Π·Π°ΡΠ° Π½Π° ΡΠ°ΠΊΡΠΈΡΠ° β Π±Π΅Π». ΡΠ΅Π΄.]. Π’ΠΎΠΉ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΡΠΎΠΊΡΠΈΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ HAProxy, Nginx, Traefikβ¦), Π½ΠΎ Lyft ΡΡΠ·Π΄Π°Π΄Π΅ ΡΠ²ΠΎΠΉ, Π·Π°ΡΠΎΡΠΎ ΠΈΠΌ ΡΡΡΠ±Π²Π°Ρ Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ Π»ΠΈΠΏΡΠ²Π°Ρ Π² Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΡΠΎΠΊΡΠΈΡΠ°, ΠΈ ΠΏΠΎ-ΡΠΌΠ΅ΡΡΠ½ΠΎ Π±Π΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΡΡ Π½ΠΎΠ², ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΄Π° ΡΠ°Π·ΡΠΈΡΡΠ²Π°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ.
Envoy ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΎ. ΠΠΊΠΎ ΠΈΠΌΠ°ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΡΡΠ»ΡΠ³Π°, ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ Ρ Π΄ΡΡΠ³ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΠΌΠΎΠ³Π° Π΄Π° Ρ Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΠΌ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Ρ Envoy ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌ ΠΈ ΠΏΡΠ΅Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΠΌ Envoy Ρ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΉΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ»ΠΈΡΠ½ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠ½ΠΎΡΠ½ΠΎ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΌΠ΅ΡΡΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠ»ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ, Π½Π°ΡΠΎΡΠ²Π°ΠΌΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° ΠΊΡΠΌ Envoy, Π° ΡΠΎΠΉ ΡΡΠ±ΠΈΡΠ° ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π·Π° Π½Π°Ρ.
ΠΠΎ Envoy ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΡΠΎ Π΄Π°Π½ΡΡΠ½Π° ΡΠ°Π²Π½ΠΈΠ½Π° (data plane) Π·Π° ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠ΅ΡΠ°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ΅Π³Π° Π·Π° ΡΠΎΠ·ΠΈ ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠ΅Ρ Envoy ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠ²Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ° ΡΠ°Π²Π½ΠΈΠ½Π° (control plane).
Π£ΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ° ΡΠ°Π²Π½ΠΈΠ½Π°
Π ΡΠΏΡΠ°Π²Π»Π΅Π½ΡΠΊΠ°ΡΠ° ΡΠ°Π²Π½ΠΈΠ½Π° Istio ΡΠ°Π·ΡΠΈΡΠ° Π½Π° Kubernetes API. Π’ΠΎΠ²Π° Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° confd, ΠΊΠΎΠ΅ΡΠΎ ΡΠ°Π·ΡΠΈΡΠ° Π½Π° etcd ΠΈΠ»ΠΈ Consul Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΎΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ. Istio ΠΏΡΠ΅Π³Π»Π΅ΠΆΠ΄Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΡΠ΅ΡΡΡΡΠΈ Π½Π° Kubernetes ΡΡΠ΅Π· Kubernetes API.
ΠΠ΅ΠΆΠ΄ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ: Π½Π° ΠΌΠ΅Π½ Π»ΠΈΡΠ½ΠΎ ΠΌΠΈ ΡΠ΅ Π²ΠΈΠ΄Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠΎΠ²Π° , ΠΊΠΎΠ΅ΡΠΎ Π³Π»Π°ΡΠΈ:
Π‘ΡΡΠ²ΡΡΡΡ Π½Π° Kubernetes API Π΅ "Π³Π»ΡΠΏΠ°Π² ΡΡΡΠ²ΡΡ", ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²Π΅ΡΡΠΈΠΈ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° Π½Π° API ΡΠ΅ΡΡΡΡΠΈΡΠ΅.
Istio Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ Kubernetes; ΠΈ Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΈΠ·Π²ΡΠ½ Kubernetes, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° ΡΡΡΠ²ΡΡ Π½Π° Kubernetes API (ΠΈ ΠΏΠΎΠΌΠΎΡΠ½Π° ΡΠ»ΡΠΆΠ±Π° etcd).
ΠΠ΄ΡΠ΅ΡΠΈ Π½Π° ΡΡΠ»ΡΠ³ΠΈ
Istio ΡΠ°Π·ΡΠΈΡΠ° Π½Π° Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ ClusterIP, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Kubernetes, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π½Π° Istio ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ Π²ΡΡΡΠ΅ΡΠ΅Π½ Π°Π΄ΡΠ΅Ρ (Π½Π΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° 127.0.0.0/8).
Π’ΡΠ°ΡΠΈΠΊΡΡ ΠΊΡΠΌ Π°Π΄ΡΠ΅ΡΠ° ClusterIP Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΡΡΠ»ΡΠ³Π° Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° Kubernetes Π±Π΅Π· Istio ΡΠ΅ ΠΏΡΠΈΡ Π²Π°ΡΠ° ΠΎΡ kube-proxy ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠΊΡΠΈ. ΠΠΊΠΎ ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°ΡΠ΅ ΠΎΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ, kube-proxy Π·Π°Π΄Π°Π²Π° ΠΏΡΠ°Π²ΠΈΠ»Π° iptables (ΠΈΠ»ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΡΠΈ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ IPVS, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½), Π·Π° Π΄Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ΅ ΡΠ΅Π»Π΅Π²ΠΈΡΠ΅ IP Π°Π΄ΡΠ΅ΡΠΈ Π½Π° Π²ΡΡΠ·ΠΊΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΈΠ½Π°Π²Π°Ρ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΠ° ClusterIP.
Π‘Π»Π΅Π΄ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Istio Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° Kubernetes Π½ΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅ ΡΠ²Π½ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ Π·Π° ΡΡΠ»ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°, ΡΡΠ΅Π· Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ sidecar Π² ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅. Π’ΠΎΠ·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° Envoy ΠΈ ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅ ΡΠ΅Π΄ΠΈΡΠ° ΠΏΡΠ°Π²ΠΈΠ»Π° iptables Π·Π° ΠΏΡΠΈΡ
Π²Π°ΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊΠΎΠΉΡΠΎ ΠΈΠ΄Π²Π° ΠΊΡΠΌ Π΄ΡΡΠ³ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΠΈ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ·ΠΈ ΡΡΠ°ΡΠΈΠΊ ΠΊΡΠΌ Envoy.
ΠΡΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ Ρ Kubernetes DNS, ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π½Π°ΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° ΠΏΠΎ ΠΈΠΌΠ΅ Π½Π° ΡΡΠ»ΡΠ³Π° ΠΈ Π²ΡΠΈΡΠΊΠΎ "ΠΏΡΠΎΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ". Π‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ, Π½Π°ΡΠΈΡΡ ΠΊΠΎΠ΄ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΎΡ ΡΠΈΠΏ http://api/v1/users/4242, ΡΠΎΠ³Π°Π²Π° api ΡΠ΅Π·ΠΎΠ»Π²ΠΈΡΠ° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° 10.97.105.48, ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½Π° iptables ΡΠ»Π°Π²ΡΡ ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡΡΠ° ΠΎΡ 10.97.105.48 ΠΈ Π³ΠΈ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Ρ ΠΊΡΠΌ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ ΠΏΡΠΎΠΊΡΠΈ Envoy, Π° ΡΠΎΠ·ΠΈ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΡΠΎΠΊΡΠΈ Π½Π°ΡΠΎΡΠ²Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΠΊΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈΡ Π±Π΅ΠΊΠ΅Π½Π΄ Π½Π° API. Π£Ρ!
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ
Istio ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΎΡΠΈΠ³ΡΡΡΠ²Π° end-to-end ΡΠΈΡΡΠΎΠ²Π°Π½Π΅ ΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΡΡΠ΅Π· mTLS (Π²Π·Π°ΠΈΠΌΠ½ΠΎ TLS). ΠΠ° ΡΠΎΠ²Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π½Π°ΡΠ΅ΡΠ΅Π½ Citadel.
ΠΠΌΠ° ΡΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Mixer, ΠΊΠΎΠΉΡΠΎ Envoy ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°ΠΏΠΈΡΠ° Π·Π° Π²ΡΠ΅ΠΊΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅, Π·Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠΎΠ²Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°ΠΊΡΠΎΡΠΈ, ΠΊΠ°ΡΠΎ Π·Π°Π³Π»Π°Π²ΠΈΡ, Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° ΠΈ Ρ.Π½. (Π½Π΅ ΡΠ΅ ΡΡΠ΅Π²ΠΎΠΆΠ΅ΡΠ΅: ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π½Π° Mixer, ΠΈ Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΡΠ΅ ΡΡΠΈΠ½Π΅, Envoy ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠΊΡΠΈ).
Π, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ ΠΌΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡΠ°: Envoy ΡΡΠ±ΠΈΡΠ° ΠΎΠ³ΡΠΎΠΌΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΠΉΠΊΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅. Π Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ, Π°ΠΊΠΎ Π΅Π΄Π½ΠΎ API Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ ΠΏΡΠ΅Π· ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ A, B, C ΠΈ D, ΡΠΎ ΠΏΡΠΈ Π²Π»ΠΈΠ·Π°Π½Π΅ΡΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎΡΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π΄ΠΎΠ±Π°Π²Ρ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΡΠΌ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ Π·Π°ΠΏΠ°Π·Π²Π° ΡΠΎΠ·ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠ΅Π· ΠΏΠΎΠ΄Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ° ΠΊΡΠΌ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΡΠ΅Ρ Π½ΠΈΡΠ΅ Π·Π°Π±Π°Π²ΡΠ½ΠΈΡ ΠΈ Ρ.Π½.
ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΈΠ»ΠΈ Π΄Π° ΠΊΡΠΏΠΈΠΌ
Istio ΠΈΠΌΠ° ΡΠ΅ΠΏΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ»ΠΎΠΆΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. Π ΠΏΡΠΎΡΠΈΠ²ΠΎΠ²Π΅Ρ Π½Π° ΡΠΎΠ²Π°, ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°ΡΠ° ΠΌΡΠ΅ΠΆΠ°, ΠΊΠΎΡΡΠΎ ΠΎΠΏΠΈΡΠ°Ρ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠ°Π·ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ, Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ. Π’Π°ΠΊΠ° ΡΠ΅, ΠΈΠΌΠ° Π»ΠΈ ΡΠΌΠΈΡΡΠ» Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠ΅ΡΠ²ΠΈΡ mesh?
ΠΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠΊΡΠΎΠΌΠ½ΠΈ Π½ΡΠΆΠ΄ΠΈ (Π½Π΅ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΠΌ ΠΎΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡ, ΠΏΡΠ΅ΠΊΡΡΠ²Π°ΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ), ΡΠΎ ΠΈΠ΄Π²Π°Ρ ΠΌΠΈΡΠ»ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. ΠΠΎ Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Kubernetes, ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄ΠΎΡΠΈ Π΄Π° Π½Π΅ Π΅ Π½ΡΠΆΠ΅Π½, ΡΡΠΉ ΠΊΠ°ΡΠΎ Kubernetes Π²Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΎΡΠΊΡΠΈΡΠΈΠ΅ Π½Π° ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ.
ΠΠΎ Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π°ΠΏΡΠ΅Π΄Π½Π°Π»ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ, ΡΠΎ "ΠΏΠΎΠΊΡΠΏΠΊΠ°ΡΠ°" Π½Π° ΡΠ΅ΡΠ²ΠΈΡ mesh ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΄Π°Π»Π΅Ρ ΠΏΠΎ-Π΄ΠΎΠ±ΡΡ Π²Π°ΡΠΈΠ°Π½Ρ. (Π’ΠΎΠ²Π° Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ "ΠΏΠΎΠΊΡΠΏΠΊΠ°", ΡΡΠΉ ΠΊΠ°ΡΠΎ Istio Π΅ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, Π½ΠΎ Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½Π²Π΅ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅, Π·Π° Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ Ρ Π½Π°ΡΠΈΠ½Π° ΠΌΡ Π½Π° ΡΠ°Π±ΠΎΡΠ°, Π΄Π° Π³ΠΎ Π²Π½Π΅Π΄ΡΠΈΠΌ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΠΌΠ΅).
ΠΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ: Istio, Linkerd ΠΈΠ»ΠΈ Consul Connect?
ΠΠΎΡΠ΅Π³Π° Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π·Π° Istio, Π½ΠΎ ΡΠΎΠ²Π° Π½Π΅ Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ service mesh. ΠΠΎΠΏΡΠ»ΡΡΠ½Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π΅ , Π° ΠΈΠΌΠ° ΠΈ ΠΎΡΠ΅ .
ΠΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ?
Π§Π΅ΡΡΠ½ΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, Π½Π΅ Π·Π½Π°ΠΌ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π΅ ΡΠ΅ ΡΠΌΡΡΠ°ΠΌ Π·Π° Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ΅ΡΠ΅Π½ΡΠ΅Π½, Π·Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΡ Π½Π° ΡΠΎΠ·ΠΈ Π²ΡΠΏΡΠΎΡ. ΠΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π½Π° ΡΠ΅Π·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ Π΄ΠΎΡΠΈ .
ΠΠ΄ΠΈΠ½ ΠΎΡ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° . Π’ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠ»ΠΎΠΉ Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π·Π° ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ ΠΈ ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° API, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΈ ΠΎΡ service mesh-ΠΎΠ²Π΅ΡΠ΅. ΠΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΈΠ·ΡΡΠ°Π²Π°ΠΌΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ (ΠΈ, ΡΠΏΠΎΡΠ΅Π΄ ΠΌΠ΅Π½, ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΈ) API Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ service mesh-Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎ-ΠΏΡΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ SuperGloo ΠΈ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΎΡ Π΅Π΄ΠΈΠ½ Π½Π° Π΄ΡΡΠ³, ΡΡΠΊΠ°Ρ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΎΠΏΠΈΡΠ²Π°Ρ HTTP ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ, ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π·Π° Nginx, HAProxy, Traefik, Apache...
ΠΠ°Π»ΠΊΠΎ ΠΏΠΎΠΈΠ³ΡΠ°Ρ
Ρ Istio ΠΈ SuperGloo, Π° Π² ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Istio ΠΈΠ»ΠΈ Linkerd Π² ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΊΠ»ΡΡΡΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° SuperGloo ΠΈ ΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±ΡΠ΅ ΡΠ΅ ΡΠΏΡΠ°Π²Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ, ΡΠΎΠ΅ΡΡ ΠΊΠ°ΠΊ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΎΡ Π΅Π΄ΠΈΠ½ service mesh Π½Π° Π΄ΡΡΠ³ Π±Π΅Π· Π΄Π° ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
