[PurpleSchool] Microservices - паттерны и практика построения микросервисов (Антон Ларичев)
Полный курс по микросервисной архитектуре и построению асинхронных систем на примере Node.js, Nest.js, RabbitMQ и Nx
Всё больше компаний обращает своё внимание на микросервисную архитектуру, так как она решает множество проблем монолитных приложений: непростое горизонтальное масштабирование, устаревающий стек, высокая связанность и запутанность кода, а так же медленные процессы сборки, тестирования и выкладки. За счёт атомарности, микросервисная архитектура призвана решить все эти проблемы, а так же повысить отказоустойчивость и упростить поддержку. Но для всего есть и обратная сторона. Микросервисная архитектура требует совершенно другого подхода в проектировании и реализации. В курсы мы как раз посмотрим на все особенность построения микросервисной архитектуры. Мы разберём паттерны взаимодействия, декомпозиции, реализации команд и запросов, модели доменных событий и множество подводных камней, которые вы встретите при внедрении микросервисов. Курс был составлен исходя из моего реального опыта внедрения микросервисов в разных компаниях и тех трудностей, с которыми мне пришлось столкнуться. Несмотря на то, что в курсе мы будем писать код на TypeScript под Node.js, на фреймворке NestJS, он будет полезен и тем, кто пишет на других языках так как содержит много полезного теоретического материала.
Вы научитесь
- Декомпозировать проект на сервисы
- Описывать архитектуру приложения
- Работать с монорепозиторием NX
- Реализовывать коммуникацию между микросервисами
- Создавать и обрабатывать доменные события
- Работать с RabbitMQ
- Писать микросервисы на NestJS
- Паттерну CQRS
- Реализовать бизнес логику в сервисе
- Асинхронной архитектуре
- Обеспечивать консистентность данных
- Реализовать паттерн Сага
- Тестировать микросервисовы
- Основным особенностям выкладки и эксплаутации
Минимальные требования для прохождения курса: Чтобы получить максимум, рекомендуется знание NodeJS. Для других языков полезным будет только часть курса.;
- Введение
- Когда нужны микросервисы?
- Как устроен курс?
- Обзор проекта
- Обзор курсов
- Настройка окружения
- Подготовка окружения
- Установка NodeJS
- Настройки VSCode
- Нотация описания архитектуры
- Вводное видео
- Разбор компонент
- Использование Figma
- Пример описания
- Переход к микросервисам
- Вводное видео
- Монолит VS Микросервисы
- Вопросы масштабирования
- Декомпозиция функционала
- Алгоритм декомпозиции
- Упражнение - Схема после декомпозиции
- Тест - Переход к микросервисам
- Монорепозитории
- Вводное видео
- Монорепозиторий или нет
- Обзор NestJS
- Код - Настраиваем nx monorepo
- Код - Создаём модели
- Код - Реализуем авторизацию
- Код - Запускаем проект
- Тест - Монорепозитории
- Обмен сообщениями
- Вводное видео
- Методы обмена
- Простая коммуникация
- Коммуникация через брокера
- Минимизация синхронности
- Упражнение - Доработка схемы взаимодействия
- Тест - Обмен сообщениями
- RabbitMQ
- Вводное видео
- Устанавливаем RabbitMQ
- Устройство RabbitMQ
- Типы exchange
- Администрирование RabbitMQ
- Код - Простой обмен сообщении
- Код - Реализация запрос / ответ
- Тест - RabbitMQ
- Реализация взаимодействия
- Вводное видео
- Код - Добавление библиотеки контрактов
- Код - Разбор nestjs-rmq
- Код - Подключения rabbitmq к проекту
- Код - Валидация запросов
- Реализация API
- Вводное видео
- Стратегии реализации API
- Паттерны получения данных
- Код - Авторизация на API
- Код - Взаимодействие с account
- Тест - Реализация API
- Реализация бизнес логики
- Вводное видео
- Бизнес логика и события
- Доработка архитектуры Accounts
- Код - Структурируем сервис Accounts
- Упражнение - Реализуем Commands
- Тест - Реализация бизнес логики
- Консистентность данных
- Вводное видео
- Саги - консистентность данных
- Паттерн State
- Код - Подготовка саги
- Код - Состояния саги
- Упражнение - Доработка состояний
- Код - Реализация Commands
- Код - Доменные события
- Тест - Консистентность данных
- Тестирование микросервисов
- Вводное видео
- Виды тестирования
- Код - Тесты авторизации
- Код - Тесты для Саги
- Упражнение - Проверка статуса платежа
- Тест - Тестирование микросервисов
- Выкладка и эксплуатация
- Базы данных
- Периодические задачи
- Логирование и метрики
- Особенности выкладки
- С чего начать переход
- Тест - Выкладка и эксплуатация
- Заключение
- Куда двигаться дальше?