Skip to content

runebone/software-design-s6-bmstu

Repository files navigation

Микросервисный проект на Go

Описание проекта

Проект состоит из четырех независимых микросервисов, разработанных на Go, которые взаимодействуют между собой по REST API. Архитектура построена с применением принципов Clean Architecture, что обеспечивает модульность, тестируемость и простоту масштабирования.

Каждый сервис разворачивается отдельно, имеет собственную базу данных, тесты, Dockerfile и конфигурацию. Проект демонстрирует навыки проектирования микросервисов, разработки на Go, тестирования, интеграции с внешними сервисами и контейнеризации.


Архитектура проекта

  • Aggregator (API Gateway) — объединяет все сервисы и предоставляет единый REST API.
  • Auth — управление аутентификацией, JWT, двухфакторная авторизация (TOTP), подтверждение email.
  • Todo — сервис управления досками и карточками задач.
  • User — хранение и управление данными пользователей.

Взаимодействие между сервисами происходит по HTTP, а также через вызовы к репозиториям и внешним сервисам.


Структура микросервиса

Точка входа

  • cmd/main.go — запуск сервиса.

Бизнес-логика

  • internal/usecase/interface.go — описание интерфейса бизнес-логики.
  • internal/usecase/v1/<имя_сервиса>.go — реализация бизнес-логики.
  • internal/usecase/v1/<имя_сервиса>_test.go — юнит-тесты.

Внешние сервисы

  • internal/service/<имя_сервиса>/interface.go — интерфейс внешнего сервиса.

  • Пример:

    type ForecastService interface {
        GetCurrentTemperature()
        GetCurrentWeather()
        GetForecast()
    }

Модельные сущности

  • internal/entity/<имя_сущности>.go — модели, используемые в бизнес-логике.

Транспортные сущности

  • internal/dto/<имя_сущности>.go — структуры для взаимодействия с внешними системами.

Репозиторий

  • internal/repository/interface.go — интерфейс репозитория.
  • internal/repository/entity.go — структуры для работы с базой данных.

Реализации

  • internal/adapter/<имя_порта>/<реализация>/<имя_файла>.go — конкретная реализация интерфейса (например, SQLx, Redis).

Обработчики

  • internal/handler/v1/<имя_файла>.go — HTTP-обработчики.

Маршрутизация

  • internal/api/v1/routes.go — настройка роутинга.

Общее

  • internal/common/<имя_порта>/interface.go — интерфейсы логгера, кэша и т.д.

Конфигурация

  • internal/config/config.go — парсинг конфигурационных файлов.

Миддлварь

  • internal/middleware/<название>.go — middleware для сервиса.

Миграции

  • migrations/<бд>/ — миграции базы данных.

Моки

  • mocks/ — моки для тестов.

Тесты

  • tests/<тип_тестирования>/ — интеграционные и e2e тесты.

Развертывание

  • Dockerfile — сборка и запуск сервиса.
  • docker-compose.yml — запуск через Docker Compose.

Запуск проекта

make

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages