Pull to refresh
8K+
2
Лев@merra123

Люблю писать код

9
Rating
1
Subscribers
Send message

Чистая архитектура на практике: перестаём ломать сервис при каждом релизе

Level of difficultyMedium
Reading time10 min
Reach and readers9K

У вас небольшой релиз. Вы меняете пару строк кода, выкатываете обновление - и через несколько минут сервис начинает отдавать странные ошибки. Баги появляются в местах, которые вы вообще не трогали.

Знакомо?

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

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

Посмотрите на функцию загрузки инвойса:

Читать далее

Как я реализовал Blue-Green деплой с нулевым даунтаймом на Docker Compose

Level of difficultyMedium
Reading time5 min
Reach and readers10K

Недавно я внедрил blue‑green деплой в проде. Реализация довольно простая и кастомная, но справляется со своей задачей на ура! Также сообщу, что используется обычный докер композ на виртуалке — возможно, кому‑то такой подход будет полезен.

Для фоновых процессов (воркеров)

В приложение добавляется специальный инфрастуктурный singleton класс с флагом is_accepting, и обертка на consumers. В каждом консьюмере перед обработкой проверяем этот флаг: если True — обрабатываем задачу, если False — переносим задачу на повторную обработку (например, в rabbitmq делаем сразу nack(requeue=true))

Читать далее

Information

Rating
766-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Бэкенд разработчик
Средний
Python
Clean Architecture
Асинхронное программирование
Многопоточность
Базы данных
Высоконагруженные системы
CI/CD
Мониторинг
Тестирование ПО
Веб-разработка