Перейти к основному содержимому

Процесс обновления JAICP и Aimylogic

В этой статье мы рассказываем о том, как процесс обновления JAICP и Aimylogic происходил раньше и как происходит сейчас. Вы также узнаете основные преимущества текущего подхода, а также как мы обрабатываем сбои в работе продукта на боевом окружении.


Наша платформа — система из более чем 20 компонентов. Объем ее кодовой базы сейчас — 400 000 строк кода, над разработкой JAICP и Aimylogic работают несколько команд.

До осени 2022 года обновления системы проходили 1–2 раза в месяц. В связи с постоянным ростом системы и команд мы поменяли подход к обновлению наших продуктов. Теперь обновления происходят чаще, а сами релизы — не такие объемные. Подобный подход уже применяется во многих крупных компаниях, которые занимаются разработкой программного обеспечения.

Процесс до осени 2022
  1. Команды разработки накапливали изменения за 2 недели (спринт).
  2. Из этих изменений формировался «большой» релиз.
  3. Мы проверяли релиз на тестовых окружениях и устанавливали на боевое.

При этом установка релиза планировалась заранее, мы рассылали уведомления пользователям о предстоящих работах. Как правило, обновление проводилось в вечернее время в понедельник–четверг.

Минусы

  • Система становилась объемнее и сложнее, команды росли — увеличивалось количество изменений в продукте. Один «большой» релиз каждый раз требовал все более тщательной и длительной проверки.

  • Затягивалась диагностика проблем после обновления — нужно было задействовать сразу несколько команд, чтобы понять, чьи именно изменения оказали негативное влияние.

Чтобы начать применять новый подход, мы:

  • Расширили покрытие автотестами всей функциональности системы. Сейчас это более 3 000 тестов, которые выполняются больше 2 часов.

  • Обеспечили бесшовность обновлений для критических компонентов. Их обновление происходит незаметно для пользователей. Трафик постепенно переходит с одного сервера на другой, компонент отключается, обновляется и возобновляет работу.

    подсказка
    Критический компонент — компонент, который участвует в обработке звонков и чатов с ботами.

Как сейчас происходят обновления

Каждое изменение устанавливается на боевое окружение по мере его готовности. Под готовностью подразумевается создание новой функциональности, ее тестирование и документирование, а также прохождение полного набора тестов.

Режим обновлений:

  • В рабочее время по будням устанавливаются обновления, для которых не планируется недоступность критических компонентов системы.
  • В вечернее время проводятся работы, где возможна недоступность сервиса.
  • В пятницу (или в последний предпраздничный день) устанавливаются только критические обновления.

Сейчас у нас переходный период, поэтому зачастую мы продолжаем уведомлять пользователей о работах. Далее будем предупреждать только о тех обновлениях, в которых ожидается недоступность компонентов или которые могут потребовать от пользователей дополнительных действий.

Преимущества

  • Минимальное влияние на пользователей

    Обновление происходят незаметно для пользователей. И даже если проблемы появляются, они либо быстро решаются, так как обновления выполняются в рабочее время, либо обновление откатывается.

  • Быстрая доставка изменений продукта

    Релизы могут устанавливаться каждый день и даже несколько раз в день на разные окружения, например app.jaicp.com и zb04.just-ai.com.

Как обрабатываются сбои системы

Мы разбираем каждый инцидент и ошибку на боевом окружении и выясняем причины, которые к ним привели. После этого:

  • меняем и адаптируем процесс обновления и проверок (post-deployment verification);
  • дополняем автотесты, которые в будущем позволят поймать похожее поведение на тестовом окружении.

Нам очень помогает обратная связь от пользователей и нашей технической поддержки. Мы используем ее для повышения качества сервиса.

Если вам не подходит текущий процесс обновления

Если по каким-то причинам вам не подходит текущий процесс, свяжитесь со своим аккаунт менеджером или напишите нам на client@just-ai.com. Мы постараемся подобрать вам индивидуальные условия и регламент обновлений, обсудим возможные варианты. Например, развертывание для вас отдельного инстанса платформы в частное облако (private cloud) нашими силами.