Назад к задачам
Middle+ — Principal
31

Подробный дизайн инфраструктуры сервиса‑клон Dropbox

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Компания планирует создать сервис, схожий по функционалу с DropBox, рассчитанный на пользователей по всему миру (Европа, США, Азия и др.). Приложение состоит из набора микросервисов, каждый из которых реализует отдельный бизнес‑процесс (например, сервис оплаты, сервис управления пользователями, сервис работы с файлами и т.п.). Для хранения данных используется PostgreSQL, файлы размещаются в объектном хранилище совместимом с S3, а обмен сообщениями между микросервисами организован через очередь.

Исходный репозиторий содержит:

  • 10 каталогов, в каждом из которых находится код отдельного микросервиса и Dockerfile для его сборки;
  • файл docker‑compose.yml в корне, позволяющий запустить локальное окружение со всеми микросервисами, PostgreSQL, очередью и S3‑совместимым хранилищем.

Нефункциональные требования бизнеса:

  1. Высокая доступность – SLA не менее 99,99 %.
  2. Устойчивость к нагрузке – система должна выдерживать как постоянную высокую нагрузку, так и кратковременные пиковые нагрузки.
  3. Низкая задержка – требуется минимальная latency как внутри региона, так и для пользователей из разных регионов.
  4. Безопасность и конфиденциальность – защита данных от несанкционированного доступа.
  5. Экономия расходов – инфраструктура должна быть cost‑effective, без избыточных затрат.
  6. Failover и DR – при отказе целого дата‑центра или региона сервис должен оставаться доступным и сохранять целостность данных.

Ваша роль – руководитель DevOps‑команды. Требуется подготовить:

  1. Проект production‑окружения – предложить полную схему инфраструктуры, учитывающую все перечисленные требования. Явно указать используемые облачные сервисы, инструменты и подходы.
  2. Проект staging‑окружения – разработать вариант, максимально приближённый к production, но существенно дешевле. Описать, какие компоненты будут упрощены или исключены и почему.
  3. Управление инфраструктурой – выбрать методику и инструменты для автоматизации развертывания и поддержки инфраструктуры.
  4. Обратная связь – определить набор средств и практик, позволяющих разработчикам и бизнесу наблюдать за работой системы в разных средах и принимать решения по её оптимизации.
  5. Оценка производительности – описать подходы и метрики, которые помогут измерять эффективность использования серверных ресурсов, а также способы снижения задержек при работе с файлами.