Узнайте, как переписать бэкенд на Go с нуля за месяц: архитектура, тесты, CI, observability. Примените к своему проекту прямо сейчас.
Два месяца назад я запустил Info Links — бесплатную платформу с курсами для студентов. Бэкенд был на Supabase: фронтенд общался с Postgres напрямую. Работало, но на собеседовании такой код не защитишь. Я решил за месяц переписать всё на Go, чтобы репозиторий выдержал 15 минут чтения сеньором. Получилось — делюсь опытом.
Главная проблема старого кода — глобальный синглтон базы и SQL в хендлерах. Новая структура:
HTTP → router → handler → service → repository → PostgresВнутренние пакеты изолированы:
Внедрение зависимостей из main, никаких глобалов. Теперь хендлеры можно мокать.
Вот что появилось за месяц:
Покрытие тестами: ~93% на api, ~96% на service. Табличные тесты с моками репозиториев.
Студенты получают быстрый клиентский рендеринг, а краулеры — серверный HTML для страниц курсов, sitemap и robots.txt. Один Go-сервер обслуживает оба сценария.
Написал 6 Architecture Decision Records: почему net/http вместо Gin/Fiber, почему Supabase остаётся для Postgres, почему Render вместо GitHub Pages. Если на собеседовании спросят «почему не X?» — есть аргументированный ответ.
Самое сложное — разрыв между «работает» и «могу объяснить каждый слой без подсказок». Я использовал AI, но ввёл правило: 45 минут в день без AI — рефакторинг или объяснение кода вслух. Если не могу — не коммичу.
Продукт всё так же бесплатен для студентов. Инженерная часть наконец догнала историю, которую я рассказываю.
Возьмите свой работающий pet-проект и за месяц приведите его в порядок: добавьте слои, тесты, CI, ADR. Не для галочки — чтобы вы могли объяснить каждую строчку на собеседовании. Начните с одного компонента: например, выделите репозиторий из хендлера.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →