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

Ответ

Микросервисная архитектура решает проблемы монолитных приложений:

  • Масштабируемость — можно масштабировать отдельные сервисы, а не всё приложение.
  • Гибкость — разные сервисы могут использовать разные технологии (языки, БД и т.д.).
  • Устойчивость — падение одного сервиса не приводит к отказу всей системы.
  • Независимое развертывание — обновление одного сервиса не требует перезапуска всего приложения.
  • Простота поддержки — меньшие кодовые базы легче понимать и тестировать.

Пример:

// Сервис пользователей (отдельный микросервис)
package main

import (
    "net/http"
    "log"
)

func main() {
    http.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "application/json")
        w.WriteHeader(http.StatusOK)
        w.Write([]byte(`{"id": 1, "name": "John Doe"}`)) // Пример данных пользователя
    })
    log.Println("User service listening on :8081")
    log.Fatal(http.ListenAndServe(":8081", nil))
}

Недостатки: сложность оркестрации, сетевые задержки, согласованность данных, распределённое логирование и мониторинг.