6
Построение отказоустойчивых приложений с возможностью горизонтального масштабирования
Дмитрий Гурьянов

Описание: В работе предлагается изучить современные средства для разработки бэкендов для веб и мобильных приложений.

Общая схема следующая: клиенты (single-page веб приложение на JavaScript или мобильное приложение) обращаются с запросами в систему, на входе которой стоит load balancer, который распределяет нагрузку между несколькими API-серверами. API-серверы не хранят никакого состояния, а все складывают в базу данных и/или на сетевое хранилище данных. Для долгих задач API серверы обращаются к worker’ам, запущенным на отдельных серверах через очередь сообщений или посредством HTTP запросов.

Таким образом есть следующие сервисы:

  1. Load balancer на входе
  2. API сервисы
  3. База данных
  4. Хранилище данных
  5. Load balancer/scheduler для внутренней коммуникации
  6. Worker’ы

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

Результат: разработка приложения, в котором будут выше перечисленные компоненты, например, минимальный видео-портал, на который можно будет загрузить видео-файл, а портал должен его перекодировать в стандартный формат и затем показывать на основной странице (для простоты можно сделать его однопользовательским).