Приведу несколько распространённых стратегий развертывания приложений/сервисов, с акцентом на два момента:
Без простоя — простаивают ли наши сервисы в процессе развертывания новой версии приложения.
Целевые пользователи — можно ли предоставить возможность протестировать новый функционал приложения ограниченному количеству пользователей (фокус‑группе).

Big Bang Deployment
Данная стратегия развертывания довольно проста: мы развертываем новую версию за один раз с простоем серверов. Для этой стратегии необходима подготовка. В случае сбоя в процессе развертывания мы откатываемся к предыдущей версии.
— Без простоев — ?
— Целевые пользователи — ?Rolling Deployment
Rolling Deployment (скользящее развёртывание) использует поэтапное развертывание в сравнении с первой стратегией. Серверы обновляются один за другим в течение определенного периода времени.
— Без простоев — ?
— Целевые пользователи — ?Blue-Green Deployment
При «сине‑зеленом» развертывании две среды развертываются в рабочей среде одновременно. Команда QA выполняет различные тесты в зеленой среде. Как только зеленая среда проходит тесты, балансировщик нагрузки переключает пользователей на нее.
— Без простоев — ?
— Целевые пользователи — ?Canary Deployment
При канареечном развертывании только небольшая часть серверов обновляется до новой версии, после прохождения всех тестов часть пользователей перенаправляется на канареечные серверы (обновленные серверы).
— Без простоев — ?
— Целевые пользователи — ?Feature Toggle
В рамках данной стратегии небольшой части пользователей выставляется флаг, который позволяет получить доступ к новой функции, в то время как другие пользователи работают со старым приложением. Ее можно использовать в сочетании с другими стратегиями.
— Без простоев — ?
— Целевые пользователи — ?
Теперь разберем пять популярных стратегий «жонглирования» данными между системами кэширования и базами данных.

Стратегия чтения данных — Cache Aside
Когда приложению необходимо прочитать данные из базы данных, оно сначала проверяет кэш на наличие этих да��ных. Если данные доступны (a cache hit), кэшированные данные возвращаются. Если данные недоступны (a cache miss), приложение обращается к базе данных. Данные возвращаются приложению и кэш обновляется.Стратегия чтения данных — Read Through
Когда приложение запрашивает в кэше данные и в кэше их не оказывается, то система кэширования самостоятельно запрашивается эти данные из базы данных. При возвращении данных от базы данных система кэширования их сохраняет у себя и возвращает приложению.Стратегия записи данных — Write Around
В этой стратегии данные записываются только в базу данных без записи в кэш. Данные попадаю в кэш только по мере необходимости (см. первую стратегию). Такая стратегия хороша для приложений, которые не часто повторно считывают недавно записанные данные. Стратегия приводит к меньшей задержке записи, но большей задержке чтения, что является приемлемым компромиссом для таких сценариев.Стратегия записи данных — Write Through
В этой стратегии данные одновременно записываются в кэш и в базу данных. Порядок записи данных тут не важен, главное — это подтверждение того факта, что данные записаны в оба места. Стратегия хороша для приложений, которые часто записывают, а затем с еще большей частотой, считывают данные. Это приведет к несколько большей задержке записи, но низкой задержке чтения. Таким образом, можно потратить немного больше времени на запись данных один раз, но затем получить выгоду от частого чтения с низкой задержкой (латентностью).Стратегия записи данных — Write Back or Write Behind
В этой стратегии данные записываются в кэш, и этого нам достаточно чтобы убедится в том, что данные успешно записаны. Данные также записываются в базу данных, но в фоновом режиме (асинхронно с использованием очереди). Стратегия лучше всего подходит для смешанных операций (чтения или записи), поскольку операции чтения и записи имеют практически одинаковое время отклика.
Так какая стратегия больше подходит вам?
Если статья показалась вам интересной, то у меня в планах еще целая серия на эту тему. Так что, если не хотите их пропустить — буду благодарен за подписку на мой ТГ‑канал HowToSchool.