ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

ΠšΠ°Π½Π°Ρ€Π΅ΠΉΠΊΠ° β€” малСнькая ΠΏΡ‚ΠΈΡ†Π°, которая постоянно ΠΏΠΎΠ΅Ρ‚. Π­Ρ‚ΠΈ ΠΏΡ‚ΠΈΡ‡ΠΊΠΈ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΊ ΠΌΠ΅Ρ‚Π°Π½Ρƒ ΠΈ ΡƒΠ³Π°Ρ€Π½ΠΎΠΌΡƒ Π³Π°Π·Ρƒ. Π”Π°ΠΆΠ΅ ΠΎΡ‚ нСбольшой ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ†ΠΈΠΈ Π»ΠΈΡˆΠ½ΠΈΡ… Π³Π°Π·ΠΎΠ² Π² Π²ΠΎΠ·Π΄ΡƒΡ…Π΅ ΠΎΠ½ΠΈ Ρ‚Π΅Ρ€ΡΡŽΡ‚ сознаниС ΠΈΠ»ΠΈ ΡƒΠΌΠΈΡ€Π°ΡŽΡ‚. ЗолотоискатСли ΠΈ ΡˆΠ°Ρ…Ρ‚Π΅Ρ€Ρ‹ Π±Ρ€Π°Π»ΠΈ ΠΏΡ‚ΠΈΡ‡Π΅ΠΊ Π½Π° Π΄ΠΎΠ±Ρ‹Ρ‡Ρƒ: ΠΏΠΎΠΊΠ° ΠΊΠ°Π½Π°Ρ€Π΅ΠΉΠΊΠΈ ΠΏΠΎΡŽΡ‚, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ссли Π·Π°ΠΌΠΎΠ»Ρ‡Π°Π»ΠΈ β€” Π² ΡˆΠ°Ρ…Ρ‚Π΅ Π³Π°Π· ΠΈ ΠΏΠΎΡ€Π° ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ. Π¨Π°Ρ…Ρ‚Π΅Ρ€Ρ‹ ΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π»ΠΈ малСнькой ΠΏΡ‚ΠΈΡ‡ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΈΠ· ΡˆΠ°Ρ…Ρ‚ ΠΆΠΈΠ²Ρ‹ΠΌΠΈ.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

Подобная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° нашла сСбя ΠΈ Π² IT. НапримСр, Π² стандартной Π·Π°Π΄Π°Ρ‡Π΅ дСплоя Π½ΠΎΠ²ΠΎΠΉ вСрсии сСрвиса ΠΈΠ»ΠΈ прилоТСния Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ с тСстированиСм ΠΏΠ΅Ρ€Π΅Π΄ этим. ВСстовоС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слишком Π΄ΠΎΡ€ΠΎΠ³ΠΈΠΌ, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ тСсты Π½Π΅ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ всС, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹, Π° Π½Π΅ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ качСством рискованно. Как Ρ€Π°Π· Π² Ρ‚Π°ΠΊΠΈΡ… случаях ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Canary Deployment, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ настоящСго ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° пускаСтся Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ бСзопасно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½, ТСртвуя ΠΌΠ°Π»Ρ‹ΠΌ Ρ€Π°Π΄ΠΈ большой Ρ†Π΅Π»ΠΈ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ρ‡Π΅ΠΌ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, расскаТСт АндрСй ΠœΠ°Ρ€ΠΊΠ΅Π»ΠΎΠ² (Andrey_V_Markelov), Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Infobip.

АндрСй ΠœΠ°Ρ€ΠΊΠ΅Π»ΠΎΠ² β€” Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€-программист Π² Infobip, ΡƒΠΆΠ΅ 11 Π»Π΅Ρ‚ занимаСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java Π² области финансов ΠΈ Ρ‚Π΅Π»Π΅ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΉ. Π Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Open Source ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ участвуСт Π² Atlassian Community ΠΈ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ для ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Atlassian. ЕвангСлист Prometheus, Docker ΠΈ Redis.

О компании Infobip

