|
| 1 | +--- |
| 2 | +title: Канареечное развертывание |
| 3 | +status: Completed |
| 4 | +category: concept |
| 5 | +tags: ["methodology", "application", ""] |
| 6 | +--- |
| 7 | + |
| 8 | +Стратегия канареечных развертываний _(canary deployments)_ начинается с двух окружений: |
| 9 | +одно из них уже обслуживает пользователей, другое — содержит обновленный код (но пока без трафика). |
| 10 | +Трафик постепенно переключается с исходной, старой версии приложения на новую. |
| 11 | +Начинают обычно с минимального процента (например, с 1%) и постепенно увеличивают долю трафика, |
| 12 | +которая поступает в новую версию, пока та не достигнет 100%. |
| 13 | +Такая стратегия позволяет протестировать новую версию ПО в production, получить обратную связь, |
| 14 | +диагностировать ошибки и при необходимости быстро откатиться к старой стабильной версии. |
| 15 | + |
| 16 | +Сам термин происходит от старой практики, когда канарейки помогали выявлять опасные газы в шахтах. |
| 17 | +Если в шахте были вредные газы, не имеющие запаха, птица погибала, и шахтеры понимали, что необходимо срочно эвакуироваться. |
| 18 | +То же самое справедливо и для канареечных развертываний: если окажется, что с новым кодом что-то не так, |
| 19 | +можно сразу откатиться на старую версию. |
| 20 | + |
| 21 | +## Какую проблему решает |
| 22 | + |
| 23 | +Какой бы тщательной ни была стратегия тестирования, в процессе эксплуатации всегда обнаруживаются те или иные ошибки. |
| 24 | +Переключение сразу всего трафика с одной версии приложения на другую может привести к масштабным сбоям. |
| 25 | + |
| 26 | +## Как именно решает проблему |
| 27 | + |
| 28 | +Канареечные развертывания позволяют увидеть, как новое программное обеспечение поведет себя в реальных условиях, |
| 29 | +прежде чем направлять на него весь трафик. |
| 30 | +Такая стратегия помогает минимизировать время простоя и быстро откатиться назад в случае возникновения проблем с новым развертыванием. |
| 31 | +Также она позволяет проводить более глубокое тестирование production-приложений, не оказывая существенного влияния на пользовательский опыт. |
0 commit comments