[HTML Academy] Онлайн‑курс «Node.js и Nest.js. Микросервисная архитектура» [14 марта — 15 мая 2023]

Bot

Администратор
Команда форума
23 Янв 2020
208,786
3,150
113
Раздел 1
Введение в микросервисы
Знакомимся с микросервисной архитектурой. Узнаем о плюсах и минусах микросервисов. Разберёмся, когда выгодно применять микросервисы, а в каких случаях оставаться на монолите. Обсудим стратегии декомпозиции и разобьём приложение на отдельные сервисы. Обсудим способы взаимодействия между сервисами.
Организационные вопросы.

  • Обзор личных проектов.
  • Схема работы на курсе.
  • Репозиторий демо-проекта.
  • Монорепозитории.
  • Проектирование микросервисов.
  • Стратегия декомпозиции приложения.
[IMG]

Практика
  • Подготовка рабочего окружения.
  • Декомпозиция функциональности приложения.
  • Подготовка диаграммы архитектуры приложения.
  • Подготовка монорепозитория с помощью NX.
Раздел 2
Введение в Nest
Знакомимся с фреймворком Nest. Обсуждаем архитектуру и его особенности. Учимся применять CLI для автоматизации рутинных операций и генерации шаблонного кода. Знакомимся с базовыми абстракциями Nest: модули, контроллеры, сервисы и провайдеры.
  • Знакомство с фреймворком Nest.
  • Когда выгодно применять Nest.
  • Nest CLI.
  • Базовые абстракции Nest.
[IMG]

Практика
  • Модули, контроллеры, провайдеры.
  • Формирование спецификации в OpenAPI.
  • Интеграция Nest CLI с NX.
  • Общие библиотеки в NX.
  • Имплементация REST API в Nest.
Раздел 3
Nest и базы данных. MongoDB
Разбираемся как интегрировать Mongo с Nest. Описываем модели. Настраиваем сервисы и решаем задачу по сохранению пользователей в базе данных. Знакомимся с паттерном «Репозиторий».
  • Docker и микросервисы.
  • Проверка состояния сервисов в контейнерах.
  • Управление конфигурацией приложения.
  • Валидация.
  • Динамические модули.
  • Пользовательские провайдеры.
  • Паттерн «Репозиторий».
[IMG]

Практика
  • Установка MongoDB в Docker.
  • Взаимодействие с MongoDB из Nest.
  • Практика управления конфигурацией приложения.
  • joi, class-validator, class-transform.
Раздел 4
Nest и базы данных. PostgreSQL
Знакомимся с объектно-реляционной системой управления базами данных — PostgreSQL. Осваиваем азы синтаксиса SQL. Проектируем схему базы данных. Знакомимся с PrismaORM для взаимодействия с базой данных.
  • Реляционные базы данных.
  • Введение в PostgreSQL.
  • Когда выгодно применять PostgreSQL.
  • Язык структурированных запросов (SQL).
  • Инструменты для взаимодействия с PostgreSQL (pgAdmin, psql).
  • ORM для Node.js
[IMG]

Практика
  • Установка PostgreSQL в Docker.
  • Подключаем PrismaORM к сервису.
  • Prisma CLI.
  • Миграции в Prisma ORM.
  • Проектируем и генерируем модели.
  • Добавляем связи между таблицами.
  • Имплементация CRUD.
  • Prisma ORM: наполнение базы тестовыми данными.
Раздел 5
Валидация и авторизация
Узнаем как реализовать аутентификацию и авторизацию в приложениях Nest на основе JWT. Учимся валидировать данные от клиента. Знакомимся с новыми абстракциями Nest: пайпы (pipes), guards, interceptors. Продолжаем разбираться с Prisma ORM. Учимся ограничивать выборки, создавать постраничную пагинацию, применять сортировки.
  • Nest и валидация входных данных.
  • Знакомство с абстракциями: pipes, guards, interceptors.
  • JWT и Nest.
  • Ограничение выборки данных.
[IMG]

Практика
  • Аутентификация и авторизация.
  • Паттерны DTO, RDO.
  • Валидация данных от клиента.
  • Пайпы (декораторы, ValidationPipe).
  • Пользовательские пайпы.
  • Prisma ORM. Постраничная пагинация.
  • Prisma ORM. Фильтрация, сортировки.
  • Обработка параметров запроса (query string).
  • Guards, interceptors.
Раздел 6
Взаимодействие между микросервисами. RabbitMQ
Узнаем про разные способы (синхронные и асинхронные) взаимодействия между микросервисами. Обсудим их преимущества и недостатки. Познакомимся с новым инструментом RabbitMQ (брокер сообщений). Научимся взаимодействовать с RabbitMQ из Nest-приложений.
Раздел 7
BFF (Backend For Frontend)
Знакомимся с паттерном BFF (Backend For Frontend). Какие задачи решает паттерн, когда его необходимо применять. Обсуждаем пути к имплементации, подводные камни. Разбираемся как взаимодействовать из Node.js с почтовыми серверами, протоколом SMTP. Реализуем отправку почтовых уведомлений из Nest.

  • Паттерн Backend For Frontend.
  • Слой BFF: какие задачи решает.
  • Инструменты для имплементации паттерна.
  • Несколько BFF?!
[IMG]

Практика
  • Дополнительная практика с RabbitMQ.
  • Разворачиваем в Docker SMTP-сервер для тестирования отправки email.
  • Рассылка email из Nest.
  • BFF.
Раздел 8
Деплой
Узнаем как подготовить и запустить приложение на настоящем сервере. Практикуемся работать с Docker. Продолжаем знакомиться с возможностями Nest: Exception Filters, загрузка файлов (на диск и в базу данных). Обсуждаем потенциальные улучшения для проекта. Задаём вектор дальнейшего развития.
  • Что такое деплой.
  • Подготовка приложения к деплою.
  • Публикация приложения (VDS).
  • Абстракции Nest: Exception Filters, Middleware.
[IMG]

Практика
  • Деплой приложения.
  • Exception Filters на практике.
  • Загрузка файлов.
Раздел 9
Финал
Подведём итоги и обсудим план дальнейшего развития.