ΠΠ°Π½Π°ΡΠ΅ΠΉΠΊΠ° Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΡΠΈΡΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΠ΅Π΅. Π’Π΅Π·ΠΈ ΠΏΡΠΈΡΠΊΠΈ ΡΠ° ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΡΠΌ ΠΌΠ΅ΡΠ°Π½ ΠΈ Π²ΡΠ³Π»Π΅ΡΠΎΠ΄Π΅Π½ ΠΎΠΊΡΠΈΠ΄. ΠΠΎΡΠΈ ΠΈ ΠΎΡ ΠΌΠ°Π»ΠΊΠ° ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠ°ΡΠΈΡ Π½Π° ΠΈΠ·Π»ΠΈΡΠ½ΠΈ Π³Π°Π·ΠΎΠ²Π΅ Π² Π²ΡΠ·Π΄ΡΡ Π°, ΡΠ΅ Π³ΡΠ±ΡΡ ΡΡΠ·Π½Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠΌΠΈΡΠ°Ρ. ΠΠ»Π°ΡΠΎΡΡΡΡΠ°ΡΠΈ ΠΈ ΠΌΠΈΠ½ΡΠΎΡΠΈ Π²Π·ΠΈΠΌΠ°Π»ΠΈ ΠΏΡΠΈΡΠΊΠΈ Ρ ΡΡΡ : Π΄ΠΎΠΊΠ°ΡΠΎ ΠΊΠ°Π½Π°ΡΠ΅ΠΉΠΊΠΈΡΠ΅ ΠΏΠ΅ΡΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ, Π° Π°ΠΊΠΎ Π·Π°ΠΌΡΠ»ΡΠ°Ρ β Π² ΠΌΠΈΠ½Π°ΡΠ° ΠΈΠΌΠ° Π³Π°Π· ΠΈ Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΡΠ½Π΅. ΠΠΈΠ½ΡΠΎΡΠΈΡΠ΅ ΠΆΠ΅ΡΡΠ²Π°Π»ΠΈ ΠΌΠ°Π»ΠΊΠ°ΡΠ° ΠΏΡΠΈΡΠΊΠ°, Π·Π° Π΄Π° ΠΈΠ·Π»ΡΠ·Π°Ρ ΠΎΡ ΠΌΠΈΠ½ΠΈΡΠ΅ ΠΆΠΈΠ²ΠΈ.

ΠΠΎΠ΄ΠΎΠ±Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π½Π°ΠΌΠΈΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π² IT. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΡΠ»ΡΠ³Π° ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅. Π’Π΅ΡΡΠΎΠ²Π°ΡΠ° ΡΡΠ΅Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²ΡΡΠ΄Π΅ ΡΠΊΡΠΏΠ°, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ Π½Π΅ ΠΏΠΎΠΊΡΠΈΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π±ΠΈΡ
ΠΌΠ΅ ΠΈΡΠΊΠ°Π»ΠΈ, Π° Π½Π΅ ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ ΠΆΠ΅ΡΡΠ²Π°ΡΠ° Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π΅ ΡΠΈΡΠΊΠΎΠ²ΠΎ. Π’ΠΎΡΠ½ΠΎ Π² ΡΠ΅Π·ΠΈ ΡΠ»ΡΡΠ°ΠΈ ΠΏΠΎΠΌΠ°Π³Π° ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ Canary Deployment, ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ ΠΌΡΠ½ΠΈΡΠΊΠ° ΡΠ°ΡΡ ΠΎΡ ΡΠ΅Π°Π»Π½ΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΎΠ½Π΅Π½ ΡΡΠ°ΡΠΈΠΊ ΡΠ΅ ΠΏΡΡΠΊΠ° Π½Π° Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΏΠΎΠΌΠ°Π³Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ, ΠΆΠ΅ΡΡΠ²Π°ΠΉΠΊΠΈ ΠΌΠ°Π»ΠΊΠΎ Π² ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ΅Π». ΠΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ, ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° Π½ΠΎΡΠΈ ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½, ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ ΠΠ½Π΄ΡΠ΅ΠΉ ΠΠ°ΡΠΊΠ΅Π»ΠΎΠ² (), Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Infobip.
ΠΠ½Π΄ΡΠ΅ΠΉ ΠΠ°ΡΠΊΠ΅Π»ΠΎΠ² β ΡΡΠ°ΡΡΠΈ ΡΠΎΡΡΡΠ΅ΡΠ΅Π½ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ Π² Infobip, ΠΊΠΎΠΉΡΠΎ Π²Π΅ΡΠ΅ 11 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Java Π² ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° ΡΠΈΠ½Π°Π½ΡΠΈΡΠ΅ ΠΈ ΡΠ΅Π»Π΅ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅. Π Π°Π·ΡΠ°Π±ΠΎΡΠ²Π° Open Source ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ, Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΡΠ°ΡΡΠ²Π° Π² Atlassian Community ΠΈ ΠΏΠΈΡΠ΅ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π·Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ Π½Π° Atlassian. ΠΠ²Π°Π½Π³Π΅Π»ΠΈΡΡ Π½Π° Prometheus, Docker ΠΈ Redis.

ΠΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Infobip
Π’ΠΎΠ²Π° Π΅ Π³Π»ΠΎΠ±Π°Π»Π½Π° ΡΠ΅Π»Π΅ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π±Π°Π½ΠΊΠΈ, ΡΡΡΠ³ΠΎΠ²ΡΠΈ Π½Π° Π΄ΡΠ΅Π±Π½ΠΎ, ΠΎΠ½Π»Π°ΠΉΠ½ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΈ ΠΈ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ²ΠΎΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΡΡΠ΅Π· SMS, push, ΠΈΠΌΠ΅ΠΉΠ»ΠΈ ΠΈ Π³Π»Π°ΡΠΎΠ²ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. Π ΡΠ°ΠΊΡΠ² Π±ΠΈΠ·Π½Π΅Ρ Π΅ Π²Π°ΠΆΠ½Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡΡΠ° ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ°, Π·Π° Π΄Π° ΠΌΠΎΠ³Π°Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° ΡΠΈ Π½Π°Π²ΡΠ΅ΠΌΠ΅.
IT ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Infobip Π² ΡΠΈΡΡΠΈ:
- 15 ΡΠ΅Π½ΡΡΠΎΠ²Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ ΠΏΠΎ ΡΠ΅Π»ΠΈΡ ΡΠ²ΡΡ;
- 500 ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π² Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ;
- 2500 ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ Π½Π° ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π±ΡΠΎΡ Π½Π° Π΅ΠΊΠΈΠΏΠΈΡΠ΅;
- 4,5 Π’Π±Π°ΠΉΡ ΠΌΠ΅ΡΠ΅ΡΠ΅Π½ ΡΡΠ°ΡΠΈΠΊ;
- 4,5 ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄Π° ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΠΈ Π½ΠΎΠΌΠ΅ΡΠ°;
ΠΠΈΠ·Π½Π΅ΡΡΡ ΡΠ°ΡΡΠ΅, Π° Ρ Π½Π΅Π³ΠΎ ΠΈ Π±ΡΠΎΡΡ Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅. ΠΠΈΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°ΠΌΠ΅ ΠΏΠΎ 60 Π²Π΅ΡΡΠΈΠΈ Π½Π° Π΄Π΅Π½, Π·Π°ΡΠΎΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΈΡΠΊΠ°Ρ Π²ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΡΠ΅ΡΡΡΡΠΈ. ΠΠΎ ΡΠΎΠ²Π° Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ β ΡΡΠ»ΡΠ³ΠΈΡΠ΅ ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ, Π° Π΅ΠΊΠΈΠΏΠΈΡΠ΅ ΠΌΠ°Π»ΠΊΠΎ. ΠΡΠΈΡ ΠΎΠ΄ΠΈ ΡΠ΅ Π±ΡΡΠ·ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΈΡΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ Π±Π΅Π· Π³ΡΠ΅ΡΠΊΠΈ.
ΠΠ΅ΡΡΠΈΠΈ
Π’ΠΈΠΏΠΈΡΠ½ΠΈΡΡ ΡΠ΅Π»ΠΈΠ· ΠΏΡΠΈ Π½Π°Ρ ΠΏΡΠΎΡΠΈΡΠ° ΡΠ°ΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ°ΠΌΠ΅ ΡΡΠ»ΡΠ³ΠΈ A, B, C, D ΠΈ E, Π²ΡΡΠΊΠ° ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π΅ΠΊΠΈΠΏ.

Π Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ Π΅ΠΊΠΈΠΏΡΡ Π½Π° ΡΡΠ»ΡΠ³Π° A ΡΠ΅ΡΠ°Π²Π° Π΄Π° ΠΏΡΡΠ½Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ, Π½ΠΎ Π΅ΠΊΠΈΠΏΠΈΡΠ΅ Π½Π° ΡΡΠ»ΡΠ³ΠΈ B, C, D ΠΈ E Π½Π΅ Π·Π½Π°ΡΡ Π·Π° ΡΠΎΠ²Π°. ΠΠΌΠ° Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° Π·Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ° Π½Π° Π΅ΠΊΠΈΠΏΠ° Π½Π° ΡΡΠ»ΡΠ³Π° A.
Π©Π΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ ΡΠ΅Π»ΠΈΠ·: ΠΏΡΡΠ²ΠΎ ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈ Π΅Π΄Π½Π° Π²Π΅ΡΡΠΈΡ, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄ΡΡΠ³Π°ΡΠ°.

ΠΠΎ ΠΈΠΌΠ° ΠΈ Π²ΡΠΎΡΠΈ Π²Π°ΡΠΈΠ°Π½Ρ: Π΅ΠΊΠΈΠΏΡΡ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΠ΅ ΠΏΡΡΠ½Π΅ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ°, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π²Π΅ΡΡΠΈΡΡΠ° ΡΠ΅ Π·Π°ΡΠ°Π±ΠΎΡΠΈ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ.

ΠΡΠ² Π²ΡΠ΅ΠΊΠΈ ΡΠ»ΡΡΠ°ΠΉ, ΡΠ»Π΅Π΄ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ ΠΏΠΎΡΡΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, Π΄ΠΎΡΠΈ ΠΈ Π²Π΅ΡΡΠΈΡΡΠ° Π΄Π° Π΅ ΡΠ΅ΡΡΠ²Π°Π½Π°. ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠ° ΡΡΡΠ½ΠΎ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ Π΄Π° Π½Π΅ ΡΠ΅ ΡΠ΅ΡΡΠ²Π° β ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠ΅ Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Ρ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΡΠ»ΡΡΠ°ΠΉ. ΠΠ°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π΅Π½ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠ°Ρ Π΅ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ Π½Π°Π·Π°Π΄ ΠΊΡΠΌ ΡΠ°Π±ΠΎΡΠ΅ΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Ρ ΡΠ΅ΡΠΈΡΠ΅, ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅ ΠΈ Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΠΌΠ΅.
Π ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅?
ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π½Π΅ ΡΠ° Π½ΠΈ Π½ΡΠΆΠ½ΠΈ. ΠΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ Π³ΠΈ ΠΎΡΠΊΡΠΈΡΡ ΠΏΠΎ-ΡΠ°Π½ΠΎ ΠΎΡ Π½Π°Ρ, ΡΠΎΠ²Π° ΡΠ΅ ΡΠ΄Π°ΡΠΈ ΡΠ΅ΠΏΡΡΠ°ΡΠΈΡΡΠ°. ΠΠΎΡΠ°Π΄ΠΈ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΌΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅.. Π Π°Π±ΠΎΡΠ΅ΠΉΠΊΠΈ ΠΏΡΠΎΠ°ΠΊΡΠΈΠ²Π½ΠΎ, Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΠΈΡΠ΅.
Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΡΠΊΠΎΡΠΈΠΌ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π΄Π° ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π±ΡΡΠ·ΠΎ, Π»Π΅ΡΠ½ΠΎ, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ ΠΈ Π±Π΅Π· ΡΡΡΠ΅Ρ Π·Π° Π΅ΠΊΠΈΠΏΠ°. ΠΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅, DevOps ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°ΡΠΈΡΠ΅Π½ΠΈ β ΡΠ΅Π»ΠΈΠ·ΡΡ Π½Π° Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π΅ ΡΡΡΠ΅ΡΠΈΡΠ°Ρ. ΠΠΊΠΈΠΏΡΡ Π½Π΅ Π΅ ΡΠ°Π·Ρ ΠΎΠ΄Π΅Π½ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», ΡΡΡΠ΅ΠΌΠΈΠΌ ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ°ΡΠΈΠΎΠ½Π°Π»Π½ΠΎ ΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ..
ΠΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡΡ ΡΡΠ°ΡΠΈΠΊ Π΅ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌ. ΠΠ΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈ, ΠΊΠΎΠ³Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡΡ ΡΡΠ°ΡΠΈΠΊ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½. ΠΠ΅ Π·Π½Π°Π΅ΠΌ ΠΊΡΠ΄Π΅ ΠΈ ΠΊΠΎΠ³Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΡΠ²ΠΎΠΈΡΠ΅ ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΈ β ΠΌΠΎΠΆΠ΅ Π±ΠΈ ΡΠ°Π·ΠΈ Π½ΠΎΡ Π² ΠΠ½Π΄ΠΈΡ, Π° ΡΡΡΠ΅ Π² Π₯ΠΎΠ½Π³ ΠΠΎΠ½Π³. Π‘ ΠΎΠ³Π»Π΅Π΄ Π½Π° Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° Π² ΡΠ°ΡΠΎΠ²ΠΈΡΠ΅ Π·ΠΎΠ½ΠΈ, ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π΄ΠΎΡΠΈ Π² 2 ΡΠ°ΡΠ° ΠΏΡΠ΅Π· Π½ΠΎΡΡΠ° Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ Π½ΡΠΌΠ° Π΄Π° ΠΏΠΎΡΡΡΠ°Π΄Π°Ρ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈΡΠ΅. ΠΠ΅ΡΠ΅Π½Π΄ΠΆΡΡΠΈΡΠ΅ ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈΡΠ΅ ΡΠ° Π½Π°ΡΠΈ ΠΏΠ°ΡΡΠ½ΡΠΎΡΠΈ. ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΠ΅ ΠΈΠΌΠ°Ρ ΡΡΠΈΠ²ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ.
Π Π°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π΅ΠΊΠΈΠΏΠΈ. ΠΠΊΠΈΠΏΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°ΡΠ° ΡΠ°ΡΡ ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄Π°, ΡΠ° Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°ΡΠΎΠ²ΠΈ Π·ΠΎΠ½ΠΈ. ΠΠΎΡΠ°Π΄ΠΈ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ΅ΡΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠΏΠΎΡΠ°Π·ΡΠΌΠ΅ΡΡ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ.
ΠΠ°ΡΠ° ΡΠ΅Π½ΡΡΠΎΠ²Π΅ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΡ Π² ΡΡΠ΅ΠΉΠ΄ΠΆ. Π Π΅Π΄ΠΈΠ½ Π΄Π°ΡΠ° ΡΠ΅Π½ΡΡΡ ΠΈΠΌΠ° 200 ΡΡΠΎΠΉΠΊΠΈ β Π΄Π° ΠΏΠΎΠ²ΡΠΎΡΠΈΡ ΡΠΎΠ²Π° Π² ΠΏΠ΅ΡΡΡΠ½ΠΈΡΠ° Π΄ΠΎΡΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ Π΄Π°ΡΠ½ΡΠ°ΠΉΠΌΡ!ΠΠ΅ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ! ΠΠΌΠ°ΠΌΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ Π½ΠΈΠ²ΠΎ Π½Π° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ (Error Budget), ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ 99,99% ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π° ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅Π½ΡΠΈ ΡΠ° "ΠΏΡΠ°Π²ΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠ°". ΠΠΎΡΡΠΈΠ³Π°Π½Π΅ΡΠΎ Π½Π° 100% Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ»Π΅Π΄ΡΡ ΡΡΠΈΠ²ΠΎΠ²Π΅ΡΠ΅ ΠΈ ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½ΠΈΡΡΠ°.
ΠΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ° ΠΏΠΈΡΠ° ΠΊΠΎΠ΄ Π±Π΅Π· Π±ΡΠ³ΠΎΠ²Π΅.ΠΠΎΠ³Π°ΡΠΎ Π±ΡΡ ΠΌΠ»Π°Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠΈ ΡΠ΅ ΠΎΠ±ΡΡΡΠ°Ρ Π° ΠΊΡΠΌ ΠΌΠ΅Π½ Ρ ΠΌΠΎΠ»Π±Π° Π΄Π° ΠΏΡΠΎΠ²Π΅Π΄Π° ΡΠ΅Π»ΠΈΠ· Π±Π΅Π· Π±ΡΠ³ΠΎΠ²Π΅, Π½ΠΎ ΡΠΎΠ²Π° Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΠ° ΠΏΠΈΡΠ° ΡΠ΅ΡΡΠΎΠ²Π΅.Π’Π΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ, Π½ΠΎ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΡΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΈΡΠΊΠ° Π±ΠΈΠ·Π½Π΅ΡΡΡ. ΠΡΠ°Π²Π΅Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΡΠΈ Π½Π΅ Π΅ ΡΠ°Π±ΠΎΡΠ° Π½Π° ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅.
ΠΠ° ΡΠ΅ΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ΅ΠΉΠ΄ΠΆ.ΠΡΠ΅Π· 3,5 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ° Π² Infobip, Π½ΠΈΡΠΎ Π½Π΅ ΡΡΠΌ Π²ΠΈΠΆΠ΄Π°Π», ΠΊΠΎΠ΅ΡΠΎ Π΄Π° ΡΡΠ²ΠΏΠ°Π΄Π° ΠΏΠΎΠ½Π΅ ΡΠ°ΡΡΠΈΡΠ½ΠΎ Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΡΠ°.

