เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

Canary เปเบกเปˆเบ™เบ™เบปเบเบ™เป‰เบญเบเบ—เบตเปˆเบฎเป‰เบญเบ‡เป€เบžเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡. เบ™เบปเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบกเบตเบ„เบงเบฒเบกเบญเปˆเบญเบ™เป„เบซเบงเบ•เปเปˆเบเบฑเบš methane เปเบฅเบฐ carbon monoxide. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเบ‚เบปเป‰เบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเบ‚เบญเบ‡เบ—เบฒเบ”เบญเบฒเบเบœเบดเบ”เปƒเบ™เบญเบฒเบเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบชเบนเบ™เป€เบชเบเบชเบฐเบ•เบดเบซเบผเบทเป€เบชเบเบŠเบตเบงเบดเบ”. เบ„เบปเบ™เบ‚เบธเบ”เบ„เบปเป‰เบ™เบšเปเปˆเบ„เบณ เปเบฅเบฐเบ„เบปเบ™เบ‡เบฒเบ™เบšเปเปˆเปเบฎเปˆเป„เบ”เป‰เป€เบญเบปเบฒเบ™เบปเบเบกเบฒเบซเบฒเบ‚เป‰เบญเบ: เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบžเบงเบเบ™เบปเบเบเบฒเบ‡เบฎเป‰เบญเบ‡เป€เบžเบ‡, เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰, เปเบ•เปˆเบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบกเบดเบ”เบ‡เบฝเบš, เบกเบตเบญเบฒเบเปเบเบฑเบชเบขเบนเปˆเปƒเบ™เบšเปเปˆเปเบฎเปˆ เปเบฅเบฐเป€เบ–เบดเบ‡เป€เบงเบฅเบฒเบˆเบฐเบญเบญเบเป„เบ›. เบ„เบปเบ™เบ‡เบฒเบ™เบšเปเปˆเปเบฎเปˆเป„เบ”เป‰เป€เบชเบเบชเบฐเบฅเบฐเบ™เบปเบเบ™เป‰เบญเบเป‚เบ•เปœเบถเปˆเบ‡เป€เบžเบทเปˆเบญเบญเบญเบเบกเบฒเบˆเบฒเบเบฅเบฐเป€เบšเบตเบ”เบเบฑเบ‡เบ”เบดเบ™เบขเปˆเบฒเบ‡เบกเบตเบŠเบตเบงเบดเบ”เบŠเบตเบงเบฒ.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบ•เบปเบงเป€เบญเบ‡เปƒเบ™ IT. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบงเบฝเบเบ‡เบฒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบซเบผเบทเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบฑเป‰เบ™. เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเบฒเบกเบฒเบ”เปเบžเบ‡เป€เบเบตเบ™เป„เบ›, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบšเปเปˆเป„เบ”เป‰เบเบงเบกเป€เบญเบปเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบฅเบฐเบšเปเปˆเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเบเบฒเบ™เป€เบชเบเบชเบฐเบฅเบฐเบ„เบธเบ™เบ™เบฐเบžเบฒเบšเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡. เบกเบฑเบ™เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” Canary เบŠเปˆเบงเบเป€เบซเบผเบทเบญ, เป€เบกเบทเปˆเบญเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆ. เบงเบดเบ—เบตเบเบฒเบ™เบŠเปˆเบงเบ เบ›เบญเบ”เป„เบž เบเบงเบ”เป€เบšเบดเปˆเบ‡เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆ เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹, เบเบฒเบ™เป€เบชเบเบชเบฐเบฅเบฐเบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบžเบทเปˆเบญเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบซเบเปˆ. เบฅเบฒเบงเบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™. Andrey Markelov (Andrey_V_Markelov), เบญเบตเบ‡เบ•เบฒเบกเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆ Infobip.

Andrey Markelov - เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบŠเบญเบšเปเบงเบŠเบฑเป‰เบ™เบ™เปเบฒเบ‚เบญเบ‡ Infobip, เป„เบ”เป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Java เปƒเบ™เบ‚เบปเบ‡เป€เบ‚เบ”เบเบฒเบ™เป€เบ‡เบดเบ™เปเบฅเบฐเป‚เบ—เบฅเบฐเบ„เบปเบกเบกเบฐเบ™เบฒเบ„เบปเบกเบชเปเบฒเบฅเบฑเบš 11 เบ›เบต. เบžเบฑเบ”เบ—เบฐเบ™เบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”, เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡เปƒเบ™เบŠเบธเบกเบŠเบปเบ™ Atlassian เปเบฅเบฐเบ‚เบฝเบ™ plugins เบชเปเบฒเบฅเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™ Atlassian. Prometheus, Docker เปเบฅเบฐ Redis เบœเบนเป‰เบ›เบฐเบเบฒเบ”เบ‚เปˆเบฒเบงเบ›เบฐเป€เบชเบตเบ”.

เบซเบผเบดเป‰เบ™เบงเบดเบ”เบตเป‚เบญ

เบเปˆเบฝเบงเบเบฑเบš Infobip

เบกเบฑเบ™เป€เบ›เบฑเบ™เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเป‚เบ—เบฅเบฐเบ„เบปเบกเบ™เบฒเบ„เบปเบกเบ—เบปเปˆเบงเป‚เบฅเบเบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เบฐเบ™เบฒเบ„เบฒเบ™, เบฎเป‰เบฒเบ™เบ„เป‰เบฒเบ›เบตเบ, เบฎเป‰เบฒเบ™เบ„เป‰เบฒเบญเบญเบ™เป„เบฅเบ™เปŒเปเบฅเบฐเบšเปเบฅเบดเบชเบฑเบ”เบ‚เบปเบ™เบชเบปเปˆเบ‡เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเป„เบ›เบซเบฒเบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป‚เบ”เบเปƒเบŠเป‰ SMS, push, เบˆเบปเบ”เบซเบกเบฒเบเปเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฝเบ‡. เปƒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เปเบฅเบฐเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบฅเบนเบเบ„เป‰เบฒเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบ•เบฒเบกเป€เบงเบฅเบฒ.

Infobip เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ”เป‰เบฒเบ™เป„เบญเบ—เบตเปƒเบ™เบ•เบปเบงเป€เบฅเบ:

  • เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™ 15 เปเบซเปˆเบ‡เบ—เบปเปˆเบงเป‚เบฅเบ;
  • 500 เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเปƒเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™;
  • 2500 เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบŠเบดเปˆเบ‡เบซเบผเบฒเบเบเปˆเบงเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡;
  • 4,5 TB เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ›เบฐเบˆเปเบฒเป€เบ”เบทเบญเบ™;
  • 4,5 เบ•เบทเป‰เป€เบšเบตเป‚เบ—เบฅเบฐเบชเบฑเบš;

เบ—เบธเบฅเบฐเบเบดเบ”เปเบกเปˆเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบง, เปเบฅเบฐเบเบฑเบšเบกเบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบญเบ. เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ” 60 เบชเบฐเบšเบฑเบšเบ•เปเปˆเบกเบทเป‰, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบฅเบนเบเบ„เป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเปเบฅเบฐเบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบซเบผเบฒเบ. เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบ - เบกเบตเบซเบผเบฒเบเบšเปเบฅเบดเบเบฒเบ™, เปเบ•เปˆเบ—เบตเบกเบ‡เบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบ. เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เป„เบงเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ„เบงเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”.

เบเบฒเบ™เบ›เปˆเบญเบ

เบเบฒเบ™เบ›เปˆเบญเบเบ—เบปเปˆเบงเป„เบ›เป€เบ›เบฑเบ™เปเบšเบšเบ™เบตเป‰. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบตเบšเปเบฅเบดเบเบฒเบ™ A, B, C, D เปเบฅเบฐ E, เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เปเบกเปˆเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเบ—เบตเบกเบ‡เบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เปƒเบ™เบšเบฒเบ‡เบˆเบธเบ”, เบ—เบตเบกเบ‡เบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ A เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆ, เปเบ•เปˆเบ—เบตเบกเบ‡เบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ B, C, D เปเบฅเบฐ E เบšเปเปˆเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™. เบกเบตเบชเบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เบตเบกเบ‡เบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ A เบˆเบฐเป€เบฎเบฑเบ”.

เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™: เบ—เปเบฒเบญเบดเบ”เบˆเบฐเบ—เบปเบ”เปเบ—เบ™เบซเบ™เบถเปˆเบ‡เบชเบฐเบšเบฑเบš, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ„เบฑเป‰เบ‡เบ—เบตเบชเบญเบ‡.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เปเบ•เปˆเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเบชเบญเบ‡: เบ„เปเบฒเบชเบฑเปˆเบ‡ เบˆเบฐเบŠเบญเบเบซเบฒเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ, เบˆเบฐเบ›เบฑเบšเปƒเบŠเป‰เป€เบงเบตเบŠเบฑเบ™เปƒเบซเบกเปˆ, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ›เปˆเบฝเบ™ router, เปเบฅเบฐเบฎเบธเปˆเบ™เบˆเบฐเป€เบฅเบตเปˆเบกเป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เปƒเบ™เบชเบฐเบšเบฑเบšเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบšเบฑเบ™เบซเบฒเป€เบเบทเบญเบšเบชเบฐเป€เบซเบกเบตเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบชเบฐเบšเบฑเบšเป„เบ”เป‰เบ–เบทเบเบ—เบปเบ”เบชเบญเบšเปเบฅเป‰เบง. เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เป„เบ”เป‰โ€‹เบ”เป‰เบงเบโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹, เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบฎเบฑเบ”โ€‹เป„เบ”เป‰โ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ”โ€‹, เบ—เปˆเบฒเบ™โ€‹เบšเปเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบ—เบปเบ”โ€‹เบชเบญเบš - เบšเบฑเบ™โ€‹เบซเบฒโ€‹เบˆเบฐโ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™โ€‹เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹. เบงเบดโ€‹เบ—เบตโ€‹เบ—เบตเปˆโ€‹เบ‡เปˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เปเบฅเบฐโ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เป€เบžเบทเปˆเบญโ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เปƒเบซเป‰โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เป„เบ›โ€‹เบšเปˆเบญเบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบ—เบตเปˆโ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹. เบžเบฝเบ‡เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ„เบงเบฒเบกเป€เบชเบเบซเบฒเบ, เป€เบซเบ”เบœเบปเบ™, เปเบฅเบฐเปเบเป‰เป„เบ‚เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡?

เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฑเบ™เบซเบฒ. เบ–เป‰เบฒเบฅเบนเบเบ„เป‰เบฒเบ„เบปเป‰เบ™เบžเบปเบšเบžเบงเบเป€เบ‚เบปเบฒเป„เบงเบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒ, เบกเบฑเบ™เบˆเบฐเบ—เปเบฒเบฅเบฒเบเบŠเบทเปˆเบชเบฝเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡ เบŠเบญเบเบซเบฒเบšเบฑเบ™เบซเบฒเป„เบงเบเบงเปˆเบฒเบฅเบนเบเบ„เป‰เบฒ. เป‚เบ”เบเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ•เบฑเป‰เบ‡เบซเบ™เป‰เบฒ, เบžเบงเบเป€เบฎเบปเบฒเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเป€เบชเบเบซเบฒเบ.

เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ เป€เบฅเบฑเปˆเบ‡โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป€เบžเบทเปˆเบญโ€‹เปƒเบซเป‰โ€‹เบชเบดเปˆเบ‡โ€‹เบ™เบตเป‰โ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™โ€‹เบขเปˆเบฒเบ‡โ€‹เบงเปˆเบญเบ‡โ€‹เป„เบงโ€‹, เป„เบ”เป‰โ€‹เบขเปˆเบฒเบ‡โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹, เบ—เปเบฒโ€‹เบกเบฐโ€‹เบŠเบฒเบ”โ€‹เปเบฅเบฐโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เป€เบ„เบฑเปˆเบ‡โ€‹เบ•เบถเบ‡โ€‹เปƒเบ™โ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เบตเบกโ€‹เบ‡เบฒเบ™โ€‹. เบงเบดเบชเบฐเบงเบฐเบเบญเบ™, เบงเบดเบชเบฐเบงเบฐเบเบญเบ™ DevOps เปเบฅเบฐเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ - เบเบฒเบ™เบ›เปˆเบญเบเป€เบงเบตเบŠเบฑเบ™เปƒเบซเบกเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™. เบ—เบตเบกเบ‡เบฒเบ™เปเบกเปˆเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบˆเปˆเบฒเบเป„เบ”เป‰, เบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบก เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบกเบฐเบ™เบธเบ”เบขเปˆเบฒเบ‡เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™.

