Что такое микросервисная архитектура

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

Ответ

Микросервисная архитектура — это подход к разработке приложений как набора небольших, независимых сервисов, каждый из которых выполняет одну бизнес-функцию.

Ключевые особенности:

  • Автономность: каждый сервис работает в своём процессе и развёртывается независимо.
  • Специализация: сервис решает одну конкретную задачу (например, аутентификация, платежи).
  • Слабая связанность: общение через API (HTTP/RPC) или брокеры сообщений (Kafka, RabbitMQ).
  • Масштабируемость: можно масштабировать отдельные сервисы под нагрузку.

Пример на Go:

// Сервис пользователей (HTTP API)  
func main() {  
    r := gin.Default()  
    r.GET("/users/:id", getUserHandler)  
    r.Run(":8080")  
}  

// Сервис заказов (gRPC)  
type OrderServer struct{}  
func (s *OrderServer) CreateOrder(ctx context.Context, req *pb.OrderReq) (*pb.OrderResp, error) { ... }  

Плюсы:

  • Гибкость в выборе технологий.
  • Упрощённое тестирование и деплой.

Минусы:

  • Сложность мониторинга и отладки.
  • Накладные расходы на межсервисное взаимодействие.