Π­Ρ‚ΠΎ глобальная тСлСкоммуникационная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, которая позволяСт Π±Π°Π½ΠΊΠ°ΠΌ, Ρ€Π΅Ρ‚Π΅ΠΉΠ»Ρƒ, ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°ΠΌ ΠΈ транспортным компаниям ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСния своим ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SMS, push, писСм ΠΈ голосовых сообщСний. Π’ Ρ‚Π°ΠΊΠΎΠΌ бизнСсС Π²Π°ΠΆΠ½Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ воврСмя ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ сообщСния.

IT-инфраструктура Infobip Π² Ρ†ΠΈΡ„Ρ€Π°Ρ…:

  • 15 Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ;
  • 500 ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… сСрвисов Π² эксплуатации;
  • 2500 экзСмпляров сСрвисов, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС, Ρ‡Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄;
  • 4,5 TΠ±Π°ΠΉΡ‚ мСсячного Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°;
  • 4,5 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ²;

БизнСс растСт, Π° с Π½ΠΈΠΌ количСство Ρ€Π΅Π»ΠΈΠ·ΠΎΠ². ΠœΡ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ 60 Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² Π² дСнь, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ хотят большС возмоТностСй ΠΈ мощностСй. Но это слоТно β€” сСрвисов ΠΌΠ½ΠΎΠ³ΠΎ, Π° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠ°Π»ΠΎ. ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡΡ быстро ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ Π±Π΅Π· ошибок.

Π Π΅Π»ΠΈΠ·Ρ‹

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· Ρƒ нас ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Π°ΠΊ. НапримСр, Π΅ΡΡ‚ΡŒ сСрвисы A, B, C, D ΠΈ E, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… разрабатываСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° сСрвиса А Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ сСрвисов B, C, D ΠΈ E ΠΎΠ± этом Π½Π΅ Π·Π½Π°ΡŽΡ‚. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², ΠΊΠ°ΠΊ поступит ΠΊΠΎΠΌΠ°Π½Π΄Π° сСрвиса А, Π΄Π²Π°.

ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ·: сначала Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ€ΡΠΈΡŽ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

Но Π΅ΡΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π°ΠΉΠ΄Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ мощности ΠΈ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ Ρ€ΠΎΡƒΡ‚Π΅Ρ€, ΠΈ вСрсия Π½Π°Ρ‡Π½Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

Π’ любом Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ послС дСплоя ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π΄Π°ΠΆΠ΅ Ссли вСрсия протСстирована. Π’Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€ΡƒΠΊΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ β€” ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ Π² любом случаС. Π‘Π°ΠΌΡ‹ΠΉ простой ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ способ ΠΈΡ… Ρ€Π΅ΡˆΠΈΡ‚ΡŒ β€” ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ Π½Π°Π·Π°Π΄ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ. Π£ΠΆΠ΅ ΠΏΠΎΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с ΡƒΡ‰Π΅Ρ€Π±ΠΎΠΌ, с ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌΠΈ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ….

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ?

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. Если ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ°Ρ‚ ΠΈΡ… быстрСС нас, это ΡƒΠ΄Π°Ρ€ΠΈΡ‚ ΠΏΠΎ Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ†ΠΈΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ быстрСС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Работая Π½Π° ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ΅Π½ΠΈΠ΅, ΠΌΡ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΡƒΡ‰Π΅Ρ€Π±.

Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π΄Π΅ΠΏΠ»ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это происходило быстро, Π»Π΅Π³ΠΊΠΎ, само собой ΠΈ Π±Π΅Π· напряТСния со стороны ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², DevOps-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² ΠΈ программистов Π½Π°Π΄ΠΎ Π±Π΅Ρ€Π΅Ρ‡ΡŒ β€” Ρ€Π΅Π»ΠΈΠ· Π½ΠΎΠ²ΠΎΠΉ вСрсии это стрСсс. Команда это Π½Π΅ расходный ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», ΠΌΡ‹ стрСмимся Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ чСловСчСскиС рСсурсы.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ дСплоя

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ нСпрСдсказуСм. НСвозмоТно ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° клиСнтский Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ. ΠœΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ, Π³Π΄Π΅ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π½Π°Ρ‡Π½ΡƒΡ‚ свои ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΈ β€” ΠΌΠΎΠΆΠ΅Ρ‚, сСгодня Π½ΠΎΡ‡ΡŒΡŽ Π² Индии, Π° Π·Π°Π²Ρ‚Ρ€Π° Π² Π“ΠΎΠ½ΠΊΠΎΠ½Π³Π΅. Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ большой Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π΄Π΅ΠΏΠ»ΠΎΠΉ Π΄Π°ΠΆΠ΅ Π² 2 часа Π½ΠΎΡ‡ΠΈ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π½Π΅ ΠΏΠΎΡΡ‚Ρ€Π°Π΄Π°ΡŽΡ‚.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ². ΠœΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹ β€” наши ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€Ρ‹. Иногда Ρƒ Π½ΠΈΡ… Π±Ρ‹Π²Π°ΡŽΡ‚ сбои, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ошибки Π²ΠΎ врСмя дСплоя Π½ΠΎΠ²Ρ‹Ρ… вСрсий.

РаспрСдСлСнныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈ бэкСнд, находятся Π² Ρ€Π°Π·Π½Ρ‹Ρ… часовых поясах. Из-Π·Π° этого ΠΎΠ½ΠΈ часто Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой.

Π”Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Ρ‹ нСльзя ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π° стСйдТС. Π’ ΠΎΠ΄Π½ΠΎΠΌ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅ 200 стоСк β€” ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ это Π² пСсочницС Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ получится.

ДаунтаймынСдопустимы! Π£ нас Π΅ΡΡ‚ΡŒ допустимый ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ доступности (Error Budget), ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ 99,99% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π° ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Ρ‹ это Β«ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒΒ». Π”ΠΎΡΡ‚ΠΈΡ‡ΡŒ 100% надСТности Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ постоянно ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° падСниями ΠΈ простоями.

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

ΠŸΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π±Π΅Π· Π±Π°Π³ΠΎΠ². Когда я Π±Ρ‹Π» ΠΌΠΎΠ»ΠΎΠ΄Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ, ΠΊΠΎ ΠΌΠ½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ с ΠΏΡ€ΠΎΡΡŒΠ±ΠΎΠΉ провСсти Ρ€Π΅Π»ΠΈΠ· Π±Π΅Π· Π±Π°Π³ΠΎΠ², Π½ΠΎ это Π½Π΅ всСгда Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

ΠŸΠΈΡΠ°Ρ‚ΡŒ тСсты. ВСсты Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° совсСм Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ρ…ΠΎΡ‡Π΅Ρ‚ бизнСс. Π—Π°Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ дСньги β€” это Π½Π΅ Π·Π°Π΄Π°Ρ‡Π° тСстов.

Π’Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° стСйдТС. Π—Π° 3,5 Π³ΠΎΠ΄Π° ΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Infobip я Π½ΠΈ Ρ€Π°Π·Ρƒ Π½Π΅ Π²ΠΈΠ΄Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ состояниС стСйдТа хотя Π±Ρ‹ частично совпадало с ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

ΠœΡ‹ Π΄Π°ΠΆΠ΅ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ Ρ€Π°Π·Π²ΠΈΡ‚ΡŒ эту идСю: сначала Ρƒ нас Π±Ρ‹Π» стСйдТ, ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΡ€Π΅ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΡ€Π΅ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ ΠΏΡ€Π΅ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½Π°. Но ΠΈ это Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ β€” ΠΎΠ½ΠΈ Π½Π΅ совпадали Π΄Π°ΠΆΠ΅ ΠΏΠΎ мощности. Π‘ΠΎ стСйдТСм ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ….

Π Π΅Π»ΠΈΠ· Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π». Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°: Π΄Π°ΠΆΠ΅ Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ мСняСт Π½Π°Π·Π²Π°Π½ΠΈΠ΅ коммСнтария, сразу добавляСт Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ внСсСнных измСнСниях.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ слоТности Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ. Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° это стрСсс β€” Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

БогласованныС Ρ€Π΅Π»ΠΈΠ·Ρ‹. Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚: Β«Π”Π°Π²Π°ΠΉΡ‚Π΅ договоримся, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ вСрсии». Π­Ρ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚: всСгда Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая ΠΆΠ΄Π΅Ρ‚ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