ΠΠΏΠΈΡΠ°Ρ
ΠΌΠ΅ ΡΠ΅ Π΄ΠΎΡΠΈ Π΄Π° ΡΠ°Π·Π²ΠΈΠ΅ΠΌ ΡΠ°Π·ΠΈ ΠΈΠ΄Π΅Ρ: ΠΏΡΡΠ²ΠΎ ΠΈΠΌΠ°Ρ
ΠΌΠ΅ ΡΡΠ΅ΠΉΠ΄ΠΆ, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠ΅ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½, Π° ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½ Π½Π° ΠΏΡΠ΅ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½. ΠΠΎ ΠΈ ΡΠΎΠ²Π° Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π° β ΡΠ΅ Π½Π΅ ΡΡΠ²ΠΏΠ°Π΄Π°Π»ΠΈ Π΄ΠΎΡΠΈ ΠΏΠΎ ΠΌΠΎΡΠ½ΠΎΡΡ. Π‘ΡΡ ΡΡΠ΅ΠΉΠ΄ΠΆΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°ΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅ΠΌ ΠΊΠ°ΠΊ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ.
Π Π΅Π»ΠΈΠ·ΡΡ ΠΏΡΠ°Π²ΠΈ ΡΠΎΠ·ΠΈ, ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π». Π’ΠΎΠ²Π° Π΅ Π΄ΠΎΠ±ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°: Π΄ΠΎΡΠΈ Π°ΠΊΠΎ Π½ΡΠΊΠΎΠΉ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ΅Π½ΡΠ°Ρ, Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ. Π’ΠΎΠ²Π° ΠΏΠΎΠΌΠ°Π³Π° Π·Π° ΡΠ°Π·Π²ΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° ΠΈ Π·Π° Π½Π΅ Π·Π°Π±ΡΠ°Π²ΡΠ½Π΅ Π½Π° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ.
ΠΠΌΠ° ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π΅ ΡΡΡΠ΅ΡΠΈΡΠ°ΡΠΎ β Π΄Π° Π³ΡΠ±ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅, Π·Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΡΡΠ½ΠΎ.
Π‘ΡΠ³Π»Π°ΡΡΠ²Π°Π½ΠΈ ΡΠ΅Π»ΠΈΠ·ΠΈ.Π’ΠΎΠ·ΠΈ Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΠΌΡΠ½ΡΠ°: "ΠΠ΅ΠΊΠ° ΡΠ΅ ΡΠΏΠΎΡΠ°Π·ΡΠΌΠ΅Π΅ΠΌ, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ Π΄Π΅Π½ ΡΠ΅ ΡΠ΅ΡΡΠ²Π°ΡΠ΅ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ". Π’ΠΎΠ²Π° Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ: Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ° Π΅ΠΊΠΈΠΏ, ΠΊΠΎΠΉΡΠΎ ΡΠ°ΠΊΠ° Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΈΠ»ΠΈ ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΡΠΎ.
Smoke-ΡΠ΅ΡΡΠΎΠ²Π΅.
ΠΡΠ΅ Π΅Π΄ΠΈΠ½ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ Π΄Π΅ΠΏΠ»ΠΎΡ. ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΡΡ smoke-ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ΠΊΠΈΠΏ A ΠΈΡΠΊΠ° Π΄Π° Π΄Π΅ΠΏΠ»ΠΎΠΉΠ½Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ.
ΠΡΡΠ²ΠΎ Π΅ΠΊΠΈΠΏΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΉΠ²Π° Π΅Π΄ΠΈΠ½ ΠΈΠ½ΡΡΠ°Π½Ρ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ. Π‘ΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π² ΠΈΠ½ΡΡΠ°Π½ΡΠ° ΠΎΡ ΠΌΠΎΠΊΠΎΠ²Π΅ΡΠ΅ ΠΈΠΌΠΈΡΠΈΡΠ°Ρ ΡΠ΅Π°Π»Π΅Π½ ΡΡΠ°ΡΠΈΠΊ, Π·Π° Π΄Π° ΡΡΠ²ΠΏΠ°Π΄Π½Π΅ Ρ Π½ΠΎΡΠΌΠ°Π»Π½ΠΈΡ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π΅Π½ ΡΡΠ°ΡΠΈΠΊ. ΠΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄, Π΅ΠΊΠΈΠΏΡΡ ΠΏΡΠ΅Ρ Π²ΡΡΠ»Ρ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΡΡΠ°ΡΠΈΠΊ.

ΠΡΠΎΡΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ β Π΄Π° Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅ Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ Ρ
Π°ΡΠ΄ΡΠ΅Ρ. ΠΠΊΠΈΠΏΡΡ Π³ΠΎ ΡΠ΅ΡΡΠ²Π° Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠ΅Ρ
Π²ΡΡΠ»Ρ ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ.

ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ Π½Π° smoke-ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅:
- ΠΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ²Π΅ΡΡΡΡ ΡΠ΅ΡΡΠ°ΠΌ. ΠΡΠ΄Π΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΠΌ ΡΡΡΠΈΡ ΡΡΠ°ΡΠΈΠΊ, ΠΊΠ°ΠΊΡΠΎ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΡΠ°? ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ°ΡΠΈΠΊ ΠΎΡ Π²ΡΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈ ΡΠ΅Π΄ΠΌΠΈΡΠ°, Π½ΠΎ ΡΠΎΠΉ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΡΡΠ²ΠΏΠ°Π΄Π° Ρ Π°ΠΊΡΡΠ°Π»Π½ΠΈΡ.
- Π’ΡΡΠ΄Π½ΠΎ Π΅ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅. Π©Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π°ΠΊΠ°ΡΠ½ΡΠΈ, ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π΄Π° Π³ΠΈ Π½ΡΠ»ΠΈΡΠ°ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ Π²ΡΡΠΊΠΎ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅, ΠΊΠΎΠ³Π°ΡΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΄Π° ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ΅ΡΡ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠΈ ΠΏΠ΅ΡΠ΅Π½Π½ΠΈΡΠ°.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ ΡΡΠΊ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°.
Canary-ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅
ΠΠΎΡΠ°Π΄ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΡΠ΅ Π½Π° smoke ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ canary-ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅.
ΠΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ΡΠ°Π·ΠΈ, ΠΊΠ°ΠΊΠ²Π°ΡΠΎ ΠΌΠΈΠ½ΡΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ ΠΊΠ°Π½Π°ΡΠΊΠΈ Π·Π° ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΡ Π½Π° Π½ΠΈΠ²Π°ΡΠ° Π½Π° Π³Π°Π·, Π½Π°ΠΌΠ΅ΡΠΈ ΡΠ²ΠΎΡ ΠΈΠ·ΡΠ°Π· ΠΈ Π² IT. ΠΡΡΠΊΠ°ΠΌΠ΅ ΠΌΠ°Π»ΠΊΠΎ ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΡΡΠ°ΡΠΈΠΊ Π½Π° Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠΏΠ°Π·ΠΈΠΌ Service Level Agreement (SLA). SLA Π΅ Π½Π°ΡΠ΅ΡΠΎ "ΠΏΡΠ°Π²ΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠ°", ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π²Π΅Π΄Π½ΡΠΆ Π³ΠΎΠ΄ΠΈΡΠ½ΠΎ (ΠΈΠ»ΠΈ Π·Π° Π½ΡΠΊΠ°ΠΊΡΠ² Π΄ΡΡΠ³ ΠΏΠ΅ΡΠΈΠΎΠ΄). ΠΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄, ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ°ΡΠΈΠΊ. ΠΠΊΠΎ Π½Π΅ β ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ.

Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π½ΡΠ°Π½ΡΠΈ
ΠΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΌΠ΅ canary-ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π³ΡΡΠΏΠ° ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π· Π½Π°ΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡ.

Π Π°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ ΠΏΡΠΎΡΠΈΡΠ° ΡΠ°ΠΊΠ°: ΡΠ²Π°Π»ΡΠΌΠ΅ Π΅Π΄ΠΈΠ½ Π²ΡΠ·Π΅Π» ΠΎΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ° (1), ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ Π²Π΅ΡΡΠΈΡΡΠ° (2) ΠΈ ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΏΡΡΠΊΠ°ΠΌΠ΅ ΠΌΠ°Π»ΠΊΠΎ ΡΡΠ°ΡΠΈΠΊ (3).

Π ΠΎΠ±ΡΠΈ Π»ΠΈΠ½ΠΈΠΈ, Π² Π³ΡΡΠΏΠ°ΡΠ° ΡΠ΅ ΡΠ° Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ Π²ΡΠΈΡΠΊΠΈ, Π΄ΠΎΡΠΈ Π°ΠΊΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π½Π΅ Π΅. ΠΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄ β ΡΠΌΠ΅Π½ΡΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ.

Π©Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ° ΡΡ
Π΅ΠΌΠ°ΡΠ°, ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π·Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅ Π² ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ»ΡΡΠ°ΠΈ.
ΠΠΌΠ° Service Discovery ΠΈ Π΄Π²Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΡΠ²ΠΈΡΠ°: S1N1 ΠΈ S2. ΠΡΡΠ²ΠΈΡΡ ΡΡΡΠ²ΠΈΠ· (S1N1) ΡΠ²Π΅Π΄ΠΎΠΌΡΠ²Π° Service Discovery, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°, Π° Service Discovery Π³ΠΎ Π·Π°ΠΏΠΎΠΌΠ½Ρ. ΠΡΠΎΡΠΈΡΡ ΡΡΡΠ²ΠΈΠ· Ρ Π΄Π²Π° Π²ΡΠ·Π΅Π»Π° (S2N1 ΠΈ S2N2) ΡΡΡΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΡΠ²Π° Service Discovery ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ.

ΠΡΠΎΡΠΈΡΡ ΡΡΡΠ²ΠΈΠ· Π·Π° ΠΏΡΡΠ²ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° ΠΊΠ°ΡΠΎ ΡΡΡΠ²ΡΡ. ΠΡΡΠ²ΠΈΡΡ Π·Π°ΠΏΠΈΡΠ²Π° Service Discovery Π·Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠ²ΠΎΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠΈ, Π° ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π° β Π³ΠΈ Π½Π°ΠΌΠΈΡΠ° ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° (Β«health checkΒ»). ΠΠΎΠ³Π°ΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΈΠΌ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ³Π°ΡΠΎ Π½ΡΠΊΠΎΠΉ ΠΈΡΠΊΠ° Π΄Π° ΡΠ°Π·Π³ΡΡΡΠ° Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Π²ΡΠΎΡΠΈΡ ΡΡΡΠ²ΠΈΠ·, ΡΠΎΠΉ ΡΠ²Π΅Π΄ΠΎΠΌΡΠ²Π° Service Discovery, ΡΠ΅ Π²ΡΠΎΡΠΈΡΡ Π²ΡΠ·Π΅Π» ΡΠ΅ Π±ΡΠ΄Π΅ canary-Π²ΡΠ·Π΅Π»: ΠΊΡΠΌ Π½Π΅Π³ΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΡΠ°ΡΠΈΠΊ, Π·Π°ΡΠΎΡΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅. Π‘Π²Π°Π»ΡΠΌΠ΅ canary-Π²ΡΠ·Π΅Π»Π° ΠΎΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ° ΠΈ ΠΏΡΡΠ²ΠΈΡΡ ΡΡΡΠ²ΠΈΠ· Π½Π΅ ΠΌΡ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΠΊ.

ΠΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ Π²Π΅ΡΡΠΈΡΡΠ° ΠΈ Service Discovery Π·Π½Π°Π΅, ΡΠ΅ Π²ΡΠΎΡΠ°ΡΠ° Π½ΠΎΠ΄Π° Π²Π΅ΡΠ΅ Π΅ canary β ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΉ Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ (5%). ΠΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄, ΡΠΌΠ΅Π½ΡΠΌΠ΅ Π²Π΅ΡΡΠΈΡΡΠ°, Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π½Π°ΠΏΡΠ΅Π΄.
ΠΠ° Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π°, ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ:
- Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅;
- ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π·Π½Π°Π΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΡΠ°ΠΊΠ²Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΈ ΠΊΠ°ΠΊ Π΄Π΅ΡΠ°ΠΉΠ»Π½ΠΎ ΡΠ°Π±ΠΎΡΡΡ Π½Π°ΡΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ;
- Π°Π½Π°Π»ΠΈΠ· Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±ΡΠ΅ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° ΡΡΠ΅Π΄Π°;
- Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ° β ΠΏΠΈΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ (deployment pipeline).

ΠΠ°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅
Π’ΠΎΠ²Π° Π΅ ΠΏΡΡΠ²ΠΎΡΠΎ, Π·Π° ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠΌΠΈΡΠ»ΠΈΠΌ. ΠΠΌΠ° Π΄Π²Π΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅.
ΠΠ°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ Π΅Π΄Π½Π° Π½ΠΎΠ΄Π° Π²ΠΈΠ½Π°Π³ΠΈ Π΅ canary. Π’Π°Π·ΠΈ Π½ΠΎΠ΄Π° Π²ΠΈΠ½Π°Π³ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΡΠ°ΡΠΈΠΊ ΠΈ Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΎΡ Π½Π΅Ρ. Π ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠ΅ ΡΡΠ°Π²Π½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΠΉ ΠΏΡΠ΅Π΄ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π½Π΅Π³ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Ρ Π΄Π²Π° ΠΏΡΡΠΈ, Π·Π½Π°ΡΠΈ ΠΈ ΡΠ΅ΡΠΈΡΠ΅ ΡΠ° Π½Π°ΡΠ°ΡΠ½Π°Π»ΠΈ Π΄Π²Π° ΠΏΡΡΠΈ.
Canary-Π½ΠΎΠ΄Π° ΡΠ΅ Π·Π°Π΄Π°Π²Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ. ΠΠΎΠ³Π°ΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠΈ ΠΈ ΠΉ Π±ΡΠ΄Π΅ ΠΎΡΠ½Π΅Ρ ΡΡΠ°ΡΡΡΡΡ canary, Π±Π°Π»Π°Π½ΡΡΡ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° ΡΠ΅ Π±ΡΠ΄Π΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²Π΅Π½. Π‘ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠ΅ΡΡΠ½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
ΠΡΠ°ΠΉΠ½Π°ΡΠ° ΠΎΡΠ½ΠΎΠ²Π° Π½Π° canary ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅. Π’ΡΡΠ±Π²Π° ΡΠΎΡΠ½ΠΎ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π·Π°ΡΠΎ Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠΌ ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΡΠ±Π΅ΡΠ΅ΠΌ.
ΠΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ.
- ΠΡΠΎΠΉ Π³ΡΠ΅ΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π² Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅. Π’ΠΎΠ²Π° Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π», ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΡΠΎ ΡΡΡΠ±Π²Π°. ΠΡΠΎΠ±ΡΠ΅, ΡΠΎΠ²Π° Π΅ Π΄ΠΎΠ±ΡΠ° ΠΌΠ΅ΡΡΠΈΠΊΠ°.
- ΠΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ (latency). Π’Π°Π·ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠ° ΡΠ΅ ΡΠ»Π΅Π΄ΠΈ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ, Π·Π°ΡΠΎΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΈΡΠΊΠ°Ρ Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Π±ΡΡΠ·ΠΎ.
- Π Π°Π·ΠΌΠ΅Ρ Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° (throughput).
- ΠΡΠΎΠΉ ΡΡΠΏΠ΅ΡΠ½ΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°.
- ΠΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° 95% ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Π·Π°ΡΠ²ΠΊΠΈ.
- ΠΠΈΠ·Π½Π΅Ρ ΠΌΠ΅ΡΡΠΈΠΊΠΈ: ΠΊΠΎΠ»ΠΊΠΎ ΠΏΠ°ΡΠΈ ΠΏΠ΅ΡΠ΅Π»ΠΈ Π±ΠΈΠ·Π½Π΅ΡΡΡ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠ»ΠΈΠ² Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ. Π’Π΅Π·ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π·Π° Π½Π°ΡΠ°ΡΠ° Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎ-Π²Π°ΠΆΠ½ΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅.
ΠΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π² ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³.
Counter. Π’ΠΎΠ²Π° Π΅ Π½ΡΠΊΠ°ΠΊΠ²Π° ΡΠ°ΡΡΡΡΠ° Π²Π΅Π»ΠΈΡΠΈΠ½Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π±ΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅. Π’Π°Π·ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠ° Π΅ Π»Π΅ΡΠ½Π° Π·Π° ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»Π°ΡΠΈΡ ΠΈ ΠΈΠ·ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π³ΡΠ°ΡΠΈΠΊ: Π²ΡΠ΅ΡΠ° ΠΈΠΌΠ°ΡΠ΅ 2 Π³ΡΠ΅ΡΠΊΠΈ, Π° Π΄Π½Π΅Ρ 500, Π·Π½Π°ΡΠΈ Π½Π΅ΡΠΎ Π½Π΅ Π΅ Π½Π°ΡΠ΅Π΄.
ΠΡΠΎΡΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ Π² ΠΌΠΈΠ½ΡΡΠ° ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΠ½Π΄Π°, Π΅ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π», ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Counter. Π’Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π΄Π°Π²Π°Ρ ΡΡΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° Π·Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π½Π° ΡΠ°Π·ΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π³ΡΠ°ΡΠΈΠΊ Π½Π° Π±ΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ Π² ΡΠ΅ΠΊΡΠ½Π΄Π° Π·Π° Π΄Π²Π΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°.

Π ΠΏΡΡΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ°Π»ΠΊΠΎ Π³ΡΠ΅ΡΠΊΠΈ, ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π°ΡΠ΄ΠΈΡΡΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅. ΠΡΠ² Π²ΡΠΎΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π²ΡΠΈΡΠΊΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π»ΠΎΡΠΎ. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ Ρ ΡΠΎΡΠ½ΠΎΡΡ, ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, Π·Π°ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° Π²ΡΡΠ½Π΅ΠΌ ΡΠ°Π·ΠΈ Π²Π΅ΡΡΠΈΡ.
Gauge. ΠΠ΅ΡΡΠΈΠΊΠΈΡΠ΅ ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° Counter, Π½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ ΠΊΠ°ΠΊΡΠΎ Π΄Π° ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Ρ, ΡΠ°ΠΊΠ° ΠΈ Π΄Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ°.
ΠΠ° Π³ΡΠ°ΡΠΈΠΊΠ° Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ (latency). ΠΠΎ Π³ΡΠ°ΡΠΈΠΊΠ° ΡΠ΅ Π²ΠΈΠΆΠ΄Π°, ΡΠ΅ Π²Π΅ΡΡΠΈΠΈΡΠ΅ ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ. ΠΠΎ Π°ΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅ ΠΊΠ°ΠΊ Π²Π΅Π»ΠΈΡΠΈΠ½Π°ΡΠ° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ. ΠΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° Ρ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ Π΅ ΡΡΠ½ΠΎ, ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ β ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π½Π΅ Π±Π΅ΡΠ΅ ΡΠ°ΠΊΠ°.

Summary. ΠΠ΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π·Π° Π±ΠΈΠ·Π½Π΅ΡΠ° Π΅ ΠΏΠ΅ΡΡΠ΅Π½ΡΠΈΠ»ΠΈΡΠ΅. ΠΠ΅ΡΡΠΈΠΊΠ°ΡΠ° ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ Π² 95% ΠΎΡ ΡΠ»ΡΡΠ°ΠΈΡΠ΅ Π½Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠΌ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° Π½ΡΠΊΠΎΠΈ ΠΌΠ΅ΡΡΠ°, Π·Π°ΡΠΎΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΎΠ±ΡΠ°ΡΠ° ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ, ΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±ΡΠ΅ ΠΈΠ»ΠΈ Π·Π»Π΅ Π΅ Π²ΡΠΈΡΠΊΠΎ.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ
ELK Stack. Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° canary ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ°Π½Π΅ ΡΡΠ΅Π· Elasticsearch β Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π² Π½Π΅Π³ΠΎ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π°ΡΡΡΠΏΠ²Π°Ρ ΡΡΠ±ΠΈΡΠΈΡ. Π‘ ΠΏΡΠΎΡΡ API ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ Π±ΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈ Π΄Π° Π³ΠΈ ΡΡΠ°Π²Π½ΠΈΠΌ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈ: GET /applg/_cunt?q=level:errr.
Prometheus. ΠΠΎΠ±ΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈ Π² Infobip. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΅ΡΠΈΠΊΠ΅ΡΠΈ.
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ level, instance, service, Π΄Π° Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ Π² Π΅Π΄Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. Π‘ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° offset ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π²Π΅Π»ΠΈΡΠΈΠ½Π°ΡΠ° ΠΏΡΠ΅Π΄ΠΈ Π΅Π΄Π½Π° ΡΠ΅Π΄ΠΌΠΈΡΠ° ΡΠ°ΠΌΠΎ Ρ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° GET /api/v1/query?query={query}, ΠΊΡΠ΄Π΅ΡΠΎ {query}:
rate(logback_appender_total{
level="error",
instance=~"$instance"
}[5m] offset $offset_value)ΠΠ½Π°Π»ΠΈΠ· Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅
ΠΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅.
ΠΠ° Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΠΌΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈΡΠ΅ ΡΠ°ΠΌΠΎ Π½Π° canary-Π½ΠΎΠ΄Π°. ΠΠ΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΈ: Π²Π½Π΅Π΄ΡΡΠ²Π°ΠΌΠ΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ ΠΈ ΠΈΠ·ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅. ΠΠΎ Π°ΠΊΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡΡ Π² ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π° Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅, ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π½Π΅ΡΠ²Π½ΠΎ ΠΏΡΠ΅Π·Π°ΡΠ΅ΠΆΠ΄Π°ΠΉΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅, ΡΠΎ ΡΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΎΡ ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅.
Canary-Π½ΠΎΠ΄Π° ΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π° Ρ Π²ΡΡΠΊΠ° Π΄ΡΡΠ³Π° Π½ΠΎΠ΄Π°. Π’ΠΎΠ²Π° Π΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Π½Π° ΠΏΡΠ»Π΅Π½ ΡΡΠ°ΡΠΈΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Ρ ΠΌΠ°Π»ΡΠΊ ΡΡΠ°ΡΠΈΠΊ Π½Π΅ΡΠ°ΡΠ° ΡΠ° ΠΏΠΎ-Π·Π»Π΅ ΠΈΠ»ΠΈ Π½Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π½Π° ΡΠ΅Π°Π»Π½ΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ, Π·Π½Π°ΡΠΈ Π½Π΅ΡΠΎ Π½Π΅ Π΅ Π½Π°ΡΠ΅Π΄.
Canary-Π½ΠΎΠ΄Π° ΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π° ΡΡΡ ΡΠ΅Π±Π΅ ΡΠΈ Π² ΠΌΠΈΠ½Π°Π»ΠΎΡΠΎ. ΠΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π·Π° canary, ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈ Ρ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π±ΠΈΠ»ΠΎ Π½Π°ΡΠ΅Π΄ ΠΏΡΠ΅Π΄ΠΈ ΡΠ΅Π΄ΠΌΠΈΡΠ°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅ΠΌ Π½Π° ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ.
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ°
ΠΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΠΌ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅ ΠΎΡ ΡΡΡΠ½ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅, Π·Π°ΡΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ. ΠΡΠΎΡΠ΅ΡΡΡ Π½Π° Π΄Π΅ΠΏΠ»ΠΎΠΉ (deployment pipeline) ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
- ΡΡΠ°ΡΡ;
- ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠ΅ Π½ΠΎΠ΄Π° ΠΎΡ Π±Π°Π»Π°Π½ΡΠ΅ΡΠ°;
- ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ canary-Π½ΠΎΠ΄Π°;
- Π²ΠΊΠ»ΡΡΠ²Π°ΠΌΠ΅ Π±Π°Π»Π°Π½ΡΠ΅ΡΠ° Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠΈΠΊ;
- ΡΡΠ°Π²Π½ΡΠ²Π°ΠΌΠ΅.

