Опубликовано

Вышла книга “Node.js: разработка приложений в микросервисной архитектуре с нуля”

Node.js: разработка приложений в микросервисной архитектуре с нуля

Базовая книга по построению микросервисной архитектуры с практическими примерами на Node.js. Также рассмотрена работа с оркестратором Kubernetes и контейнерами Docker в среде Docker Compose. Разобраны основные принципы и техники разработки распределенных систем, в частности показано, как написать и развернуть три микросервиса, управлять СУБД, настроить брокер сообщений Kafka, внедрить кэш Redis. Объяснены паттерны проектирования. Особое внимание уделено распределенным транзакциям и разворачиванию микросервисов на удаленном сервере. Показано, как обеспечить расширяемость и отказоустойчивость приложений, как успешно бороться с усложнением клиентских интерфейсов, поддерживая высокую скорость загрузки страниц и приложений и не забывая о том, чтобы сайт оставался красивым и удобным в использовании. Электронный архив на сайте издательства содержит дополнительные материалы к книге.

Для начинающих веб-разработчиков

Микросервисы на JavaScript: осваиваем аккуратную декомпозицию

Современная практика enterprise-разработки и возникающие вызовы связаны, прежде всего, с обеспечением отказоустойчивости и расширяемости приложений. Сложно рассчитывать на реализацию таких качеств без применения микросервисной архитектуры. В книге по порядку рассматривается создание целого приложения с нуля. На материале готового продукта показано, как написать и развернуть три микросервиса, управлять СУБД, настроить брокер сообщений Kafka, внедрить кэш Redis и объединить эти решения в среде Docker-Compose и оркестраторе Kubernetes. Все паттерны, актуальные при проектировании микросервисов для веб-архитектуры, разобраны на практических примерах.

Книга интересна в качестве вводной по микросервисам на Node.js и будет полезна как начинающим разработчикам, пользующимся стеком JavaScript, так и опытным архитекторам, занятым модернизацией архитектуры с применением микросервисов.

Электронный архив с дополнительными материалами, не вошедшими в печатную версиюкнигу, можно скачать по ссылке https://zip.bhv.ru/ 9785977519359.zip, а также со страницы книги на сайте bhv.ru

Вы узнаете, как:

  • разрабатывать микросервисы на Node.js
  • выстраивать синхронное и асинхронное взаимодействие между микросервисами,
  • выполнять распределенные транзакции,
  • организовать взаимодействие между микросервисами,
  • использовать паттерны проектирования,
  • разворачивать микросервисы в облаке,
  • использовать и настраивать Docker, Docker-Compose,
  • настраивать Kubernetes в удаленной среде.

Для кого эта книга?

Основное внимание в ней уделяется именно практическим навыкам написания микросервисов. Она пригодится тем, кто достаточно глубоко владеет знаниями о JavaScript и TypeScript. Упор делается именно на конкретный стек технологий: Node.js, NestJS, PostgreSQL, Kafka, Redis, Docker, Docker-Compose, Kubernetes и некоторые другие. Желательно, чтобы у вас был опыт написания приложений на NestJS, т. к. глубоко в сами технологии мы погружаться не станем. Главный акцент сделан на микросервисах, проблемах, с которыми вы можете столкнуться при их разработке, и путях их решения.

Обзор Node.js
Node.js — это в первую очередь платформа, позволяющая применять язык Java-Script для бэкенда. Веб-разработку в наши дни невозможно представить без Java-Script. Это основной язык и инструмент фронтенд-разработчика. С него начинается TypeScript и всевозможные фреймворки, ускоряющие разработку, — например, такие как ReactJS, Angular, Vue. Однако фронтенд не может жить без бэкенда, и долгое время в роли бэкенда для веб-разработки использовались в основном PHP и Java.
Node.js стоит, как говорится, на двух китах: библиотеке libuv и движке V8 от Google, применяемом в браузере.

Книгу “Node.js: разработка приложений в микросервисной архитектуре с нуля” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Введение………………………………………………………………………………………………….. 7

Для кого эта книга?……………………………………………………………………………………………………………………… 7

Обзор Node.js………………………………………………………………………………………………………………………………… 7

Выбор фреймворка: NestJS или Express.js?……………………………………………………………………………… 10

Сравнение монолитной и микросервисной архитектуры………………………………………………………. 13

Список литературы и источников……………………………………………………………………………………………. 14

Глава 1. Разработка первого микросервиса (User)………………………………….. 15

Настройка локального окружения…………………………………………………………………………………………… 15

Редактор кода и плагины…………………………………………………………………………………………………… 15

Node.js и пакетные менеджеры…………………………………………………………………………………………. 16

NVM…………………………………………………………………………………………………………………………………….. 18

Установка NestJS………………………………………………………………………………………………………………… 19

Git…………………………………………………………………………………………………………………………………………. 21

Codestyle……………………………………………………………………………………………………………………………… 23

Docker и Docker-Compose………………………………………………………………………………………………….. 24

Тестирование API………………………………………………………………………………………………………………. 27

Вывод………………………………………………………………………………………………………………………………….. 29

Создание структуры проекта……………………………………………………………………………………………………. 29

Подключение необходимых библиотек…………………………………………………………………………………… 37

Переменные окружения……………………………………………………………………………………………………… 37

ORM…………………………………………………………………………………………………………………………………….. 39