เบšเบฑเบ™เบซเบฒเปƒเบ™เบเบฒเบ™เบ™เบณเปƒเบŠเป‰

เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเปเบกเปˆเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เป€เบ”เบปเบฒเป„เบ”เป‰. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ„เบฒเบ”เบ„เบฐเป€เบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเบˆเบฐเบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบฅเบนเบเบ„เป‰เบฒเบˆเบฐเป€เบฅเบตเปˆเบกเปเบ„เบกเป€เบ›เบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบขเบนเปˆเปƒเบช เบซเบผเบทเป€เบงเบฅเบฒเปƒเบ” - เบšเบฒเบ‡เบ—เบตเบ„เบทเบ™เบ™เบตเป‰เปƒเบ™เบ›เบฐเป€เบ—เบ”เบญเบดเบ™เป€เบ”เบ, เบกเบทเป‰เบญเบทเปˆเบ™เปƒเบ™เบฎเบปเบ‡เบเบปเบ‡. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ‚เบญเบ‡เป€เบงเบฅเบฒเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบขเบนเปˆเบ—เบตเปˆ 2 เป‚เบกเบ‡เป€เบŠเบปเป‰เบฒเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบฅเบนเบเบ„เป‰เบฒเบˆเบฐเบšเปเปˆเบ—เบปเบ™เบ—เบธเบ.

เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™. Messenger เปเบฅเบฐเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบกเปˆเบ™เบ„เบนเปˆเบฎเปˆเบงเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบšเบฒเบ‡โ€‹เบ„เบฑเป‰เบ‡โ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เป€เบเบตเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เปƒเบซเบกเปˆโ€‹.

เบ—เบตเบกเบ‡เบฒเบ™เปเบˆเบเบขเบฒเบ. เบ—เบตเบกเบ‡เบฒเบ™เบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ”เป‰เบฒเบ™เบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐ backend เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เป€เบ‚เบ”เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบ”เป‰เบงเบเป€เบซเบ”เบœเบปเบ™เบ™เบตเป‰, เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบกเบฑเบเบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ•เบปเบเบฅเบปเบ‡เบเบฑเบ™เป„เบ”เป‰.

เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบˆเปเบฒเบฅเบญเบ‡เบขเบนเปˆเป€เบ—เบดเบ‡เป€เบงเบ—เบต. เบกเบต 200 racks เปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบซเบ™เบถเปˆเบ‡ - เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบญเบตเบเปƒเบ™ sandbox.

เป€เบงเบฅเบฒเบซเบงเปˆเบฒเบ‡เบเบญเบกเบฎเบฑเบšเบšเปเปˆเป„เบ”เป‰! เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบฅเบฐเบ”เบฑเบšเบ—เบตเปˆเบเบญเบกเบฎเบฑเบšเป„เบ”เป‰ (Error Budget), เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบ 99,99% เบ‚เบญเบ‡เป€เบงเบฅเบฒ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบฅเบฐเบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™ "เบชเบดเบ”เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”". เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰ 100%, เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ‚เบฑเบ”เบ‚เป‰เบญเบ‡เปเบฅเบฐเป€เบงเบฅเบฒเบขเบธเบ”เบขเบนเปˆเบชเบฐเป€เบซเบกเบต.

เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ„เบฅเบฒเบชเบชเบดเบ

เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡. เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเป€เบ›เบฑเบ™เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบงเปœเบธเปˆเบก, เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเบซเบฒเบ‚เป‰เบญเบเป€เบžเบทเปˆเบญเบ‚เปเปƒเบซเป‰เบกเบตเบเบฒเบ™เบ›เบปเบ”เบ›เปˆเบญเบเปเบกเบ‡เป„เบกเป‰, เปเบ•เปˆเบ™เบตเป‰เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบชเบฐ เป€เปเบต เป„เบ›.

เบ‚เบฝเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš. เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบฎเบฑเบ”เบงเบฝเบ, เปเบ•เปˆเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบšเปเปˆเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบ—เบธเบเบงเบดเบ—เบตเบ—เบตเปˆเบ—เบธเบฅเบฐเบเบดเบ”เบ•เป‰เบญเบ‡เบเบฒเบ™. เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฒเบเป„เบ”เป‰เบšเปเปˆเปเบกเปˆเบ™เบงเบฝเบเบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบ™เป€เบงเบ—เบต. เปƒเบ™ 3,5 เบ›เบตเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบนเปˆ Infobip, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเป€เบ„เบตเบเป€เบซเบฑเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบšเบฒเบ‡เบชเปˆเบงเบ™ coincide เบเบฑเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบžเบงเบเป€เบฎเบปเบฒเบเปเปˆเบžเบฐเบเบฒเบเบฒเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰: เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ‚เบฑเป‰เบ™เบ•เบญเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเปˆเบญเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบเปˆเบญเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบเปˆเบญเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”. เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบŠเปˆเบงเบเบ—เบฑเบ‡เบชเบญเบ‡ - เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบเบปเบ‡เบเบฑเบ™เบเบฑเบšเบญเปเบฒเบ™เบฒเบ”. เบ”เป‰เบงเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”.

เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบœเบนเป‰เบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบต: เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบœเบนเป‰เปƒเบ”เบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบ›เปˆเบฝเบ™เบŠเบทเปˆเบ‚เบญเบ‡เบ„เปเบฒเป€เบซเบฑเบ™, เบกเบฑเบ™เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ—เบฑเบ™เบ—เบต. เบ™เบตเป‰เบŠเปˆเบงเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเปเบฅเบฐเบˆเบทเปˆเบˆเปเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™.

เบเบฑเบ‡เบกเบตเบญเบฒเบเบฒเบ™เปเบŠเบเบŠเป‰เบญเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡.

เบ•เบปเบเบฅเบปเบ‡เป€เบซเบฑเบ™เบ”เบต. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปเบกเปˆเบ™เบชเบฐเป€เบซเบ™เบตเป‚เบ”เบเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡: "เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ•เบปเบเบฅเบปเบ‡เป€เบซเบฑเบ™เบ”เบตเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเป€เบžเบตเปˆเบกเบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเบ—เบธเบเป†เบกเบทเป‰." เบญเบฑเบ™เบ™เบตเป‰เปƒเบŠเป‰เบšเปเปˆเป„เบ”เป‰: เบกเบตเบ—เบตเบกเบ‡เบฒเบ™เบ—เบตเปˆเบฅเปเบ–เป‰เบฒเบ—เบธเบเบ„เบปเบ™เบขเบนเปˆเบชเบฐเป€เปเบต เบซเบผเบทเปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบงเบฑเบ™เบขเบฒเบชเบนเบš

เบญเบตเบเบงเบดเบ—เบตเปœเบถเปˆเบ‡เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบเบฒเบ™เบ™เบณเปƒเบŠเป‰. เบ‚เปเปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบงเบฑเบ™เบขเบฒเบชเบนเบšเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เป€เบกเบทเปˆเบญเบ—เบตเบกเบ‡เบฒเบ™ A เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰เป€เบงเบตเบŠเบฑเบ™เปƒเบซเบกเปˆ.

เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ—เบตเบกเบ‡เบฒเบ™ เบ™เบณ เปƒเบŠเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡ เปœเบถเปˆเบ‡ เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”. เบ‚เปเป‰เบ„เบงเบฒเบกเบซเบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบˆเบฒเบ mocks เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เปเบกเปˆเบ™ simulated, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบเบปเบ‡เบเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ›เบฐเบˆเปเบฒเบงเบฑเบ™เบ›เบปเบเบเบฐเบ•เบด. เบ–เป‰เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ”เบต, เบ—เบตเบกเบ‡เบฒเบ™เบ›เปˆเบฝเบ™เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบŠเบปเบกเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตโ€‹เบชเบญเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ เบกเบตเบ—เบฒเบ”เป€เบซเบผเบฑเบเบžเบดเป€เบชเบ”. เบ—เบตเบกเบ‡เบฒเบ™เบ—เบปเบ”เบชเบญเบšเบกเบฑเบ™เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ›เปˆเบฝเบ™เบกเบฑเบ™, เปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบ‚เปเป‰เป€เบชเบเบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบงเบฑเบ™เบขเบฒเบชเบนเบš:

  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰. เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบขเบนเปˆเปƒเบช? เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบกเบทเป‰โ€‹เบงเบฒเบ™โ€‹เบ™เบตเป‰โ€‹เบซเบผเบทโ€‹เบญเบฒโ€‹เบ—เบดเบ”โ€‹เบเปˆเบญเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ™เบตเป‰โ€‹, เปเบ•เปˆโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบšเปเปˆโ€‹เบชเบฐโ€‹เป€เบซเบกเบตโ€‹เป„เบ› coincide เบเบฑเบšโ€‹เบ›เบฐโ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹.
  • เบเบฒเบเบ—เบตเปˆเบˆเบฐเบฎเบฑเบเบชเบฒ. เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบฎเบฑเบเบชเบฒเบšเบฑเบ™เบŠเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเบ›เบฑเบšเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เปเบ•เปˆเบฅเบฐเบ„เบฑเป‰เบ‡, เป€เบกเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเบเปˆเบงเบฒเบเบฒเบ™เบ‚เบฝเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบ™ sandbox เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡.

เป‚เบšเบ™เบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰ เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹.

เบเบฒเบ™เบ›เปˆเบญเบ Canary

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบงเบฑเบ™เบขเบฒเบชเบนเบš, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบญเบ canary.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบœเบนเป‰เปเบฎเปˆเบ—เบฒเบ”เปƒเบŠเป‰ canaries เป€เบžเบทเปˆเบญเบŠเบตเป‰เบšเบญเบเบฅเบฐเบ”เบฑเบšเบญเบฒเบเปเบเบฑเบชเป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ IT. เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบ›เปˆเบญเบเปƒเบซเป‰เป€เบ‚เบปเป‰เบฒ เบšเบฒเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบชเปเบฒเบฅเบฑเบšเบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆ, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ‚เปเป‰เบ•เบปเบเบฅเบปเบ‡เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ (SLA). SLA เปเบกเปˆเบ™ "เบชเบดเบ”เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”" เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบ•เปเปˆเบ›เบต (เบซเบผเบทเบชเปเบฒเบฅเบฑเบšเป„เบฅเบเบฐเป€เบงเบฅเบฒเบญเบทเปˆเบ™เป†). เบ–เป‰เบฒเบ—เบธเบเบขเปˆเบฒเบ‡เบ”เบต, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เบ–เป‰เบฒเบšเปเปˆ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบฑเบšเบ„เบทเบ™เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เปเบฅเบฐ nuancesโ€‹

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เปˆเบญเบ canary เปเบ™เบงเปƒเบ”? เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบธเปˆเบกเบฅเบนเบเบ„เป‰เบฒเบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบœเปˆเบฒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบเบฒเบ™เบˆเบฑเบ”เบงเบฒเบ‡เป€เบ›เบฑเบ™เปเบšเบšเบ™เบตเป‰: เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบซเบ™เบถเปˆเบ‡ node เบญเบญเบเบˆเบฒเบเบžเบฒเบเปƒเบ•เป‰ balancer (1), เบ›เปˆเบฝเบ™เบชเบฐเบšเบฑเบš (2) เปเบฅเบฐเปเบเบเบญเบญเบเปƒเบ™เบšเบฒเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™ (3).

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เป‚เบ”เบเบฅเบงเบกเปเบฅเป‰เบง, เบ—เบธเบเบ„เบปเบ™เปƒเบ™เบเบธเปˆเบกเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบชเบธเบ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบœเบนเป‰เปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เบˆเบฐเบšเปเปˆเบžเปเปƒเบˆ. เบ–เป‰เบฒเบ—เบธเบเบขเปˆเบฒเบ‡เบ”เบต, เบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เบ—เบธเบเบฅเบธเป‰เบ™.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบˆเบฐโ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เบ—เปˆเบฒเบ™ schematically เบกเบฑเบ™โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบ„เบทโ€‹เบงเปˆเบฒโ€‹เบชเปเบฒโ€‹เบฅเบฑเบš microservices เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบซเบผเบฒเบโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹.