ΠΠ° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅. ΠΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΈ Π·Π°ΡΠΎ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ ΠΎΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ»Π΅Π΄ Π΄Π΅ΠΏΠ»ΠΎΠΉ, ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΎΡ Jenkins.
Π’ΠΎΠ²Π° Π΅ pipeline ΠΊΡΠΌ Groovy.
while (System.currentTimeMillis() < endCanaryTs) {
def isOk = compare(srv, canary, time, base, offset, metrics)
if (isOk) {
sleep DEFAULT SLEEP
} else {
echo "Canary Π½Π΅ΡΡΠΏΠ΅ΡΠ΅Π½, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΅ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ"
return false
}
} Π’ΡΠΊ Π² ΡΠΈΠΊΡΠ»Π° Π·Π°Π΄Π°Π²Π°ΠΌΠ΅, ΡΠ΅ ΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π°ΠΌΠ΅ Π½ΠΎΠ²Π°ΡΠ° Π½ΠΎΠ΄Π° Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Ρ. ΠΠΊΠΎ canary ΠΏΡΠΎΡΠ΅ΡΡΡ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π·Π°Π²ΡΡΡΠ΅Π½ β ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΡΡΠ°. Π’Ρ ΡΡΠΎΠ±ΡΠ°Π²Π° Π΄Π°Π»ΠΈ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄ ΠΈΠ»ΠΈ Π½Π΅: def isOk = compare(srv, canary, time, base, offset, metrics).
ΠΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄ β sleep DEFAULT SLEEP, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΡΠ΅ΠΊΡΠ½Π΄Π°, ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅. ΠΠΊΠΎ Π½Π΅ β ΠΈΠ·Π»ΠΈΠ·Π°ΠΌΠ΅, Π΄Π΅ΠΏΠ»ΠΎΠΉΡΡ Π½Π΅ Π΅ ΡΡΠΏΠ΅ΡΠ΅Π½.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠ°ΡΠ°. ΠΠ° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° compare Π² ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π° DSL.
metric(
'errorCounts',
'rate(errorCounts{node=~"$canaryInst"}[5m] offset $offset)',
{ baseValue, canaryValue ->
if (canaryValue > baseValue * 1.3) return false
return true
}
)ΠΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π°ΠΌΠ΅ Π±ΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΈ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π° Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ 5 ΠΌΠΈΠ½ΡΡΠΈ.
ΠΠΌΠ°ΠΌΠ΅ Π΄Π²Π΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ: Π±Π°Π·ΠΎΠ²Π° ΠΈ canary-Π½ΠΎΠ΄Π°. Π‘ΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° canary-Π½ΠΎΠ΄Π° Π΅ ΡΠ΅ΠΊΡΡΠ°ΡΠ°. ΠΠ°Π·ΠΎΠ²Π°ΡΠ° Π΅ baseValue β ΡΠΎΠ²Π° Π΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π²ΡΡΠΊΠ° Π΄ΡΡΠ³Π° Π½Π΅ canary-Π½ΠΎΠ΄Π°. Π‘ΡΠ°Π²Π½ΡΠ²Π°ΠΌΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ ΠΏΠΎ ΡΠΎΡΠΌΡΠ»Π°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠΌΠ΅ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΎΠΏΠΈΡΠ° ΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡΡΠ° ΡΠΈ. ΠΠΊΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° canaryValue Π΅ Π»ΠΎΡΠ°, Π΄Π΅ΠΏΠ»ΠΎΠΉΡΡ Π½Π΅ Π΅ ΡΡΠΏΠ΅ΡΠ΅Π½ ΠΈ ΡΠ΅ Π²ΡΡΡΠ°ΠΌΠ΅ Π½Π°Π·Π°Π΄.
ΠΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ?
Π§ΠΎΠ²Π΅ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈ ΡΡΠΎΡΠΈΡΠΈ ΠΈ Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΠΎΡΠ΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΠΎΠ²Π° Π±ΡΡΠ·ΠΎ. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΡ Π²ΡΠΈΡΠΊΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΈ Π±ΡΡΠ·ΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΡΠ²Π° Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π΅ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ: Π°ΠΊΠΎ Π½Π΅ΡΠΎ ΡΠ΅ Π΅ ΡΠ»ΡΡΠΈΠ»ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ 2 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π²ΡΠ΅Π΄Π°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠ°, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π°ΠΊΠΎ Π΅ ΡΡΠ°Π½Π°Π»ΠΎ 15 ΠΌΠΈΠ½ΡΡΠΈ ΠΏΠΎ-ΡΠ°Π½ΠΎ. ΠΠΎΠΊΠ°ΡΠΎ Π½ΡΠΊΠΎΠΉ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½Π°ΠΏΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½ΠΈ Π΄Π° Π²ΡΡΠ½Π΅, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°Π³ΡΠ±ΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ.
ΠΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π» ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π΅ΠΏΠ»ΠΎΡΠ²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΠΎΡΡΠ°Π½Π°Π»ΠΈ Π½ΠΎΠ΄ΠΎΠ²Π΅. ΠΡΠ΅Π· ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅ Π½Π΅ ΠΏΡΠ°Π²ΡΡ Π½ΠΈΡΠΎ. Π‘Π°ΠΌΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Ρ canary, ΡΠ΅ΡΠ°Π²Π°Ρ ΠΊΠ°ΠΊΠ²ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π΄Π° Π²Π·Π΅ΠΌΠ°Ρ, ΠΊΠΎΠ»ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΊΠ°ΠΊΠ²Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ.

ΠΠΊΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π²ΡΡΡΠ°ΠΌΠ΅ canary-Π½ΠΎΠ΄Π°, ΡΠ°Π±ΠΎΡΠΈΠΌ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΡΠΌΠ΅ ΠΎΡΠΊΡΠΈΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ. ΠΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠΈΡΠ΅ Π»Π΅ΡΠ½ΠΎ ΡΠ΅ ΠΎΡΠΊΡΠΈΠ²Π°Ρ ΠΈ Π²ΠΈΠΆΠ΄Π°Ρ ΡΠ΅ΡΠΈΡΠ΅ ΠΎΡ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ.
ΠΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΡ
Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ²Π°, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π½Π΅ Π΅ Π»Π΅ΡΠ½ΠΎ. ΠΡΡΠ²ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅ ΠΎΠ±ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³. ΠΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅ ΠΈΠΌΠ°Ρ ΡΠ²ΠΎΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° ΠΈ Π°Π½Π°Π»ΠΈΡΠΈΡΠΈΡΠ΅ β Π΄ΡΡΠ³ΠΈ, Π±ΠΈΠ·Π½Π΅ΡΡΡ β ΡΡΠ΅ΡΠΈ. ΠΠ±ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π΅ ΠΎΠ±Ρ Π΅Π·ΠΈΠΊ, Π½Π° ΠΊΠΎΠΉΡΠΎ Π³ΠΎΠ²ΠΎΡΡΡ Π±ΠΈΠ·Π½Π΅ΡΡΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°.
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈΡΠ΅. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅, ΠΊΠ°ΠΊΡΠ² ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ, Π·Π° Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ.
ΠΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΠΌ? ΠΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ canary-ΡΠ΅ΡΠ²ΠΈΡ Π½Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π΄Π΅ΠΏΠ»ΠΎΠΉ. ΠΠΎΠ±Π°Π²ΡΠΌΠ΅ Π½Π° ΡΡΠ°ΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½ΡΠΊΠ°ΠΊΡΠ² ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΠΉΡΠΎ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π·Π΅ΠΌΠ΅ ΠΊΠΎΡΡΠΎ ΠΈ Π΄Π° Π΅ ΠΎΡΠ΄Π΅Π»Π½Π° Π½ΠΎΠ΄Π°, Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ ΡΡΠ°ΡΠΈΠΊΠ° Π±Π΅Π· Π΄Π΅ΠΏΠ»ΠΎΠΉ. ΠΠΎΡΠ»Π΅ ΡΡΠ°Π²Π½ΡΠ²Π°ΠΌΠ΅: ΠΈΠ·ΡΡΠ°Π²Π°ΠΌΠ΅ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΈ ΡΡΡΡΠΈΠΌ Π³ΡΠ°Π½ΠΈΡΠ°ΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π½Π΅ΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ.