Smoke-тСсты

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ наши ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ. Рассмотрим, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ smoke-тСсты Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° A Ρ…ΠΎΡ‡Π΅Ρ‚ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ ΠΎΠ΄ΠΈΠ½ инстанс Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½. БообщСниями Π² инстанс ΠΎΡ‚ ΠΌΠΎΠΊΠΎΠ² имитируСтся Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ совпадал с Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Ρ‹ΠΌ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ. Если всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ. Команда тСстируСт Π΅Π³ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½, ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚, ΠΈ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

НСдостатки smoke-тСстов:

  • ВСстам нСльзя Π΄ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ. Π“Π΄Π΅ Π²Π·ΡΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½? МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‡Π΅Ρ€Π°ΡˆΠ½ΠΈΠΉ ΠΈΠ»ΠΈ нСдСльной давности, Π½ΠΎ ΠΎΠ½ Π½Π΅ всСгда совпадаСт с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ.
  • Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈΠ΄Π΅Ρ‚ΡΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ тСстовыС Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Ρ‹, постоянно ΠΈΡ… ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ записи. Π­Ρ‚ΠΎ слоТнСС, Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСст Π² своСй пСсочницС.

ЕдинствСнный бонус здСсь β€” ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Canary-Ρ€Π΅Π»ΠΈΠ·Ρ‹

Из-Π·Π° нСдостатков smoke-тСстов ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ canary-Ρ€Π΅Π»ΠΈΠ·Ρ‹.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, подобная Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ ΡˆΠ°Ρ…Ρ‚Π΅Ρ€Ρ‹ использовали ΠΊΠ°Π½Π°Ρ€Π΅Π΅ΠΊ для ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ уровня Π³Π°Π·ΠΎΠ², нашла сСбя ΠΈ Π² IT. ΠœΡ‹ пускаСм Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ настоящСго ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, ΠΏΡ€ΠΈ этом стараСмся ΡƒΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π² Service Level Agreement (SLA). SLA β€” это нашС Β«ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒΒ», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π· Π² Π³ΠΎΠ΄ (ΠΈΠ»ΠΈ Π·Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ). Если всС Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ большС Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. Если Π½Π΅Ρ‚ β€” Π²Π΅Ρ€Π½Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ вСрсии.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

РСализация ΠΈ Π½ΡŽΠ°Π½ΡΡ‹

Как ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ canary-Ρ€Π΅Π»ΠΈΠ·Ρ‹? НапримСр, Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² отправляСт сообщСния Ρ‡Π΅Ρ€Π΅Π· наш сСрвис.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Π°ΠΊ: ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΡƒΠ·Π΅Π» ΠΈΠ·-ΠΏΠΎΠ΄ балансировщика (1), мСняСм Π²Π΅Ρ€ΡΠΈΡŽ (2) ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ пускаСм Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° (3).

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

Π’ Ρ†Π΅Π»ΠΎΠΌ, Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ счастливы всС, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»Π΅Π½. Если всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ β€” мСняСм всС вСрсии.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

ΠŸΠΎΠΊΠ°ΠΆΡƒ схСматично, ΠΊΠ°ΠΊ это выглядит для микросСрвисов Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв.

Π•ΡΡ‚ΡŒ Service Discovery ΠΈ Π΅Ρ‰Π΅ Π΄Π²Π° сСрвиса: S1N1 ΠΈ S2. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ сСрвис (S1N1) ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°Π΅Ρ‚ Service Discovery, ΠΊΠΎΠ³Π΄Π° стартуСт, Π° Service Discovery Π΅Π³ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚. Π’Ρ‚ΠΎΡ€ΠΎΠΉ сСрвис с двумя ΡƒΠ·Π»Π°ΠΌΠΈ (S2N1 ΠΈ S2N2) Ρ‚ΠΎΠΆΠ΅ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°Π΅Ρ‚ Service Discovery ΠΏΡ€ΠΈ стартС.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

