DevOps, CI/CD и инфраструктура — без фанатизма.
Инфраструктура, которую сможет поддерживать ваш будущий администратор. Никаких 40-строчных Helm-чартов под маленький сайт, никаких микросервисов ради микросервисов. Docker, простой CI, понятный мониторинг, runbook'и в репозитории. Работает — и продолжает работать, когда мы ушёл.
§ 09.1 Что делаем
Автосборка и деплой
GitHub Actions, GitLab CI, собственный runner — под ваш git. Тесты, линтинг, сборка, деплой, откат. Без «пуш в мастер — надежда на лучшее».
Контейнеризация
Dockerfile, compose для локалки, production-образы. Multi-stage билды, маленькие финальные образы, быстрое разворачивание.
K8s — когда он нужен
Для приложений, которым действительно нужна оркестрация: автомасштабирование, rolling updates, blue-green, canary. Для маленьких проектов — Docker Compose на одном сервере дешевле и проще.
Переезд между провайдерами
С AWS / GCP / DigitalOcean / Heroku на Hetzner / Selectel / Yandex Cloud — и обратно. Миграция баз без простоя, перенос DNS, проверка, откат при проблемах.
Мониторинг и алерты
Prometheus + Grafana, Loki для логов, Sentry для ошибок. Алерты в Telegram, приоритеты инцидентов. Чтобы проблема не стала видна сначала клиенту, а потом вам.
Infrastructure as Code
Terraform, Ansible, Pulumi. Вся инфраструктура в git: можно воспроизвести, можно провести ревью изменений, можно откатить.
§ 09.2 Провайдеры и стек
Основное: Hetzner (дёшево и надёжно для европейских проектов), Selectel / Yandex Cloud (для российских), Cloudflare (CDN, R2, Workers).
Иногда: AWS, GCP, Fly.io, Railway, Vercel — когда задача под их специфику.
Чего избегаем: Heroku (дорого), голый FTP (небезопасно), «положим на свой Linux-сервер и не будем обновлять» (это бомба замедленного действия).
§ 09.3 Принципы
- Сложность инфры должна соответствовать размеру команды. Kubernetes для команды из двух человек — это перебор.
- Каждое изменение — через код и pull request. Никаких правок в проде по SSH.
- Бэкапы проверяются регулярно. «Мы делаем бэкапы» и «мы умеем восстанавливаться» — это две очень разные вещи.
- Мониторинг настраивается до релиза, а не после первой потери данных.
- Runbook'и пишутся в момент настройки, а не «потом задокументируем».
§ 09.4 Частые вопросы
Нам советуют Kubernetes. Точно нужен?
Почти наверняка нет, если у вас меньше десятка сервисов и меньше двадцати запросов в секунду. Docker Compose на одной-двух VM решает ту же задачу за 10% времени и денег. Скажу честно, когда k8s оправдан.
Можно ли переехать с AWS на что-то дешевле?
Обычно — да. AWS часто в 3–5 раз дороже, чем Hetzner или Selectel, при сопоставимом железе. Считаем вашу стоимость, оцениваем миграцию, решаем, имеет ли смысл. Иногда — не имеет.
Кто будет поддерживать после вас?
Кто угодно, кто умеет в Docker и git. Конфигурация в репозитории, runbook'и в README, никаких «секретных скриптов» на моём ноутбуке. Передача занимает пару часов.
У нас сайт упал. Можете прийти на один раз?
Могу, если задача ясна. «Сайт лежит, непонятно почему» — берём в работу, диагностируем, чиним, документируем. Одноразовый инцидент — нормальный формат работы.
Опишите
что сейчас болит.
hi@weiss.help ↗
Первый созвон 20 минут — бесплатно. Экстренный инцидент — возьму сегодня.