TGViewer
10 минут до кода 10 минут до кода @ten_minutes_to_code · 228 subscribers
Post #78 58
CI/CD: Почему зеленые галочки в GitHub Actions не делают вас инженером

Многие привыкли воспринимать CI/CD как набор скриптов, которые просто запускают линтеры и тесты. Но если ваша команда релизится раз в месяц и при этом каждая выкатка превращается в пожар на проде, то у вас нет никакого CI/CD. У вас есть просто автоматизированная заливка кода.

Настоящий CI/CD — это в первую очередь инженерная культура доставки, а не просто конфиг в YAML-файле.

CI: Интеграция мелкими слайсами

Continuous Integration — это про постоянное подливание изменений в мейн-ветку.

Ошибка новичка — работать над огромной фичей три недели в отдельной ветке, а потом пытаться «впихнуть» этот объем кода в общую базу. Это антипаттерн.

Инженерный подход — резать огромную задачу на маленькие слайсики. Написал кусок логики — вмержил. Написал еще один — залил. Чтобы новый код не ломал продукт, мы используем feature flags о которых мы уже говорили.

Это как работа шеф-повара. Если он готовит сложное блюдо 40 минут и пробует его только перед подачей, велик риск узнать, что всё пересолено и время потрачено впустую. Программист с настроенным CI «пробует» каждый нарезанный ингредиент. Он уверен в результате на каждом этапе, потому что кодовая база растет не огромными кусками, а непрерывным потоком проверенных изменений.

CD: Смерть страницы «Технические работы»

Continuous Delivery решает проблему доступности.

Традиционный деплой — это когда мы переключаем сайт в Maintenance Mode, выкатываем код, накатываем миграции базы и надеемся, что всё заведется. Для пользователя это «окно», когда сервис недоступен. В современном мире это недопустимо.

Чтобы фича долетала до прода «по щелчку пальцев», используются механизмы атомарного деплоя:

1. Смена директорий: Мы собираем новую версию приложения в отдельной папке на сервере. Когда сборка готова и проверена, мы просто переключаем на нее симлинк. Пользователь мгновенно начинает получать данные из нового кода.
2. Контейнеризация: Приложение предсобирается в Docker-образ. В момент деплоя мы просто подменяем старый контейнер на новый.

Никаких уведомлений о технических работах. Весь процесс происходит бесшовно, потому что инфраструктура готова к подмене артефактов на лету.

Быстрая обратная связь как метрика успеха

CI/CD — это способ максимально быстро получить по рукам, если ты ошибся. Смысл пайплайна не в том, чтобы он был «красивым» или «зеленым». Его задача — упасть как можно раньше, если в коде баг.

С точки зрения бизнеса, чем быстрее упал пайплайн, тем меньше денег потеряно. Исправить ошибку, которую нашел автотест через минуту после пуша, стоит копейки. Исправлять ту же ошибку, когда она уже на проде аффектит тысячи пользователей — это уже убытки и репутационные риски.

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

Ставь 🔥 если все разложилось по полочкам. А если остались вопросы по реализации или что-то звучит слишком абстрактно — пиши в комменты, обязательно разберем!

10МДК | ВЕБМастер
  • 🔥 6
More from @ten_minutes_to_code
  1. May 28, 2026Первый сезон получился про путь “от пользователя к инженеру”. Именно эту картину мы весь с…
  2. May 28, 2026Когда я запускал этот канал, у меня была довольно простая идея: писать каждый день коротки…
  3. May 7, 2026Почему нормализация БД — это чистая логика, а не бюрократия На любом ongoing-проекте требо…
  4. May 3, 2026🤔 А где новые посты? Сори что вот так пропал без предупреждения, но я думал что справлюсь…
  5. Apr 29, 2026Почему HTTPS не спасет ваши секреты Замочек в адресной строке браузера — это мощное успоко…
  6. Apr 28, 2026Целостность данных против иллюзии атомарности Начинающий разработчик видит базу данных как…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →