Подробный дизайн инфраструктуры сервиса‑клон Dropbox
Условие задачи
<p>Компания планирует создать сервис, схожий по функционалу с DropBox, рассчитанный на пользователей по всему миру (Европа, США, Азия и др.). Приложение состоит из набора микросервисов, каждый из которых реализует отдельный бизнес‑процесс (например, сервис оплаты, сервис управления пользователями, сервис работы с файлами и т.п.). Для хранения данных используется PostgreSQL, файлы размещаются в объектном хранилище совместимом с S3, а обмен сообщениями между микросервисами организован через очередь.</p>
<p>Исходный репозиторий содержит:</p>
<ul>
<li>10 каталогов, в каждом из которых находится код отдельного микросервиса и Dockerfile для его сборки;</li>
<li>файл docker‑compose.yml в корне, позволяющий запустить локальное окружение со всеми микросервисами, PostgreSQL, очередью и S3‑совместимым хранилищем.</li>
</ul>
<hr>
<p>Нефункциональные требования бизнеса:</p>
<ol>
<li><strong>Высокая доступность</strong> – SLA не менее 99,99 %.</li>
<li><strong>Устойчивость к нагрузке</strong> – система должна выдерживать как постоянную высокую нагрузку, так и кратковременные пиковые нагрузки.</li>
<li><strong>Низкая задержка</strong> – требуется минимальная latency как внутри региона, так и для пользователей из разных регионов.</li>
<li><strong>Безопасность и конфиденциальность</strong> – защита данных от несанкционированного доступа.</li>
<li><strong>Экономия расходов</strong> – инфраструктура должна быть cost‑effective, без избыточных затрат.</li>
<li><strong>Failover и DR</strong> – при отказе целого дата‑центра или региона сервис должен оставаться доступным и сохранять целостность данных.</li>
</ol>
<hr>
<p>Ваша роль – руководитель DevOps‑команды. Требуется подготовить:</p>
<ol>
<li><strong>Проект production‑окружения</strong> – предложить полную схему инфраструктуры, учитывающую все перечисленные требования. Явно указать используемые облачные сервисы, инструменты и подходы.</li>
<li><strong>Проект staging‑окружения</strong> – разработать вариант, максимально приближённый к production, но существенно дешевле. Описать, какие компоненты будут упрощены или исключены и почему.</li>
<li><strong>Управление инфраструктурой</strong> – выбрать методику и инструменты для автоматизации развертывания и поддержки инфраструктуры.</li>
<li><strong>Обратная связь</strong> – определить набор средств и практик, позволяющих разработчикам и бизнесу наблюдать за работой системы в разных средах и принимать решения по её оптимизации.</li>
<li><strong>Оценка производительности</strong> – описать подходы и метрики, которые помогут измерять эффективность использования серверных ресурсов, а также способы снижения задержек при работе с файлами.</li>
</ol>