ГлавнаяБлогКак за месяц превратить pet-проект в Go-бэкенд для продакшна
Алгоритмы

Как за месяц превратить pet-проект в Go-бэкенд для продакшна

Узнайте, как переписать бэкенд на Go с нуля за месяц: архитектура, тесты, CI, observability. Примените к своему проекту прямо сейчас.

Al
Редакция Algolitalgolit.ru
8 мин чтения20 июня 2026 г.

Зачем переписывать рабочий бэкенд на Go?

Два месяца назад я запустил Info Links — бесплатную платформу с курсами для студентов. Бэкенд был на Supabase: фронтенд общался с Postgres напрямую. Работало, но на собеседовании такой код не защитишь. Я решил за месяц переписать всё на Go, чтобы репозиторий выдержал 15 минут чтения сеньором. Получилось — делюсь опытом.

Архитектура: от globals к слоям

Главная проблема старого кода — глобальный синглтон базы и SQL в хендлерах. Новая структура:

HTTP → router → handler → service → repository → Postgres

Внутренние пакеты изолированы:

  • internal/repository — SQL за интерфейсами
  • internal/service — бизнес-логика без HTTP
  • internal/api — тонкие хендлеры: JSON → сервис → статус

Внедрение зависимостей из main, никаких глобалов. Теперь хендлеры можно мокать.

Промышленная гигиена: что добавил

Вот что появилось за месяц:

  • Структурированное логирование (slog)
  • Health checks: /healthz и /readyz
  • Prometheus /metrics
  • Middleware: request ID, panic recovery, rate limiting
  • CI: go test -race, golangci-lint, govulncheck
  • Docker multi-stage + docker-compose
  • Нагрузочное тестирование k6 (4400 req/s — rate limiter сработал за 1ms)

Покрытие тестами: ~93% на api, ~96% на service. Табличные тесты с моками репозиториев.

SEO без отказа от SPA

Студенты получают быстрый клиентский рендеринг, а краулеры — серверный HTML для страниц курсов, sitemap и robots.txt. Один Go-сервер обслуживает оба сценария.

Документация решений (ADR)

Написал 6 Architecture Decision Records: почему net/http вместо Gin/Fiber, почему Supabase остаётся для Postgres, почему Render вместо GitHub Pages. Если на собеседовании спросят «почему не X?» — есть аргументированный ответ.

Что сломалось и чему научился

Самое сложное — разрыв между «работает» и «могу объяснить каждый слой без подсказок». Я использовал AI, но ввёл правило: 45 минут в день без AI — рефакторинг или объяснение кода вслух. Если не могу — не коммичу.

Итоги месяца

  • Go-файлов: с ~6 до 100+
  • ADR: 0 → 6
  • Покрытие тестами: с ~0% до 93/96%
  • Middleware: с 0 до 6 слоёв
  • Нагрузочный тест: да, с реальными цифрами

Продукт всё так же бесплатен для студентов. Инженерная часть наконец догнала историю, которую я рассказываю.

Что делать прямо сейчас

Возьмите свой работающий pet-проект и за месяц приведите его в порядок: добавьте слои, тесты, CI, ADR. Не для галочки — чтобы вы могли объяснить каждую строчку на собеседовании. Начните с одного компонента: например, выделите репозиторий из хендлера.

#Go#бэкенд#архитектура#тестирование#pet-проект
Al
Редакция Algolit

Пишем про алгоритмы, подготовку к собеседованиям и карьеру в IT — так, чтобы было понятно и полезно.

Хочешь закрепить знания на практике?

Решай задачи на Algolit — интерактивная платформа для обучения

Начать бесплатно →