В этой статье мы рассказываем о том, как процесс обновления JAICP и Aimylogic происходил раньше и как происходит сейчас. Вы также узнаете основные преимущества текущего подхода, а также как мы обрабатываем сбои в работе продукта на боевом окружении.
Наша платформа — система из более чем 20 компонентов. Объем ее кодовой базы сейчас — 400 000 строк кода, над разработкой JAICP и Aimylogic работают несколько команд.
До осени 2022 года обновления системы проходили 1–2 раза в месяц. В связи с постоянным ростом системы и команд мы поменяли подход к обновлению наших продуктов. Теперь обновления происходят чаще, а сами релизы — не такие объемные. Подобный подход уже применяется во многих крупных компаниях, которые занимаются разработкой программного обеспечения.
Процесс до осени 2022
- Команды разработки накапливали изменения за 2 недели (спринт).
- Из этих изменений формировался «большой» релиз.
- Мы проверяли релиз на тестовых окружениях и устанавливали на боевое.
При этом установка релиза планировалась заранее, мы рассылали уведомления пользователям о предстоящих работах. Как правило, обновление проводилось в вечернее время в понедельник–четверг.
Минусы
Система становилась объемнее и сложнее, команды росли — увеличивалось количество изменений в продукте. Один «большой» релиз каждый раз требовал все более тщательной и длительной проверки.
Затягивалась диагностика проблем после обновления — нужно было задействовать сразу несколько команд, чтобы понять, чьи именно изменения оказали негативное влияние.
Чтобы начать применять новый подход, мы:
Расширили покрытие автотестами всей функциональности системы. Сейчас это более 3 000 тестов, которые выполняются больше 2 часов.
Обеспечили бесшовность обновлений для критических компонентов. Их обновление происходит незаметно для пользователей. Трафик постепенно переходит с одного сервера на другой, компонент отключается, обновляется и возобновляет работу.
подсказкаКритический компонент — компонент, который участвует в обработке звонков и чатов с ботами.
Как сейчас происходят обновления
Каждое изменение устанавливается на боевое окружение по мере его готовности. Под готовностью подразумевается создание новой функциональности, ее тестирование и документирование, а также прохождение полного набора тестов.
Режим обновлений:
- В рабочее время по будням устанавливаются обновления, для которых не планируется недоступность критических компонентов системы.
- В вечернее время проводятся работы, где возможна недоступность сервиса.
- В пятницу (или в последний предпраздничный день) устанавливаются только критические обновления.
Сейчас у нас переходный период, поэтому зачастую мы продолжаем уведомлять пользователей о работах. Далее будем предупреждать только о тех обновлениях, в которых ожидается недоступность компонентов или которые могут потребовать от пользователей дополнительных действий.
Преимущества
Минимальное влияние на пользователей
Обновление происходят незаметно для пользователей. И даже если проблемы появляются, они либо быстро решаются, так как обновления выполняются в рабочее время, либо обновление откатывается.
Быстрая доставка изменений продукта
Релизы могут устанавливаться каждый день и даже несколько раз в день на разные окружения, например
app.jaicp.com
иzb04.just-ai.com
.
Как обрабатываются сбои системы
Мы разбираем каждый инцидент и ошибку на боевом окружении и выясняем причины, которые к ним привели. После этого:
- меняем и адаптируем процесс обновления и проверок (post-deployment verification);
- дополняем автотесты, которые в будущем позволят поймать похожее поведение на тестовом окружении.
Нам очень помогает обратная связь от пользователей и нашей технической поддержки. Мы используем ее для повышения качества сервиса.
Если вам не подходит текущий процесс обновления
Если по каким-то причинам вам не подходит текущий процесс, свяжитесь со своим аккаунт менеджером или напишите нам на client@just-ai.com. Мы постараемся подобрать вам индивидуальные условия и регламент обновлений, обсудим возможные варианты. Например, развертывание для вас отдельного инстанса платформы в частное облако (private cloud) нашими силами.