👩💻 Инфраструктура проектов на примере YeaHub
Знаете, всегда интересно развиваться и выходить за рамки своей специализации. Когда я еще работал разрабом, я активно изучал бекенд и базы данных, писал свои пет-проекты, рефакторил и дописывал бекенд на работе (кстати, вот об этом пост).
Миграция бекенда и масштабный рефакторинг
Но когда я начал разрабатывать свой первый стартап App-Salute (об этом тоже пост), то уперся в то, что умею писать фронт и бэк, но как публиковать реальные прод-приложения — вообще не понимал.
Мой первый стартап — сервис онлайн-записи App-Salute
Я потратил уйму времени, чтобы создать инфраструктуру и настроить деплой. Это было тяжело, но методом проб и ошибок я справился, и была зарелизена первая версия стартапа: nginx, pm2 — все было простенько, без Docker и прочего. Обновлял приложение вручную: заходил через терминал на сервер, все обновлял и перезапускал.
Спустя 6 месяцев я полностью переписал App-Salute на более современный стек — уже с Docker и GitHub Actions. Через docker-compose организовал сервисы, поднял БД, настроил nginx с SSL-сертификатами. Все запускалось одной командой. Параллельно настроил CI/CD: смерджил ветку в develop — автоматически публиковалась тестовая версия, смерджил в main — уходило в прод.
Эти знания я применил и в YeaHub. Спустя время понял, что хочу глубже разобраться с Kubernetes и GitOps-подходом. Да, для стартапа это местами оверкилл, но мне хотелось закрыть этот пробел в знаниях. Плюс — чтобы ученики стажировались уже на взрослой инфраструктуре, как это чаще всего устроено в крупных продуктовых компаниях.
Для них я даже проводил отдельный митап: показывал, как все устроено под капотом, открывал конфиги, сервисы, объяснял полный цикл деплоя и работы инфраструктуры. Получилось очень подробно — как я умею :) Теперь ученики спокойно рассказывают про инфраструктуру своих проектов на собеседованиях.
Стажировка в YeaHub глазами новичка
Что у нас есть в YeaHub?
У каждого проекта есть Dockerfile, в котором описана сборка и запуск приложения, а также GitHub Actions workflow для CI/CD.
Pipeline устроен примерно так:
— собираем Docker image,
— отправляем его в registry,
— обновляем image tag в GitOps-репозитории,
— ArgoCD видит изменения и синхронизирует Kubernetes-кластер с новым состоянием.
Kubernetes-конфигурация описана через Helm chart’ы.
Для релизов используем release-ветки. Настроены dev и prod стенды. Дополнительно экспериментировали с preview environments — автоматически поднимали отдельный стенд под feature-ветки с уникальным поддоменом. Но так как у нас стажировка и одновременно создается очень много веток, по ресурсам это оказалось дороговато, поэтому от идеи отказались.
Также есть тесты, husky, линтеры и прочие automated checks. В итоге получился полноценный production-like CI/CD и release flow.
YeaHub переехал на новую инфраструктуру
На картинках — схемы из митапа: как устроен Kubernetes и инфраструктура YeaHub.
🚀 База собесов — 💪 Frontend Элита — 📚 Менторство — 📹 YouTube
Post #1592
2.65K


- ❤ 14
- 👍 2
- 🔥 2
- 🤝 1