ΠΠ°ΠΊΠ²Π° ΠΏΠΎΠ»Π·Π° ΠΏΠΎΠ»ΡΡΠΈΡ ΠΌΠ΅ ΠΎΡ canary-Π²Π΅ΡΡΠΈΠΈ
ΠΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°Ρ ΠΌΠ΅ ΠΏΡΠΎΡΠ΅Π½ΡΠ° Π½Π° ΡΠ΅ΡΠΈΡΠ΅ ΠΎΡ Π±ΡΠ³ΠΎΠ²Π΅. ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΡΠ΅ ΡΠ»ΡΡΠ²Π°Ρ Π·Π°ΡΠ°Π΄ΠΈ Π½Π΅ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π½Π° Π½ΡΠΊΠ°ΠΊΠ²ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΈ. Π’Π°ΠΊΠΈΠ²Π° Π³ΡΠ΅ΡΠΊΠΈ ΡΡΠ°Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ, Π·Π°ΡΠΎΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΏΡΡΠ²ΠΈΡΠ΅ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Ρ ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π΅ΠΊΠΈΠΏΠΈΡΠ΅. ΠΠΎΠ²Π°ΡΠΊΠΈΡΠ΅ ΠΈΠΌΠ°Ρ βΠΏΡΠ°Π²ΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠ°β: ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π΄Π΅ΠΏΠ»ΠΎΠΉΠ²Π°Ρ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ Π±Π΅Π· ΡΡΡΠ°Ρ ΠΎΡ Π³ΡΠ΅ΡΠΊΠΈ, ΠΏΠΎΡΠ²ΡΠ²Π° ΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π°, ΡΡΠΈΠΌΡΠ» Π·Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠΊΠΎ ΡΡΡΠΏΡΡ Π½Π΅ΡΠΎ, ΡΠΎΠ²Π° Π½ΡΠΌΠ° Π΄Π° Π΅ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ ΠΈ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²ΠΎΠ»Π½ΡΠ²Π°Π½ΠΈ.
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Ρ ΠΌΠ΅ Π΄Π΅ΠΏΠ»ΠΎΠΉ. Π’ΠΎΠ²Π° Π²Π΅ΡΠ΅ Π½Π΅ Π΅ ΡΡΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠ°ΠΊΡΠΎ ΠΏΡΠ΅Π΄ΠΈ, Π° ΠΈΡΡΠΈΠ½ΡΠΊΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½. ΠΠΎ ΡΠΎΠΉ ΠΎΡΠ½Π΅ΠΌΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅.
ΠΠ·ΡΡΠ½ΠΈΡ ΠΌΠ΅ Π²Π°ΠΆΠ½ΠΈΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ. Π¦ΡΠ»Π°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ Π±ΠΈΠ·Π½Π΅ΡΠ° ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅, ΡΠ°Π·Π±ΠΈΡΠ° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π½Π°ΠΈΡΡΠΈΠ½Π° Π²Π°ΠΆΠ½ΠΎ Π² Π½Π°ΡΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΊΠΎΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ»ΠΈΠ² ΠΈ ΠΏΡΠΈΡΠΎΠΊ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ. ΠΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ°: ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈΡΠ΅, Π²ΡΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π½ΠΎΠ²ΠΈ, Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅, Π·Π° Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ Π΄Π° ΠΏΠ΅ΡΠ΅Π»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠ°ΡΠΈ.
ΠΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°Ρ ΠΎΡΠ½ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ Π½ΠΈ ΠΏΠΎΠΌΠ°Π³Π°Ρ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π½ΠΈΠ΅ ΡΠ΅ ΡΡΡΠ΅ΠΌΠΈΠΌ Π΄Π° Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΠΈΠΎΠ½Π°Π»ΠΈΡΡΠΈ ΠΈ Π΄Π° Π²ΡΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π°Π»ΠΈ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°ΠΌΠ΅ ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ Π΄Π° Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅, ΠΈΠ»ΠΈ Π½Π΅.
ΠΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ β . ΠΠΊΠΎ ΡΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°Π»ΠΈ ΡΡΠΏΠ΅Ρ ΠΈ Π½Π° ΠΏΡΡΡ ΠΊΡΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΡΠΎ ΡΡΠ²ΡΡΡΠ΅Π½ΡΡΠ²ΠΎ ΠΈ ΡΡΠ΅ Π³ΠΎΡΠΎΠ²ΠΈ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ Π²ΠΈ Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°Π»ΠΎ, β .
ΠΠ»Π°Π½ΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅Π΄Π΅ΠΌ Π½Π° 8 ΡΠ½ΠΈ. Π Π°Π·Π±ΠΈΡΠ°ΠΌΠ΅, ΡΠ΅ ΡΠ΅Π³Π° Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ°. ΠΠΎ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠΌΡΡΠ°ΠΌΠ΅, ΡΠ΅ ΠΊΠ°ΡΠ°Π½ΡΠΈΠ½Π°ΡΠ° Π½Π΅ Π΅ ΠΏΡΠΈΡΠΈΠ½Π° Π΄Π° ΡΠΏΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈΠΎΠ½Π°Π»Π½Π°ΡΠ° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅. ΠΠ°ΡΠΎΠ²Π° ΠΏΠΎ Π²ΡΡΠΊΠ° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΠΌ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π²ΡΠΏΡΠΎΡΠΈΡΠ΅ Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈΡ Π»ΠΈΠ΄Π΅Ρ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ ΠΈΠΌ β Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ Π² ΠΎΠ½Π»Π°ΠΉΠ½ ΠΈ ΡΠ΅ ΡΠ°Π·ΡΠΈΡΠΈΠΌ Π½Π΅ΡΡΡΡΠΊΠΈΠ½Π³Π° ΡΠ°ΠΌ!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
