Какие знаешь способы горизонтального масштабирования

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

Ответ

  1. Балансировка нагрузки (Load Balancing)
    Распределение запросов между несколькими серверами с помощью балансировщика (Nginx, HAProxy, AWS ALB).

  2. Шардинг (Sharding)
    Разделение данных по разным серверам (например, по ID пользователя).

  3. Репликация (Replication)
    Копирование данных на несколько серверов для чтения (Master-Slave).

  4. Микросервисы (Microservices)
    Разделение приложения на независимые сервисы, которые можно масштабировать отдельно.

  5. Кеширование (Caching)
    Использование Redis/Memcached для снижения нагрузки на БД.

Пример на Go с балансировкой через httputil.ReverseProxy:

proxy := httputil.NewSingleHostReverseProxy(targetURL)
http.ListenAndServe(":8080", proxy)