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

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

ΠΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Infobip
Π’ΠΎΠ²Π° Π΅ Π³Π»ΠΎΠ±Π°Π»Π½Π° ΡΠ΅Π»Π΅ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π±Π°Π½ΠΊΠΈ, ΡΡΡΠ³ΠΎΠ²ΡΠΈ Π½Π° Π΄ΡΠ΅Π±Π½ΠΎ, ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΈ ΠΈ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ²ΠΎΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΡΡΠ΅Π· SMS, push ΠΈΠ·Π²Π΅ΡΡΠΈΡ, ΠΈΠΌΠ΅ΠΉΠ»ΠΈ ΠΈ Π³Π»Π°ΡΠΎΠ²ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. Π ΡΠ°ΠΊΡΠ² Π±ΠΈΠ·Π½Π΅Ρ Π΅ Π²Π°ΠΆΠ½Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡΡΠ° ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ°, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π½Π°Π²ΡΠ΅ΠΌΠ΅.
ΠΠ’ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Infobip Π² ΡΠΈΡΡΠΈ:
- 15 Π΄Π°ΡΠ° ΡΠ΅Π½ΡΡΠΎΠ²ΠΈ Π² ΡΡΠ» ΡΠ²ΡΡ;
- 500 ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π² Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ;
- 2500 ΠΊΠΎΠΏΠΈΡ Π½Π° ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π±ΡΠΎΡ Π½Π° Π΅ΠΊΠΈΠΏΠΈΡΠ΅;
- 4,5 TB ΠΌΠ΅ΡΠ΅ΡΠ΅Π½ ΡΡΠ°ΡΠΈΠΊ;
- 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 ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅.
ΠΡΠ°ΠΊΡΠΈΠΊΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΡΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ ΠΊΠ°Π½Π°ΡΠΈΡΠ΅ Π·Π° ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΡ Π½Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° Π³Π°Π·ΠΎΠ²Π΅ΡΠ΅, Π½Π°ΠΌΠ΅ΡΠΈ ΡΠ²ΠΎΠ΅ΡΠΎ ΠΌΡΡΡΠΎ ΠΈ Π² ΠΠ’. ΠΡΡΠΊΠ°ΠΌΠ΅ ΠΌΠ°Π»ΠΊΠΎ ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π΅Π½ ΡΡΠ°ΡΠΈΠΊ Π½Π° Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠ΅ Π²ΠΌΠ΅ΡΡΠΈΠΌ Π² Π‘ΠΏΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΠ΅ΡΠΎ Π·Π° Π½ΠΈΠ²ΠΎ Π½Π° ΡΡΠ»ΡΠ³Π° (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. Π’Π°Π·ΠΈ Π½ΠΎΠ΄Π° Π²ΠΈΠ½Π°Π³ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΡΠ°ΡΠΈΠΊ ΠΈ Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΏΠ»ΠΎΡ Ρ Π½Π΅Ρ. ΠΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠ΅ ΡΡΠ°Π²Π½ΠΈΠΌ Π½Π΅ΠΉΠ½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠ΅Π΄ΠΈ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π½Π΅Π³ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΡΠ° ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΠΈ 2 ΠΏΡΡΠΈ, Π·Π½Π°ΡΠΈ ΠΈ ΡΠ΅ΡΠ°ΡΠ° Π΅ Π½Π°ΡΠ°ΡΠ½Π°Π»Π° 2 ΠΏΡΡΠΈ.
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