เบกเบต Service Discovery เปเบฅเบฐเบญเบตเบเบชเบญเบ‡เบšเปเบฅเบดเบเบฒเบ™: S1N1 เปเบฅเบฐ S2. เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เปเบฒเบญเบดเบ” (S1N1) เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™ Service Discovery เป€เบกเบทเปˆเบญเบกเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบฅเบฐ Service Discovery เบˆเบทเปˆเบกเบฑเบ™เป„เบงเป‰. เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเบชเบญเบ‡เบ—เบตเปˆเบกเบตเบชเบญเบ‡ nodes (S2N1 เปเบฅเบฐ S2N2) เบเบฑเบ‡เปเบˆเป‰เบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบšเปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเบชเบญเบ‡เป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”. เบ„เบปเบ™เบ—เปเบฒเบญเบดเบ”เบ–เบฒเบก Service Discovery เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบกเบฑเบ™, เปเบฅเบฐเป€เบกเบทเปˆเบญเบกเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเบกเบฑเบ™, เบกเบฑเบ™เบŠเบญเบเบซเบฒเปเบฅเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบžเบงเบเบกเบฑเบ™ ("เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบš"). เป€เบกเบทเปˆเบญเบฅเบฒเบงเบเบงเบ”เป€เบšเบดเปˆเบ‡, เบฅเบฒเบงเบˆเบฐเบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒ.

เป€เบกเบทเปˆเบญเปƒเบœเบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบ™เปเบฒเป„เบ›เปƒเบŠเป‰เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเบ‚เบญเบ‡เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเบชเบญเบ‡, เบžเบงเบเป€เบ‚เบปเบฒเบšเบญเบ Service Discovery เบงเปˆเบฒ node เบ—เบตเบชเบญเบ‡เบˆเบฐเป€เบ›เบฑเบ™ node canary: เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบซเบ™เป‰เบญเบเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบกเบฑเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒ node canary เบญเบญเบเบˆเบฒเบเบžเบฒเบเปƒเบ•เป‰ balancer เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบ—เปเบฒเบญเบดเบ”เบšเปเปˆเป„เบ”เป‰เบชเบปเปˆเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ›เบซเบฒเบกเบฑเบ™.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เบชเบฐเบšเบฑเบšเปเบฅเบฐ Service Discovery เบฎเบนเป‰เบงเปˆเบฒ node เบ—เบตเบชเบญเบ‡เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบกเปˆเบ™ canary - เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบซเป‰เบกเบฑเบ™เป‚เบซเบผเบ”เบซเบ™เป‰เบญเบเบฅเบปเบ‡ (5%). เบ–เป‰เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ”เบต, เบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เบชเบฐเบšเบฑเบš, เบชเบปเปˆเบ‡เบ„เบทเบ™เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบเป‰เบฒเบงเบ•เปเปˆเป„เบ›.

เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™:

  • เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡;
  • เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบฎเบนเป‰เบงเปˆเบฒเบœเบนเป‰เปƒเบŠเป‰เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบ„เบฒเบ”เบซเบงเบฑเบ‡เบซเบเบฑเบ‡เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เปเบ™เบงเปƒเบ”;
  • เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบšเบฑเบšเป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบตเบ›เบฒเบ™เปƒเบ”เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”;
  • เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” โ€” เบ‚เบฝเบ™โ€‹เบฅเปเบฒโ€‹เบ”เบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ (เบ—เปเปˆโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹)โ€‹.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบš. เบกเบตเบชเบญเบ‡เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เป€เบงเบฅเบฒ เบซเบ™เบถเปˆเบ‡ node เปเบกเปˆเบ™ canary เบชเบฐเป€เบซเบกเบต. node เบ™เบตเป‰เบชเบฐเป€เบซเบกเบตเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบซเบ™เป‰เบญเบเบฅเบปเบ‡เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบˆเบฒเบเบกเบฑเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบšเบฑเบ™เบซเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบฝเบšเบ—เบฝเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบกเบฑเบ™เบเปˆเบญเบ™เปเบฅเบฐเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” 2 เป€เบ—เบปเปˆเบฒ, เบ„เบงเบฒเบกเป€เบชเบเบซเบฒเบเป„เบ”เป‰เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ.

เป‚เบ™เบ” Canary เบ–เบทเบเบฅเบฐเบšเบธเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡. เป€เบกเบทเปˆเบญเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเปเบฒเป€เบฅเบฑเบ”เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบชเบฐเบ–เบฒเบ™เบฐ canary node เบญเบญเบเบˆเบฒเบเบกเบฑเบ™, เบเบญเบ”เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบˆเบฐเบ–เบทเบเบŸเบทเป‰เบ™เบŸเบนเบ„เบทเบ™เบกเบฒ. เบกเบตเบฅเบปเบ”เบซเบ™เป‰เบญเบเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบเบเบธเบ”เบ•เบดเบ—เปเบฒ.

เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก

เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบญเบ canary. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เป€เบฎเบฑเบ”เบญเบฑเบ™เบ™เบตเป‰ เปเบฅเบฐเบ•เบปเบงเบงเบฑเบ”เปเบ—เบเปƒเบ”เบ—เบตเปˆเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบเบณ.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบงเบฑเบ”เปเบ—เบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบˆเบฒเบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

  • เบˆเปเบฒเบ™เบงเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เป€เบŠเบดเปˆเบ‡เบ‚เบฝเบ™เปƒเบชเปˆเบšเบฑเบ™เบ—เบถเบ. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™. เป‚เบ”เบเบฅเบงเบกเปเบฅเป‰เบงเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ—เบตเปˆเบ”เบต.
  • เป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก (latency). เบ—เบธเบเบ„เบปเบ™เบ•เบดเบ”เบ•เบฒเบกเบงเบฑเบ”เปเบ—เบเบ™เบตเป‰เป€เบžเบฒเบฐเบงเปˆเบฒเบ—เบธเบเบ„เบปเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ.
  • เบ‚เบฐเปœเบฒเบ”เปเบ–เบง (เบœเปˆเบฒเบ™).
  • เบˆเปเบฒเบ™เบงเบ™เบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต.
  • เป€เบงเบฅเบฒเบชเปเบฒเป€เบฅเบฑเบ”เบชเปเบฒเบฅเบฑเบš 95% เบ‚เบญเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบฑเบ‡เบซเบกเบปเบ”.
  • เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ—เบธเบฅเบฐเบเบดเบ”: เบ—เบธเบฅเบฐเบเบดเบ”เป€เบฎเบฑเบ”เป€เบ‡เบดเบ™เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบซเบผเบทเบœเบนเป‰เปƒเบŠเป‰ churn. เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบซเบผเบฒเบเบเปˆเบงเบฒเบ—เบตเปˆเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เป€เบžเบตเปˆเบก.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡ metrics เปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ—เบตเปˆเบ™เบดเบเบปเบกเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”.

เบงเบฝเบเบ‡เบฒเบ™เบ•เป‰เบฒเบ™เบเบฒเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”. เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐ interpolate metric เบ™เบตเป‰เปเบฅเบฐเบชเบถเบเบชเบฒเบเบฒเบŸ: เบกเบทเป‰เบงเบฒเบ™เบ™เบตเป‰เบกเบต 2 เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”, เปเบฅเบฐเบกเบทเป‰เบ™เบตเป‰เบกเบต 500, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบกเบตเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบœเบดเบ”เบžเบฒเบ”.

เบˆเปเบฒเบ™เบงเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ•เปเปˆเบ™เบฒเบ—เบตเบซเบผเบทเบ•เปเปˆเบงเบดเบ™เบฒเบ—เบตเปเบกเปˆเบ™เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ„เบดเบ”เป„เบฅเปˆเป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰ Counter. เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบขเบนเปˆเปƒเบ™เป„เบฅเบเบฐเป„เบ. เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบตเบชเปเบฒเบฅเบฑเบšเบชเบญเบ‡เบฎเบธเปˆเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบชเบฐเบšเบฑเบšเบ—เปเบฒเบญเบดเบ”เบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบซเบ™เป‰เบญเบ, เบšเบฒเบ‡เบ—เบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบ. เปƒเบ™เบชเบฐเบšเบฑเบšเบ—เบตเบชเบญเบ‡, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบฎเป‰เบฒเบเปเบฎเบ‡เบเบงเปˆเบฒเป€เบเบปเปˆเบฒ. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเป„เบ”เป‰เบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบกเบตเบšเบฑเบ™เบซเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบกเป‰เบงเบ™เบเบฑเบšเบชเบฐเบšเบฑเบšเบ™เบตเป‰.

เป€เบ„เบทเปˆเบญเบ‡เบงเบฑเบ”เปเบ—เบ. Metrics เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš Counter, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบšเบฑเบ™เบ—เบถเบเบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบซเบผเบทเบซเบผเบธเบ”เบฅเบปเบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ‚เปเป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ” เบซเบผเบทเบ‚เบฐเปœเบฒเบ”เปเบ–เบง.

เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบชเบฐเปเบ”เบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เป€เบงเบฅเบฒเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡ (latency). เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบชเบฐเบšเบฑเบšเบ•เปˆเบฒเบ‡เป†เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบžเบงเบเบกเบฑเบ™เป„เบ”เป‰. เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบขเปˆเบฒเบ‡เปƒเบเป‰เบŠเบดเบ”, เบ—เปˆเบฒเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบ„เปˆเบฒเบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบ™เบงเปƒเบ”. เบ–เป‰เบฒเป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเป€เบžเบตเปˆเบกเบœเบนเป‰เปƒเบŠเป‰, เบกเบฑเบ™เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบกเบตเบšเบฑเบ™เบซเบฒ - เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเปˆเบญเบ™.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

Summary เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบ—เบธเบฅเบฐเบเบดเบ”เปเบกเปˆเบ™เป€เบ›เบตเป€เบŠเบฑเบ™. metric เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ 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)

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบšเบฑเบš

เบกเบตเบซเบผเบฒเบเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบšเบฑเบš.

เป€เบšเบดเปˆเบ‡ metrics เบชเปเบฒเบฅเบฑเบš nodes canary เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”: เบ™เปเบฒเปƒเบŠเป‰เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเปเบฅเบฐเบชเบถเบเบชเบฒเบžเบฝเบ‡เปเบ•เปˆเบงเบฝเบเบ‡เบฒเบ™. เปเบ•เปˆเบ–เป‰เบฒเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰เป€เบฅเบตเปˆเบกเบชเบถเบเบชเบฒเบšเบฑเบ™เบ—เบถเบ, เป‚เบซเบผเบ”เบซเบ™เป‰เบฒเปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เบเบฒเบ™เปเบเป‰เป„เบ‚เบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบ„เบปเบ™เบญเบทเปˆเบ™.

เป‚เบ™เบ” Canary เปเบกเปˆเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบ‚เปเป‰เบญเบทเปˆเบ™เป†. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™เป†เบ—เบตเปˆเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป€เบ•เบฑเบก. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบกเบตเบเบฒเบ™เบˆเบฒเบฅเบฐเบˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เบเบงเปˆเบฒเป€เบเบปเปˆเบฒเบซเบผเบทเบšเปเปˆเบ”เบตเบเปˆเบงเบฒเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡, เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบœเบดเบ”เบžเบฒเบ”.

เบ‚เปเป‰ Canary เปเบกเปˆเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เปƒเบ™เบญเบฐเบ”เบตเบ”. เบ‚เปเป‰เบ—เบตเปˆเบˆเบฑเบ”เบชเบฑเบ™เปƒเบซเป‰ canary เบชเบฒเบกเบฒเบ”เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบญเบฒเบ—เบดเบ”เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ”เบต, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบญเบตเบ‡เปƒเบชเปˆเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™.

เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”

เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบŸเบฃเบตเบˆเบฒเบเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ„เบนเปˆเบกเบท, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบˆเบถเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ—เปเปˆเบชเบปเปˆเบ‡เบเบฒเบ™เบ™เปเบฒเป„เบ›เปƒเบŠเป‰เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฑเปˆเบ‡เบ™เบตเป‰:

  • เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™;
  • เป€เบญเบปเบฒ node เบˆเบฒเบเบžเบฒเบเปƒเบ•เป‰ balancer;
  • เบ•เบดเบ”เบ•เบฑเป‰เบ‡ canary node;
  • เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบตเบ”เป€เบ„เบทเปˆเบญเบ‡เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™;
  • เปƒเบซเป‰เบชเบปเบกเบ—เบฝเบš.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ” เบเบฒเบ™โ€‹เบ›เบฝเบšโ€‹เบ—เบฝเบšโ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ”โ€‹. เบ‚เปเปƒเบซเป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เปเบฅเบฐเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบกเบฑเบ™เบ”เบตเบเบงเปˆเบฒเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบˆเบฒเบ Jenkins.

เบ™เบตเป‰เปเบกเปˆเบ™เบ—เปเปˆเบชเบปเปˆเบ‡เป„เบ›เบซเบฒ 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
    }
}

เบ—เบตเปˆเบ™เบตเป‰เปƒเบ™ loop เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบฝเบšเบ—เบฝเบš node เปƒเบซเบกเปˆเบžเบฒเบเปƒเบ™เบซเบ™เบถเปˆเบ‡เบŠเบปเปˆเบงเป‚เบกเบ‡. เบ–เป‰เบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™ canary เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบชเปเบฒเป€เบฅเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™, เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ. เบ™เบฒเบ‡โ€‹เบฅเบฒเบโ€‹เบ‡เบฒเบ™โ€‹เบงเปˆเบฒโ€‹เบ—เบธเบโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบธเบโ€‹เบขเปˆเบฒเบ‡โ€‹เบ”เบตโ€‹เบซเบผเบทโ€‹เบšเปเปˆโ€‹: def isOk = compare(srv, canary, time, base, offset, metrics).

เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เปเบกเปˆเบ™โ€‹เบ”เบต - sleep DEFAULT SLEEP, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเปเบฒเบฅเบฑเบšเบงเบดเบ™เบฒเบ—เบต, เปเบฅเบฐเบชเบทเบšเบ•เปเปˆ. เบ–เป‰เบฒเบšเปเปˆเปเบกเปˆเบ™, เบญเบญเบเบˆเบฒเบ - เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบฅเบปเป‰เบกเป€เบซเบฅเบง.

เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡ metric. เบกเบฒเป€เบšเบดเปˆเบ‡เบเบฑเบ™เบงเปˆเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ„เป‰เบฒเบเบ„เบทเปเบ™เบงเปƒเบ” 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 node เปเบกเปˆเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เบžเบทเป‰เบ™เบ–เบฒเบ™ - baseValue โ€” เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบ„เปˆเบฒโ€‹เบ‚เบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบญเบทเปˆเบ™เป†โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™ canaryโ€‹. เบžเบงเบเป€เบฎเบปเบฒเบ›เบฝเบšเบ—เบฝเบšเบ„เปˆเบฒเบเบฑเบšเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เบชเบนเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ›เบฐเบชเบปเบšเบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ–เป‰เบฒเบกเบนเบ™เบ„เปˆเบฒ canaryValue เบšเปเปˆเบ”เบต, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบฅเบปเป‰เบกเป€เบซเบฅเบง, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเบ„เบทเบ™.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ—เบฑเบ‡เปเบปเบ”เบ™เบตเป‰เบˆเบถเปˆเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™?

เบšเบธเบเบ„เบปเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเบซเบผเบฒเบเบฎเป‰เบญเบเปเบฅเบฐเบžเบฑเบ™เบ‚เบญเบ‡ metrics, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบกเบฑเบ™เป„เบง. เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบŠเปˆเบงเบเบเบงเบ”เบชเบญเบš metrics เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เบ—เปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ. เป€เบงเบฅเบฒเป€เบ•เบทเบญเบ™เปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™: เบ–เป‰เบฒเบกเบตเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™ 2 เบงเบดเบ™เบฒเบ—เบตเบชเบธเบ”เบ—เป‰เบฒเบ, เบ„เบงเบฒเบกเป€เบชเบเบซเบฒเบเบˆเบฐเบšเปเปˆเปƒเบซเบเปˆเป€เบ—เบปเปˆเบฒเบเบฑเบšเบกเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™ 15 เบ™เบฒเบ—เบตเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰. เบˆเบปเบ™เบเปˆเบงเบฒเบœเบนเป‰เปƒเบ”เบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบšเบฑเบ™เบซเบฒ, เบ‚เบฝเบ™เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™, เปเบฅเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบˆเบฐเบกเป‰เบงเบ™เบกเบฑเบ™เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบชเบนเบ™เป€เบชเบเบฅเบนเบเบ„เป‰เบฒ.

เบ–เป‰เบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเปเบฒเป€เบฅเบฑเบ”เปเบฅเบฐเบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบต, เบžเบงเบเป€เบฎเบปเบฒเบ•เบดเบ”เบ•เบฑเป‰เบ‡เป‚เบซเบกเบ”เบญเบทเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰, เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบšเปเปˆเป€เบฎเบฑเบ”เบซเบเบฑเบ‡เป€เบฅเบตเบ. เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบตเบ”เบ•เบปเบง canary เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒ metrics เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒ, เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš, เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบเบธเบ”เบ—เบฐเบชเบฒเบ”เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบ–เป‰เบฒเบšเบฑเบ™เบซเบฒเป€เบเบตเบ”เบ‚เบทเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเบ„เบทเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” canary node, เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบชเบฐเบšเบฑเบšเบเปˆเบญเบ™เบซเบ™เป‰เบฒเปเบฅเบฐเปเบเป‰เป„เบ‚เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบžเบปเบš. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ metrics, เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒเบžเบงเบเป€เบ‚เบปเบฒเปเบฅเบฐเป€เบšเบดเปˆเบ‡เบ„เบงเบฒเบกเป€เบชเบเบซเบฒเบเบˆเบฒเบเบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆ.

เบญเบธเบ›เบฐเบชเบฑเบ

เบ™เบตเป‰, เปเบ™เปˆเบ™เบญเบ™, เบšเปเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ เบฅเบฐโ€‹เบšเบปเบšโ€‹เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบเบงเบ”โ€‹เบเบฒโ€‹เบ—เบปเปˆเบงโ€‹เป„เบ›โ€‹. เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบกเบต metrics เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบฅเบฐเบ™เบฑเบเบงเบดเป€เบ„เบฒเบฐเบกเบตเบ„เบปเบ™เบญเบทเปˆเบ™, เปเบฅเบฐเบ—เบธเบฅเบฐเบเบดเบ”เบกเบตเบ„เบปเบ™เบญเบทเปˆเบ™. เบฅเบฐเบšเบปเบšเบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เบžเบฒเบชเบฒเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบ—เบธเบฅเบฐเบเบดเบ”เปเบฅเบฐเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบงเบปเป‰เบฒ.

เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” เบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบšเบ‚เบญเบ‡ metrics. เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆ เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ‚เบฑเป‰เบ™เบ•เปˆเปเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเปเบกเปˆเบ™เบซเบเบฑเบ‡?.

เบงเบดเบ—เบตเบเบฒเบ™เบšเบฑเบ™เบฅเบธเบ™เบตเป‰? เปƒเบŠเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ canary เบšเปเปˆเปเบกเปˆเบ™เปƒเบ™เป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”. เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบฐเบšเบฑเบšเป€เบเบปเปˆเบฒเบ—เบตเปˆเบ—เบธเบเป€เบงเบฅเบฒเบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒ node เบ—เบตเปˆเบญเบธเบ—เบดเบ”เบ•เบปเบ™เปเบฅเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ›เบฝเบšเบ—เบฝเบš: เบžเบงเบเป€เบฎเบปเบฒเบชเบถเบเบชเบฒเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบŠเบญเบเบซเบฒเป€เบชเบฑเป‰เบ™เบ™เบฑเป‰เบ™เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบšเบฑเบ™เบฅเบธเบ„เบธเบ™เบ™เบฐเบžเบฒเบš.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”: Canary Deployment

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบญเบ canary เปเบ™เบงเปƒเบ”

เบซเบผเบธเบ”เบœเปˆเบญเบ™เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ„เบงเบฒเบกเป€เบชเบเบซเบฒเบเบˆเบฒเบเปเบกเบ‡เป„เบกเป‰. เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเปˆเบงเบ™เปƒเบซเบเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเป‰เบญเบ™เบ„เบงเบฒเบกเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡ เบซเบผเบทเบšเบนเบฅเบดเบกเบฐเบชเบดเบ”. เบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบซเบ™เป‰เบญเบเบซเบผเบฒเบเป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เปƒเบ™เบงเบดเบ™เบฒเบ—เบตเบ—เปเบฒเบญเบดเบ”.

เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ—เบตเบกเบ‡เบฒเบ™. Newbies เบกเบต "เบชเบดเบ”โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹"โ€‹: เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบขเป‰เบฒเบ™โ€‹เบเบปเบงโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹, เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบฅเบดโ€‹เป€เบฅเบตเปˆเบกโ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹เปเบฅเบฐโ€‹เปเบฎเบ‡โ€‹เบˆเบนเบ‡โ€‹เปƒเบˆโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹. เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบ—เปเบฒเบฅเบฒเบเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบชเปเบฒเบ„เบฑเบ™, เปเบฅเบฐเบœเบนเป‰เบ—เบตเปˆเป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”เบˆเบฐเบšเปเปˆเบ–เบทเบเป„เบฅเปˆเบญเบญเบ.

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ„เบนเปˆเบกเบทเบ„เบทเบเบฑเบšเบเปˆเบญเบ™, เปเบ•เปˆเป€เบ›เบฑเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบ—เป‰เป†. เปเบ•เปˆเบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบเบงเปˆเบฒ.

เป€เบ™เบฑเป‰เบ™เปƒเบซเป‰เป€เบซเบฑเบ™เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ—เบตเปˆเบชเบณเบ„เบฑเบ™. เบšเปเบฅเบดเบชเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”, เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเบ—เบธเบฅเบฐเบเบดเบ”เปเบฅเบฐเบงเบดเบชเบฐเบงเบฐเบเบญเบ™, เป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เปเบ—เป‰เป†เปƒเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบญเบฑเบ™เปƒเบ”, เบ•เบปเบงเบขเปˆเบฒเบ‡, outflow เปเบฅเบฐ inflow เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰. เบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบšเบ„เบธเบกเบ‚เบฐเบšเบงเบ™เบเบฒเบ™: เบžเบงเบเป€เบฎเบปเบฒเบ—เบปเบ”เบชเบญเบš metrics, เปเบ™เบฐเบ™เปเบฒเปƒเบซเบกเปˆ, เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบเบปเปˆเบฒเป€เบฎเบฑเบ”เบงเบฝเบ, เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบฅเบฒเบเป„เบ”เป‰เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบ‚เบถเป‰เบ™.

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเป€เบขเบฑเบ™เบซเบผเบฒเบเปเบฅเบฐเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒ. เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเป€เบ›เบฑเบ™เบกเบทเบญเบฒเบŠเบตเบšเปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ”เบต, เบšเปเปˆเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒเบซเบผเบทเบšเปเปˆ.

เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบงเบดโ€‹เบชเบฐโ€‹เบงเบฐโ€‹เบเปเบฒ - เบˆเบธเบ”เบชเบธเบกเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡ TechLead Conf. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เป„เบ”เป‰โ€‹เบšเบฑเบ™โ€‹เบฅเบธโ€‹เบœเบปเบ™โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹เปƒเบ™โ€‹เป€เบชเบฑเป‰เบ™โ€‹เบ—เบฒเบ‡โ€‹เบ—เบตเปˆโ€‹เบ”เบตโ€‹เป€เบฅเบตเบ”โ€‹เบ”เป‰เบฒเบ™โ€‹เบงเบดโ€‹เบŠเบฒโ€‹เบเบฒเบ™โ€‹เปเบฅเบฐโ€‹เบžเป‰เบญเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบšเบญเบโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบŠเปˆเบงเบโ€‹เบ—เปˆเบฒเบ™โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰โ€‹, - เบชเบฐเบซเบกเบฑเบเบ‚เปเป€เบญเบปเบฒเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™.

เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบ–เบท TechLead Conf เบงเบฑเบ™เบ—เบต 8 เบกเบดเบ–เบธเบ™เบฒ. เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบเบญเบ‡เบ›เบฐเบŠเบธเบกเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบทเปˆเบญเบงเปˆเบฒเบเบฒเบ™เบเบฑเบเบเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบˆเบฐเบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เปเบšเบšเบกเบทเบญเบฒเบŠเบตเบšเปเบฅเบฐเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบŠเบญเบเบซเบฒเบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบเปˆเบฝเบงเบเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เบ™เปเบฒเบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบžเบงเบเบกเบฑเบ™ - เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป„เบ›เบญเบญเบ™เป„เบฅเบ™เปŒเปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster