Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

Deployment

Версионирование обновлений приложения

  • Цель
    • Не зависеть от обновлений бэка. Бэк выкатывается раньше.
    • Обратная совместимость
    • Простота поддержки
    • Минимальное время простоя
  • Проблемы
    • Пользователь не обновляется
    • Проверка долго, могут не пустить версию
    • Новая версия приложения еще неработает, а бэк новый уже обновлен
  • Версионирование варианты
    • Mediator pattern
    • Expand contract избыточность кода, поддержка документации
    • Номер версии: В данных, api - url, header
    • Правила версионирования SemVer
    • Язык запрсов к API: Graphql
  • Unit tests api version

Стратегии

  • Надежность
  • Сокращение TTM, проверка гипотез
    • Canary Deployment - гибче Rolling Update, т.к. часть запросов переключается на новую версию, а часть продолжает использовать старую версию
    • Dark (скрытые) или А/В-развертывания - вариация Canary стратегии . Разница между скрытым и канареечным развертыванием (Canary Deployment) состоит в том, что скрытые развертывания имеют дело с фронтендом, а не с бэкендом, как канареечные.
    • Feature toggle
      • сложный код, тестирование, удалять надо со временем, чтобы не было множества условий.
      • Бэк выкатили, затем приложение, когда надо включили фичу.
      • Стратегии включения фичи.
      • Типы: релизные, экспериментальные (ав тесты), разрешающие, операционные
      • Тогл правила, проверка результата
      • Избегать зависимостей тоглов
  • варианты schema

Canary Deployment

Как обновлять кодовую базу незаметно для пользователей

  • возможности управления HAProxy и реализации Graceful Shutdown в наших сервисах
  • Миграции бд
  • поддерживаем на бою одновременно старую и новую версии сервиса
  • Заранее, на этапе разработки софта, закладывается, что даже если будут изменения в базе данных сервиса, они не будут ломать предыдущий код.

scheme

Технологии