Какая была архитектура проектов на прошлых работах

«Какая была архитектура проектов на прошлых работах» — вопрос из категории Архитектура, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В проектах применял:

  1. Монолит - для небольших сервисов с простой логикой. Плюсы: простота разработки и деплоя.
// Пример структуры
cmd/
  main.go
internal/
  handlers/
  models/
  services/
  1. Микросервисы - для масштабируемых систем. Использовал gRPC для межсервисного взаимодействия.
// gRPC клиент
conn, _ := grpc.Dial("service:50051", grpc.WithInsecure())
client := pb.NewServiceClient(conn)
  1. Clean/Hexagonal - для сложных доменов. Отделял бизнес-логику от инфраструктуры через интерфейсы.

  2. CQRS - в системах с интенсивным чтением/записью данных. Использовал Kafka для событий.

Для API применял REST и GraphQL (с библиотекой gqlgen). В качестве брокера сообщений - RabbitMQ/NATS.