Обзор архитектуры
В этой статье мы рассмотрим развертывание полноценного веб-приложения с использованием облачной платформы Microsoft Azure. Приложение состоит из трех уровней: фронтенд, бэкенд и база данных.
Основные компоненты:
- Public Load Balancer: балансирует нагрузку между двумя виртуальными машинами (VM), доступными через интернет.
- Azure Virtual Network: сеть, объединяющая все ресурсы приложения.
- Availability Zones: зоны доступности обеспечивают отказоустойчивость путем распределения ресурсов по разным физическим локациям.
- Private Subnets: приватные подсети изолируют каждый уровень приложения от внешнего мира.
- Network Security Groups (NSGs): правила безопасности ограничивают доступ к каждому уровню только разрешенными источниками.
Фронтэнд — Next.js за Nginx
Фронтэнд реализован на Next.js и размещен на двух виртуальных машинах, каждая из которых находится в отдельной зоне доступности. Эти машины доступны через публичный балансировщик нагрузки, который принимает запросы пользователей и распределяет их равномерно между серверами.
Nginx используется как обратный прокси-сервер, обеспечивая дополнительную защиту и оптимизацию производительности.
Бэкэнд — Node.js/Express
Бэкэнд приложение написано на Node.js с использованием фреймворка Express. Оно также распределено по двум виртуальным машинам, находящимся в отдельных зонах доступности. Доступ к этим машинам осуществляется через внутренний балансировщик нагрузки, что обеспечивает изоляцию от прямого доступа извне.
Базовый уровень — MySQL
Для хранения данных используется управляемый сервис базы данных Azure MySQL Flexible Server. Он интегрирован с частной сетью и не имеет публичных IP-адресов, что исключает возможность прямого подключения к базе данных из интернета.
Заключение о безопасности
Такая архитектура позволяет обеспечить высокий уровень защиты данных и приложений, минимизируя риски взлома или несанкционированного доступа.