- PVSM.RU - https://www.pvsm.ru -
Microservice Architecture Design in a NodeJS/NestJS Environment | Online Retail System [1]
Сценарий: Перед вами стоит задача разработать микросервисную архитектуру для системы онлайн-ритейла. Эта система должна управлять различными сервисами, такими как каталог товаров, учетные записи пользователей, заказы и обработка платежей.

Product Catalog Service (Служба «Управление товарами»)
База данных: MongoDB или аналогичная база данных NoSQL для гибкой схемы и быстрого поиска информации о продукте;
Доступный функционал:
Управление продуктами;
Управление категориями продуктов;
Управление складом (Складскими запасами).
User Account Service (Служба учетных записей пользователей)
База данных: Реляционная база данных PostgreSQL или MySQL для хранения таких данных, как профили пользователей, аутентификация и авторизация;
Доступный функционал: Работа с учетными записями пользователей, аутентификацией, авторизацией и данными, связанными с пользователями.
Order Service (Служба «Управление заказами»)
База данных: MongoDB или база данных SQL, в зависимости от сложности данных, связанных с заказами и необходимости обеспечения транзакционной целостности;
Доступный функционал: Управление заказами, создание, обновление и отслеживание статуса заказов.
Payment Processing Service (Служба «Обработка платежей»)
База данных: Может не требовать базы данных, если в основном занимается интеграцией платежных шлюзов. Однако он может хранить журналы транзакций в надежном хранилище, например Elasticsearch;
Доступный функционал: Интегрируется с платежными шлюзами, обрабатывает транзакции, регистрирует информацию о платежах.
RESTful API или GraphQL: Каждый микросервис предоставляет API для взаимодействия. NestJS предоставляет отличные инструменты для создания RESTful API или конечных точек GraphQL, обеспечивая стандартизированное взаимодействие;
Брокер сообщений (опционально): Реализуйте брокер сообщений, например RabbitMQ или Kafka, для асинхронного взаимодействия между сервисами. Это обеспечит свободное взаимодействие и лучшую масштабируемость.
Синхронная связь: Для критических операций, требующих немедленной согласованности (например, размещение заказа), используйте синхронную связь. Микросервисы могут напрямую взаимодействовать через REST или GraphQL для поддержания согласованности данных;
Конечная согласованность: Для некритичных операций (например, обновление данных профиля пользователя) асинхронная связь с брокером сообщений позволяет поддерживать конечную согласованность без блокировки сервисов.
Распределенные транзакции: Используйте двухфазный протокол фиксации или шаблон (паттерн) SAGA для распределенных транзакций, охватывающих несколько микросервисов. Реализуйте компенсирующие транзакции для обработки частичных сбоев и обеспечения согласованности данных между сервисами;
Журнал транзакций/сортировка событий: Ведите журналы транзакций или используйте поиск событий для отслеживания изменений в микросервисах. Это поможет восстановить состояния и устранить несоответствия.
JWT‑токены: Внедрите JWT (JSON Web Tokens) для аутентификации и авторизации между сервисами. NestJS предоставляет надежные механизмы аутентификации;
HTTPS: Обеспечьте безопасное взаимодействие между микросервисами с помощью HTTPS, чтобы предотвратить утечку данных.
Мониторинг и ведение логов: Внедрите системы логирования и мониторинга (например, стек ELK, Prometheus, Grafana) для отслеживания состояния, производительности и ошибок системы;
Контейнеризация и оркестровка: Используйте Docker для контейнеризации и Kubernetes для оркестровки, чтобы обеспечить масштабируемость, отказоустойчивость и простоту развертывания.
В целом, эта архитектура разделяет функционал между службами управления, которые используют соответствующие базы данных в зависимости от потребностей в данных, использует коммуникационные стратегии для обеспечения согласованности, обрабатывает транзакции в распределенных средах, уделяет приоритетное внимание безопасности и обеспечивает надежность системы с помощью мониторинга и контейнеризации.
Изучаю архитектуру веб‑приложений, таких как «Система электронной коммерции».
Данная статья показалась мне интересной и я решил сохранить ее перевод.
В первую очередь для себя, ну и еще, чтобы почитать ваши комментарии)Буду рад вашим комментариям, предложениям и замечаниям) Спасибо.
Автор: Batorskylab
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/arhitektura-po/395703
Ссылки в тексте:
[1] Microservice Architecture Design in a NodeJS/NestJS Environment | Online Retail System: https://morshedulmunna.hashnode.dev/microservice-architecture-design-in-a-nodejsnestjs-environment-online-retail-system
[2] Источник: https://habr.com/ru/articles/841204/?utm_source=habrahabr&utm_medium=rss&utm_campaign=841204
Нажмите здесь для печати.