В ходе сегодняшнего занятия из курса “Otus PHP Professional“ занятия мы изучим понятия деплоя и сборок. Как результат, научимся строить базовые пайплайны развёртывания приложений и получим базовые навыки по автоматизации развертывания приложений.

  • Преподаватель: Михаил Каморин

  • Дата занятия: 06 июня 2022


/**/

Карта курса

Цели вебинара

Развертывание

Подготовка к автоматизации

Вопросы развертывания

Действия при релизе

(плюс) Прогрев кеша ~ фоновым скриптом генерируем кэш на нужные вещи, чтобы пользователь при запуске основного скрипта (использующего и валидирующего кеш) — не ощутил тормозов

Культура devops

(звезда) Инфраструктура хранится под контролем версий

(звезда) Цель DevOps — увеличить частоту релизов с минимумом падений (у сисадминов — только чтобы не падало, т.о. релиза затягиваются)

Проверочные вопросы по развертыванию

Ответы:

  • (1) создать колонку, в новую колонку засунуть записи, а потом если не упало , то удалить старую; завершить все воркеры, обновить код и миграции

  • (2) если обновление/удаление, а при добавлении — не обязательно

  • (3) мониторинг (автоматический) + smoke tests / health check (простые тесты, например, на статус 200) + тест ключевых endpoint-ов


CI/CD ~ Continuous integration / delivery / deployment

Определения

Требования к CI

Преимущества и недостатки Continuous integration

Требования к Continuous delivery

Требование к Continuous deployment

(warning) Как только смерджили в master, все автоматом уходит на прод (так что тут качество тестов крайне важно)

(звезда) Feature toggle — возможность быстро отключать какие-то фичи при релизе

Инструменты CI


Pipeline CI/CD

(звезда) Pipeline ~ скрипт, выполняемый при выкатке

Проверочные вопросы

Ответы:

(1) не всегда, например в финтехе или в безопасности жизни/здоровья человека не прокатит; еще пример — откладывание релизов на прайм-тайм (распродажи в магазине и т.п.);

(2) иначе на прод могут просочиться баги

(3) например, при водопадной модели: когда важен только конечный результат (за который и платят)

(4) да, например: “перегнать кучу данных из одного сервиса в другой, во время прайм-тайма”: решение: релизимся в прайм-тайм, а миграции выполняем уже позже, ночью.


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

Полное обновление

Стопим и апдейтим все сразу

Поочередное обновление

Частично стопим/апдейтим сервисы

Blue/green deployment

Варианты использования BG deploy

Shadow deployment

~ изменения идут сразу на 2 площадки параллельно (старую и новую прод-версии)

Canary deployment ~ канареечное обновление

~ переключаем Х% пользователей на новую версию (например, сперва самых скандальных пользователей, для фидбека)

Feature toggle

~ выкатка тестовых фич (эксперименты), с возможностью отката на старое поведение через настройки

(звезда) траблы с тестами, если фичи взаимосвязаны, тогда кол-во тестов равно 2 ^ N, где N — число фич

Контрольные вопросы

  • (1) например, переключение на пустую ветку

  • (2) продаем идею покупки 2го сервера: предлагаем канареечный сценарий (canary) для тестирования маркетинговых стратегий

  • (3) катим что-то значимое (а не все подряд кастомизируем; например, сделать лимит на число фич — не более Х); выпиливаем старые фичи со временем, вместе с переключателем фич (не оставляем их); старый код удаляем, зная что он остается в гите


Варианты деплоймента

Вручную

Bash-скрипты

Менеджер пакетов

Спец инструменты

  • Capistrano: тут все файлы с настройками харнятся, совместим с GitLab; написан на Ruby (прост в понимании)

  • Mina: пороще, побыстрее чем выше

  • Jenkins: не рекомендуется …


Доп. материалы


Tags

Нет комментариев

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.