Swagger………………………………………………………………………………………………………………………………… 45

Библиотеки сlass-transformer и class-validator………………………………………………………………… 47

Настройка ESLint………………………………………………………………………………………………………………………. 48

Проектирование базы данных PostgreSQL………………………………………………………………………………. 52

Что такое «база данных» и какие они бывают?………………………………………………………………. 52

Нормализация данных………………………………………………………………………………………………………. 54

Первая нормальная форма (1НФ)……………………………………………………………………………. 54

Вторая нормальная форма (2НФ)……………………………………………………………………………. 55

Третья нормальная форма (3НФ)…………………………………………………………………………….. 56

Разработка бизнес-логики и маршрутизации для модуля User……………………………………………… 57

Тестирование микросервиса…………………………………………………………………………………………………….. 74

Список литературы и источников……………………………………………………………………………………………. 77

Глава 2. Разработка микросервиса авторизации и аутентификации (Auth) 79

Теоретический обзор способов авторизации и аутентификации………………………………………….. 79

Аутентификация, идентификация и авторизация……………………………………………………………. 79

Аутентификация по паролю……………………………………………………………………………………………… 80

Аутентификация по сертификатам…………………………………………………………………………………… 81

Аутентификация по одноразовым паролям…………………………………………………………………….. 82

Аутентификация по ключам доступа……………………………………………………………………………….. 83

Аутентификация по токенам……………………………………………………………………………………………… 83

Базовые меры предосторожности от возможных уязвимостей……………………………………………… 85

Переполнение буфера………………………………………………………………………………………………………… 86

Состояние гонки…………………………………………………………………………………………………………………. 86

Атаки проверки ввода………………………………………………………………………………………………………… 86

Атаки аутентификации………………………………………………………………………………………………………. 87

Атаки авторизации…………………………………………………………………………………………………………….. 87

Атаки на стороне клиента…………………………………………………………………………………………………. 88

Разработка модуля Auth……………………………………………………………………………………………………………. 88

Список литературы и источников………………………………………………………………………………………….. 101

Глава 3. Способы взаимодействия между микросервисами………………….. 103

HTTP-протокол………………………………………………………………………………………………………………………… 103

Модель OSI……………………………………………………………………………………………………………………….. 103

Физический уровень……………………………………………………………………………………………….. 104

Канальный уровень………………………………………………………………………………………………… 104

Сетевой уровень……………………………………………………………………………………………………… 105

Транспортный уровень…………………………………………………………………………………………… 105

Сеансовый уровень…………………………………………………………………………………………………. 105

Уровень представления………………………………………………………………………………………….. 106

Прикладной уровень………………………………………………………………………………………………. 106

Устройство HTTP-протокола………………………………………………………………………………………….. 106

Структура HTTP-запроса………………………………………………………………………………………. 107

Cтруктура HTTP-ответа…………………………………………………………………………………………. 108

gRPC………………………………………………………………………………………………………………………………………….. 108

RabbitMQ………………………………………………………………………………………………………………………………….. 112

Apache Kafka……………………………………………………………………………………………………………………………. 115

Redis………………………………………………………………………………………………………………………………………….. 117

Разработка интеграции сервисов Auth и Account…………………………………………………………………. 118

Список литературы и источников………………………………………………………………………………………….. 136

Глава 4. Разработка модуля Transaction……………………………………………….. 137

Проектирование базы данных………………………………………………………………………………………………… 137

Нормальная форма Бойса — Кодда (НФБК) — частная форма
третьей нормальной формы…………………………………………………………………………………………….. 137

Четвертая нормальная форма…………………………………………………………………………………………. 139

Пятая нормальная форма………………………………………………………………………………………………… 139

Доменно-ключевая нормальная форма………………………………………………………………………….. 140

Шестая нормальная форма……………………………………………………………………………………………… 140

Понятия миграций и транзакций в контексте базы данных PostgreSQL……………………………… 141

Миграции………………………………………………………………………………………………………………………….. 141

Индексы…………………………………………………………………………………………………………………………….. 144

Транзакции……………………………………………………………………………………………………………………….. 150

ACID…………………………………………………………………………………………………………………………. 151

Параллельные транзакции…………………………………………………………………………………….. 151

Уровни изоляции транзакций в SQL……………………………………………………………………… 152

Разработка модуля Transaction………………………………………………………………………………………………. 153

Интеграция Transaction и Account………………………………………………………………………………………….. 167

Проблема распределенных транзакций………………………………………………………………………………… 183

Двухфазная фиксация………………………………………………………………………………………………………. 184

Saga……………………………………………………………………………………………………………………………………. 185

Реализация паттерна Saga……………………………………………………………………………………… 186

Список литературы и источников………………………………………………………………………………………….. 209

Глава 5. Развертывание микросервисов……………………………………………….. 211

Обертывание микросервисов в docker-контейнеры………………………………………………………………. 225

Масштабирование при помощи оркестратора Kubernetes………………………………………………….. 238

Заключение………………………………………………………………………………………………………………………………. 247

Список литературы и источников………………………………………………………………………………………….. 247

Приложение. Описание электронного архива………………………………………. 249

Предметный указатель…………………………………………………………………………. 251

Попова Юлия Юрьевна, практикующий инженер-программист, занимающейся разработкой коммерческих продуктов более 5 лет.

Summary
Aggregate Rating
3.5 based on 2 votes
Добавить комментарий