🚀Собираем масштабируемую архитектуру веб-приложения. Горизонтальное и вертикальное масштабирование

YOUTUBE · 15.11.2025 10:01

Ключевые темы и таймкоды

Введение

0:05
  • Приветствие и анонс видео.
  • Обещание показать процесс создания масштабируемого веб-приложения на трех серверах.
  • Обещание объяснить принципы масштабируемости и настройки на платформе Selector.

Что такое масштабирование

0:34
  • Масштабируемая архитектура позволяет обслуживать растущий трафик.
  • Примеры: увеличение количества пользователей или запросов в секунду.
  • Проблемы при значительном увеличении трафика и необходимость увеличения мощностей.

Вертикальное и горизонтальное масштабирование

1:34
  • Вертикальное масштабирование: увеличение мощности одного сервера.
  • Горизонтальное масштабирование: добавление новых серверов.
  • Оба подхода используются совместно, но горизонтальное масштабирование более эффективно.

Начало работы с веб-приложением

3:11
  • Пример классического веб-приложения на Python.
  • Один сервер для веб-сервера, приложения и базы данных.
  • Увеличение мощностей сервера при росте трафика.

Разделение серверов

4:04
  • Вынос базы данных на отдельный сервер при росте трафика.
  • Разделение логики обработки запросов на несколько серверов.
  • Пример с тремя серверами: веб-сервер, приложение и база данных.

Горизонтальное масштабирование

5:50
  • Добавление новых серверов для обработки запросов.
  • Использование шардинга для базы данных.
  • Горизонтальное масштабирование для обслуживания растущего трафика.

Балансировка нагрузки

6:48
  • Использование DNS для балансировки нагрузки.
  • Пример с несколькими IP-адресами для распределения трафика.
  • Переход к более сложным техникам балансировки.

Пример на платформе Selector

7:44
  • Использование облачных технологий для масштабирования.
  • Преимущества Selector: оплата только за используемые ресурсы.
  • Удобство управления серверами и сетью.

Интерфейс Selector

10:23
  • Новый аккаунт на платформе Selector.
  • Заведение 500 рублей для тестирования.
  • Начало работы с квотами и серверами.

Регистрация и квоты

10:44
  • При регистрации создается пустой проект с квотами.
  • Квоты можно увеличить, нажав "изменить квоты".
  • Можно выбрать зону размещения сервера: Новосибирск, Питер, Москва.

Создание сервера

11:44
  • Выбор операционной системы: Debian 10.
  • Возможность выбора фиксированной или произвольной конфигурации.
  • Выбор типа диска: быстрый, универсальный, базовый.

Настройка сети и IP-адреса

12:41
  • Подключение плавающего IP-адреса.
  • Создание приватной подсети и IP-адреса.
  • Установка пароля для рута и создание сервера.

Обновление и настройка сервера

13:32
  • Обновление репозиториев и установка необходимых пакетов.
  • Добавление пользователя и настройка SSH.
  • Настройка SSH для доступа только пользователю "vv".

Установка и настройка Nginx

15:33
  • Установка Nginx для проксирования запросов.
  • Генерация SSH-ключей и настройка сервера.

Создание второго сервера

16:44
  • Создание сервера для приложения с параметрами: 20 ГБ ОЗУ, 15 ГБ диска.
  • Настройка приватной сети и IP-адреса.

Создание третьего сервера

18:13
  • Создание сервера для PostgreSQL с аналогичными параметрами.
  • Настройка приватной сети и IP-адреса.

Настройка и запуск серверов

18:50
  • Запуск серверов и настройка вкладок в терминале.
  • Установка необходимых пакетов и настройка SSH.

Установка Python

22:08
  • Установка Python версии 3.9 с нуля.
  • Конфигурация и сборка Python из исходников.
  • Переход на сервер PostgreSQL для продолжения установки.

Установка PostgreSQL

23:44
  • Установка PostgreSQL 12 на Ubuntu 10.
  • Добавление репозиториев и обновление.
  • Создание пользователя и базы данных.

Настройка базы данных

26:12
  • Настройка сервера для внешнего подключения.
  • Изменение параметров в файле конфигурации.
  • Проверка подключения к базе данных.

Настройка Python-сервера

28:34
  • Установка Python и PostgreSQL на Python-сервер.
  • Настройка подключения к базе данных с Python-сервера.
  • Проверка работы соединения.

Установка и настройка Django

30:44
  • Сборка и обновление Python.
  • Клонирование и настройка Django-приложения.
  • Настройка параметров доступа к базе данных.

Настройка прокси-сервера

34:45
  • Настройка прокси-сервера на фронт-сервере.
  • Добавление IP-адреса в файл конфигурации.
  • Проверка работы прокси-сервера.

Завершение настройки

37:48
  • Добавление IP-адреса в файл конфигурации на Python-сервере.
  • Перезапуск Python-сервера для применения изменений.
  • Проверка работы Django на всех серверах.

Добавление нового сервера

39:17
  • Создание снапшота с диска пост-диско-апплик-сервер.
  • Создание нового сервера из снапшота.
  • Настройка параметров нового сервера.

Настройка нового сервера

40:17
  • Настройка IP-адреса и пароля для нового сервера.
  • Подключение нового сервера к фронтенд-серверу.
  • Проверка сохранения всех конфигураций.

Настройка Nginx

42:01
  • Создание upstream-сервера для балансировки нагрузки.
  • Настройка прокси-паза для балансировки.
  • Проверка работы балансировки нагрузки.

Гибкость архитектуры

44:27
  • Возможность создания новых серверов для тестирования.
  • Гибкая настройка трафика между серверами.
  • Возможность быстрого переключения между серверами.

Заключение

46:37
  • Подведение итогов и благодарность за просмотр.
  • Призыв к подписке и нажатию на колокольчик.
  • Прощание и анонс следующих выпусков.