diff --git a/00_manifest.csv b/00_manifest.csv index d09d67f..f1e96f7 100644 --- a/00_manifest.csv +++ b/00_manifest.csv @@ -142,4 +142,6 @@ VKC_LR_04_cicd_gitops_app-config_РемизовКЛ_20260619.png,EVIDENCE,LR_04, VKC_LR_04_cicd_gitops_log_РемизовКЛ_20260619.log,EVIDENCE,LR_04,main,Лог выполнения команд (установка ArgoCD),02_evidence/VKC_LR_04_cicd_gitops_log_РемизовКЛ_20260619.log,VKC_LR_04_cicd_gitops_REPORT_РемизовКЛ_20260619.md,final, VKC_CASE_03_migration_РемизовКЛ_20260619.md,CASE,M08,CASE_03,Анализ и выбор стратегии миграции LAMP-приложения,01_reports/VKC_CASE_03_migration_РемизовКЛ_20260619.md,,final, VKC_CASE_03_migration_IvanovII_20260619.drawio.png,DIAGRAM,M08,CASE_03,Схема целевой архитектуры интернет-магазина в VK Cloud,04_diagrams/VKC_CASE_03_migration_IvanovII_20260619.drawio.png,,final, +VKC_ARCH_M08_highload_store_REPORT_РемизовКЛ_20260619.md,CASE,M08,8.2,Проектирование высоконагруженной архитектуры интернет-магазина,01_reports/VKC_ARCH_M08_highload_store_REPORT_РемизовКЛ_20260619.md,,final, +VKC_ARCH_M08_highload_store_diogram_РемизовКЛ_20260619.drawio.png,DIAGRAM,M08,8.2,Схема архитектуры высоконагруженного интернет-магазина,04_diagrams/VKC_ARCH_M08_highload_store_diogram_РемизовКЛ_20260619.drawio.png,VKC_ARCH_M08_highload_store_REPORT_РемизовКЛ_20260619.md,final, 00_manifest.csv,MANIFEST,all,all,Финальный манифест сдачи,00_manifest.csv,,final, diff --git a/01_reports/VKC_ARCH_M08_highload_store_REPORT_РемизовКЛ_20260619.md b/01_reports/VKC_ARCH_M08_highload_store_REPORT_РемизовКЛ_20260619.md new file mode 100644 index 0000000..b6af9f0 --- /dev/null +++ b/01_reports/VKC_ARCH_M08_highload_store_REPORT_РемизовКЛ_20260619.md @@ -0,0 +1,98 @@ +--- +course_code: VKCLOUD-80 +artifact_type: CASE +case_code: ARCH_HIGHLOAD_STORE +case_title: Проектирование высоконагруженной архитектуры интернет-магазина +student_fio: Ремизов К.Л. +date: 2026-06-19 +source_docs: [3-Конспект лекций - VK 1.md,2- Тематический план - VK -1.md, 7-Шпаргалка студента -VK-1.md] +attached_files: [VKC_ARCH_M08_highload_store_diogram_РемизовКЛ_20260619.drawio.png] +status: final +--- + +# Разбор практического кейса + +## 1. Суть кейса + +Разработать облачную архитектуру для высоконагруженного интернет-магазина, который должен выдерживать пиковые нагрузки в периоды распродаж (например, «чёрная пятница»), обеспечивать высокую доступность (отказоустойчивость) и горизонтальное масштабирование. Требуется выбрать и обосновать набор сервисов VK Cloud, спроектировать схему взаимодействия компонентов и описать меры по обеспечению надёжности. + +## 2. Ограничения и исходные условия + +- **Платформа** – VK Cloud (все сервисы должны быть доступны в этом облаке). +- **Бюджет** – не фиксирован, но желательна оптимизация затрат (FinOps). +- **Временные ограничения** – проект должен быть реализован в рамках курса (модуль 8). +- **Технические требования**: + - Поддержка > 10 000 RPS в пик. + - Время отклика страницы < 200 мс (95-й перцентиль). + - Доступность 99.99% (4 девятки). + - Безопасность: защита от DDoS и веб-атак. + - Асинхронная обработка заказов (не блокировать пользователя). + - Кэширование часто запрашиваемых данных. + - Мониторинг и алертинг. + +## 3. Варианты решения + +| Вариант | Плюсы | Минусы | Когда применять | +|---------|-------|--------|-----------------| +| **A. Монолит на ВМ с ручным масштабированием** | Простота разработки, низкие начальные затраты | Единая точка отказа, сложность горизонтального масштабирования, ручное управление, отсутствие гибкости | Для небольших проектов с низкой нагрузкой и статичным трафиком | +| **B. Микросервисы в Kubernetes с управляемыми сервисами (предлагаемый)** | Горизонтальное масштабирование, отказоустойчивость, автоматическое восстановление, гибкость обновлений | Более высокая сложность и стоимость, требует DevOps-культуры | Для высоконагруженных и динамичных проектов, требующих быстрой эволюции | +| **C. Серверлес (VK Cloud Functions)** | Минимальное администрирование, оплата за вызовы | Ограничения по времени выполнения, языкам, холодный старт, сложность управления состоянием | Для эпизодических и простых задач (не для основного магазина) | + +**Выбран вариант B** как наиболее соответствующий всем требованиям по нагрузке, доступности и гибкости. + +## 4. Выбранное решение и обоснование + +### 4.1. Состав компонентов (все из VK Cloud) + +| Компонент | Сервис VK Cloud | Обоснование | +|-----------|-----------------|-------------| +| **CDN** | VK Cloud CDN | Географически распределённая доставка статики (изображения, CSS, JS) – снижает нагрузку на бэкенд и ускоряет загрузку для пользователей по всему миру. | +| **Балансировщик L7** | VK Cloud Load Balancer (Application LB) | Распределение HTTP/HTTPS трафика, поддержка health checks и маршрутизации по URL (например, `/api/*` → K8s, `/static/*` → CDN). | +| **WAF + AntiDDoS** | VK Cloud WAF и AntiDDoS | Защита от SQL-инъекций, XSS и DDoS-атак – критично для публичного интернет-магазина. | +| **Веб-серверы (frontend)** | Auto Scaling Group (ВМ с nginx) | Обработка статики и проксирование на K8s; горизонтальное масштабирование по CPU/RPS; дешёвый и управляемый слой. | +| **Микросервисы (backend)** | Managed Kubernetes | Контейнерная оркестрация: автоматическое масштабирование (HPA), самовосстановление, канареечные обновления. Поддерживает 55 000 подов на кластер. | +| **Кэш** | Managed Redis Cluster (шардированный) | Хранение сессий, кэш каталога, цен. Микросекундная задержка, кластерная отказоустойчивость. | +| **Основная БД** | Managed PostgreSQL (шардирование) | Реляционная БД для товаров, заказов, пользователей. Шардирование позволяет горизонтально масштабироваться (ключ – `user_id`). | +| **Реплики для чтения** | PostgreSQL replicas | Тяжёлые аналитические запросы и отчёты идут на реплики, не нагружая мастер. | +| **Очередь сообщений** | Cloud Kafka / RabbitMQ | Асинхронная обработка заказов (списание товаров, email, SMS, бонусы). Разгружает критический путь запроса. | +| **Мониторинг** | Prometheus + Grafana (развёрнутые в K8s) | Сбор метрик, дашборды, алертинг – основа наблюдаемости. | + +### 4.2. Почему именно эти сервисы? + +- **Kubernetes** выбран вместо чистых ВМ, потому что он обеспечивает декларативное управление, автоматическое масштабирование и восстановление, что критично для высокой нагрузки. +- **Redis** – лучшее решение для кэширования благодаря скорости и поддержке кластеров. +- **PostgreSQL** – зрелая СУБД с поддержкой сложных запросов и транзакций; шардирование решает проблему роста данных. +- **Kafka** гарантирует надёжную доставку сообщений и позволяет масштабировать воркеры независимо. + +## 5. Риски и меры снижения + +| Риск | Вероятность | Влияние | Мера снижения | +|------|-------------|---------|---------------| +| Отказ master-узла PostgreSQL | Средняя | Высокое (заказы не создаются) | Автоматический failover на реплику; регулярные бэкапы в S3. | +| Перегрузка Redis (кэш не попадает) | Низкая | Среднее (рост нагрузки на БД) | Мониторинг использования памяти; автоскейлинг кластера; настройка TTL. | +| DDoS-атака | Высокая | Критическое | Встроенный AntiDDoS VK Cloud + WAF; ограничение частоты запросов. | +| Ошибка в микросервисе (краш) | Средняя | Среднее | Kubernetes автоматически пересоздаёт под; канареечные обновления; откат через GitOps. | +| Человеческий фактор (неправильная конфигурация) | Средняя | Высокое | Всё описывается как код (IaC) – Terraform и Helm; код-ревью; CI/CD проверяет конфигурации. | +| Превышение бюджета | Средняя | Среднее | FinOps: тегирование ресурсов, бюджетные алерты, использование Spot-инстансов для тестовых сред. | + +## 6. Артефакты + +| Файл | Назначение | +|------|------------| +| `VKC_ARCH_M08_highload_store_diogram_РемизовКЛ_20260619.drawio.png` | Схема архитектуры (экспорт из draw.io) в формате PNG | +| `VKC_ARCH_M08_highload_store_REPORT_РемизовКЛ_20260619.md` | Данный отчёт (заполненный шаблон) | + +**Схема архитектуры** представлена на изображении ниже: + +![Схема архитектуры высоконагруженного интернет-магазина](VKC_ARCH_M08_highload_store_diogram_РемизовКЛ_20260619.drawio.png) + +## 7. Вывод + +Предложенная архитектура на базе управляемых сервисов VK Cloud обеспечивает: +- **Отказоустойчивость** – каждый компонент имеет резервирование, распределение по зонам доступности, автоматический failover. +- **Горизонтальное масштабирование** – все слои (веб-серверы, микросервисы, кэш, БД, очередь) могут расширяться при росте нагрузки. +- **Высокую производительность** – CDN, Redis и реплики БД для чтения гарантируют низкие задержки. +- **Безопасность** – WAF и AntiDDoS защищают от внешних угроз. +- **Управляемость** – IaC, CI/CD и GitOps упрощают эксплуатацию и обновления. + +Реализация данной архитектуры в VK Cloud полностью покрывает требования высоконагруженного интернет-магазина и соответствует лучшим практикам облачного проектирования. diff --git a/04_diagrams/VKC_ARCH_M08_highload_store_diogram_РемизовКЛ_20260619.drawio.png b/04_diagrams/VKC_ARCH_M08_highload_store_diogram_РемизовКЛ_20260619.drawio.png new file mode 100644 index 0000000..c6b410b Binary files /dev/null and b/04_diagrams/VKC_ARCH_M08_highload_store_diogram_РемизовКЛ_20260619.drawio.png differ diff --git a/RemizovKL.zip b/RemizovKL.zip deleted file mode 100644 index bc0f00e..0000000 Binary files a/RemizovKL.zip and /dev/null differ