Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

Deployment

Зачем

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

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

scheme

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

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

Стратегии развертывания Deploy

Canary Deployment

Технологии