Π’Ρ‚ΠΎΡ€ΠΎΠΉ сСрвис для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ сСрвСр. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ Service Discovery ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ своих сСрвСрах, Π° ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ β€” ΠΈΡ‰Π΅Ρ‚ ΠΈ провСряСт ΠΈΡ… (Β«health checkΒ»). Когда ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚, Ρ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ ΠΈΠΌ сообщСния.

Когда ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ сСрвиса, ΠΎΠ½ сообщаСт Service Discovery, Ρ‡Ρ‚ΠΎ вторая Π½ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ canary-Π½ΠΎΠ΄ΠΎΠΉ: Π½Π° Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ мСньшС Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ сСйчас ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ Π΄Π΅ΠΏΠ»ΠΎΠΉ. Π£Π±ΠΈΡ€Π°Π΅ΠΌ canary-Π½ΠΎΠ΄Ρƒ ΠΈΠ·-ΠΏΠΎΠ΄ балансировщика ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сСрвис Π½Π΅ отправляСт Π² Π½Π΅Π΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

МСняСм Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ Service Discovery Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ вторая Π½ΠΎΠ΄Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ canary β€” ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Π²Π°Ρ‚ΡŒ Π΅ΠΉ мСньшС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (5%). Если всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ, мСняСм Π²Π΅Ρ€ΡΠΈΡŽ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ дальшС.

Π§Ρ‚ΠΎΠ±Ρ‹ всС это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹:

  • балансировка;
  • ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΈ ΠΊΠ°ΠΊ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ наши сСрвисы;
  • Π°Π½Π°Π»ΠΈΠ· вСрсий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ новая вСрсия Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½;
  • автоматизация β€” пишСм ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ развСртывания (deployment pipeline).

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

Балансировка

Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅, ΠΎ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ. Π•ΡΡ‚ΡŒ Π΄Π²Π΅ стратСгии балансировки.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½Π° Π½ΠΎΠ΄Π° всСгда canary. Π­Ρ‚Π° Π½ΠΎΠ΄Π° всСгда ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ мСньшС Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Π΄Π΅ΠΏΠ»ΠΎΠΉ с Π½Π΅Π΅. Π’ случаС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΡ‹ сравним Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄ΠΎ дСплоя ΠΈ Π²ΠΎ врСмя Π½Π΅Π³ΠΎ. НапримСр, Ссли ошибок стало Π² 2 Ρ€Π°Π·Π° большС, Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΈ ΡƒΡ‰Π΅Ρ€Π± вырос Π² 2 Ρ€Π°Π·Π°.

Canary-Π½ΠΎΠ΄Π° задаСтся Π² процСссС дСплоя. Когда Π΄Π΅ΠΏΠ»ΠΎΠΉ закончится ΠΈ ΠΌΡ‹ снимСм с Π½Π΅Π΅ статус canary-Π½ΠΎΠ΄Ρ‹, баланс Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° восстановится. Π‘ мСньшим количСством машин ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ чСстноС распрСдСлСниС.

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

ΠšΡ€Π°Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ камСнь canary-Ρ€Π΅Π»ΠΈΠ·ΠΎΠ². ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Π·Π°Ρ‡Π΅ΠΌ ΠΌΡ‹ это Π΄Π΅Π»Π°Π΅ΠΌ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ собираСм с Π½Π°ΡˆΠΈΡ… сСрвисов.

  • ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π² Π»ΠΎΠ³ΠΈ. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ. Π’ Ρ†Π΅Π»ΠΎΠΌ, это Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°.
  • ВрСмя выполнСния запросов (latency). Π­Ρ‚Ρƒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΡƒ мониторят всС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всС хотят Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстро.
  • Π Π°Π·ΠΌΠ΅Ρ€ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ (throughput).
  • ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π² сСкунду.
  • ВрСмя выполнСния 95% всСх запросов.
  • БизнСс-ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ: сколько Π΄Π΅Π½Π΅Π³ бизнСс Π·Π°Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ врСмя ΠΈΠ»ΠΈ ΠΎΡ‚Ρ‚ΠΎΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ для нашСй Π½ΠΎΠ²ΠΎΠΉ вСрсии ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π°ΠΆΠ½Π΅Π΅, Ρ‡Π΅ΠΌ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ популярных систСм ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

Counter. Π­Ρ‚ΠΎ нСкоторая Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π°Ρ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, количСство ошибок. Π­Ρ‚Ρƒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΡƒ просто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊ: Π²Ρ‡Π΅Ρ€Π° Π±Ρ‹Π»ΠΎ 2 ошибки, Π° сСгодня 500, Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ошибок Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ ΠΈΠ»ΠΈ Π² сСкунду, это ваТнСйший ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Counter. Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π°ΡŽΡ‚ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ прСдставлСниС ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ систСмы Π½Π° дистанции. Рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° количСства ошибок Π² сСкунду для Π΄Π²ΡƒΡ… вСрсий ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-систСмы.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии Π±Ρ‹Π»ΠΎ ΠΌΠ°Π»ΠΎ ошибок, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π°ΡƒΠ΄ΠΈΡ‚. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ вСрсии всС Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΡƒΠΆΠ΅. МоТно Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, поэтому ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ эту Π²Π΅Ρ€ΡΠΈΡŽ.

Gauge. ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Counter, Π½ΠΎ ΠΌΡ‹ записываСм значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠ°ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Ρ‚Π°ΠΊ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒΡΡ. НапримСр, врСмя выполнСния запросов ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° (latency). По Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ вСрсии ΠΏΠΎΡ…ΠΎΠΆΠΈ, с Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Но Ссли ΠΏΡ€ΠΈΠ³Π»ΡΠ΄Π΅Ρ‚ΡŒΡΡ, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ, ΠΊΠ°ΠΊ мСняСтся Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°. Если врСмя выполнСния запросов увСличиваСтся ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‚ΠΎ сразу понятно, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ β€” Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

Summary. Один ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ для бизнСса β€” ΠΏΠ΅Ρ€Ρ†Π΅Π½Ρ‚ΠΈΠ»ΠΈ. ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² 95% случаСв наша систСма Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΌΠΈΡ€ΠΈΡ‚ΡŒΡΡ, Ссли Π³Π΄Π΅-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΎΠ±Ρ‰ΡƒΡŽ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ, насколько всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠ»ΠΈ ΠΏΠ»ΠΎΡ…ΠΎ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

ELK Stack. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ canary ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Elasticsearch β€” записываСм Π² Π½Π΅Π³ΠΎ ошибки, ΠΊΠΎΠ³Π΄Π° происходят события. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ API ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ количСство ошибок Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌΠΈ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°ΠΌΠΈ: GET /applg/_cunt?q=level:errr.

Prometheus. Π₯ΠΎΡ€ΠΎΡˆΠΎ сСбя проявил Π² Infobip. Он позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π»Π΅ΠΉΠ±Π»Ρ‹.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ level, instance, service, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΎΠ΄Π½ΠΎΠΉ систСмС. C ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ 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-Π½ΠΎΠ΄Ρƒ;
  • Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ балансСр ΡƒΠΆΠ΅ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ количСством Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°;
  • сравниваСм.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

На этом этапС ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ автоматичСскоС сравнСниС. Как ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° послС дСплоя, рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠ· Jenkins.

Π­Ρ‚ΠΎ pipeline ΠΊ Groovy.

while (System.currentTimeMillis() < endCanaryTs) {
    def isOk = compare(srv, canary, time, base, offset, metrics)
    if (isOk) {
        sleep DEFAULT SLEEP
    }   else {
        echo "Canary failed, need to revert"  
        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 Deployment

Если Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ β€” автоматичСски ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅ΠΌ canary-Π½ΠΎΠ΄Ρƒ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π° ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… вСрсиях ΠΈ исправляСм ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нашли. По ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°ΠΌ ΠΈΡ… Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡƒΡ‰Π΅Ρ€Π± ΠΎΡ‚ Π½ΠΎΠ²ΠΎΠΉ вСрсии.

ΠŸΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΈΡ

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, нСпросто. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго Π½ΡƒΠΆΠ½Π° общая систСма ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Π£ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² свои ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Ρƒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠ² β€” Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Ρƒ бизнСса Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈ. ΠžΠ±Ρ‰Π°Ρ систСма β€” это ΠΎΠ±Ρ‰ΠΈΠΉ язык, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°ΡŽΡ‚ бизнСс ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.

НуТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Π½ΡƒΠΆΠ΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ качСство.

Как этого Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ? Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ canary-сСрвис Π½Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ дСплоя. ДобавляСм Π½Π° старой вСрсии Π½Π΅ΠΊΠΈΠΉ сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ смоТСт Π²Π·ΡΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π½ΠΎΠ΄Ρƒ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π±Π΅Π· дСплоя. ПослС сравниваСм: ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌ ошибки ΠΈ ΠΈΡ‰Π΅ΠΌ Ρ‚Ρƒ Π³Ρ€Π°Π½ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ достигаСм качСства.

ВСстируСм Π½Π° ΠΏΡ€ΠΎΠ΄Π΅: Canary Deployment

ΠšΠ°ΠΊΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡ‚ canary-Ρ€Π΅Π»ΠΈΠ·ΠΎΠ²

ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΡƒΡ‰Π΅Ρ€Π±Π° ΠΎΡ‚ Π±Π°Π³ΠΎΠ². Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ошибок дСплоя происходит ΠΈΠ·-Π·Π° нСсогласованности ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°. Π’Π°ΠΊΠΈΡ… ошибок стало Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ мСньшС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² ΠΏΠ΅Ρ€Π²Ρ‹Π΅ сСкунды.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄. Π£ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π΅ΡΡ‚ΡŒ Β«ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒΒ»: ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ Π±Π΅Π· страха ΠΎΡˆΠΈΠ±ΠΈΡ‚ΡŒΡΡ, появляСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π°, стимул Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Если ΠΎΠ½ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ»ΠΎΠΌΠ°ΡŽΡ‚, Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ, Π° ошибившСгося Π½Π΅ уволят.

Автоматизировали Π΄Π΅ΠΏΠ»ΠΎΠΉ. Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ Π½Π΅ Ρ€ΡƒΡ‡Π½ΠΎΠΉ процСсс, ΠΊΠ°ΠΊ Ρ€Π°Π½ΡŒΡˆΠ΅, Π° настоящий Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ. Но ΠΎΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ дольшС.

Π’Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ. Вся компания, начиная ΠΎΡ‚ бизнСса ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π² нашСм ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚Ρ‚ΠΎΠΊ ΠΈ ΠΏΡ€ΠΈΡ‚ΠΎΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠœΡ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌ процСсс: тСстируСм ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Π²Π²ΠΎΠ΄ΠΈΠΌ Π½ΠΎΠ²Ρ‹Π΅, смотрим, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ старыС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ систСму, которая Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ дСньги ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅.

Π£ нас ΠΌΠ½ΠΎΠ³ΠΎ классных ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ ΠΈ систСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚. НСсмотря Π½Π° это, ΠΌΡ‹ стрСмимся Π±Ρ‹Ρ‚ΡŒ профСссионалами ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ качСствСнно, Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ Ρƒ нас систСма, которая Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ β€” основной фокус ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ TechLead Conf. Если Π²Ρ‹ достигли успСхов Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΊ тСхничСскому ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Ρƒ ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π² этом ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ, β€” ΠΏΠΎΠ΄Π°Π²Π°ΠΉΡ‚Π΅ заявку Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄.

ΠœΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ провСсти TechLead Conf 8 июня. ΠœΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ сСйчас Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ± участии Π² ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ. Но Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя считаСм, Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½ Π½Π΅ ΠΏΠΎΠ²ΠΎΠ΄ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Π² любом случаС Π½Π°ΠΉΠ΄Π΅ΠΌ способ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ‚Π΅Ρ…Π»ΠΈΠ΄Π° ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ β€” Ссли понадобится, ΡƒΠΉΠ΄Ρ‘ΠΌ Π² ΠΎΠ½Π»Π°ΠΉΠ½ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½Π΅ΠΌ Π½Π΅Ρ‚Π²ΠΎΡ€ΠΊΠΈΠ½Π³ Ρ‚Π°ΠΌ!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com