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

Встречайте: “Go: разработка приложений в микросервисной архитектуре с нуля”

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

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

Электронный архив на сайте издательства содержит дополнительные материалы к книге.

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

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

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

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

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

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

Книгу “Go: разработка приложений в микросервисной архитектуре с нуля” можно купить в нашем интенет-магазине.

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

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

Обзор Golang………………………………………………………………………………………………………………………………… 7

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

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

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

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

Редактор кода…………………………………………………………………………………………………………………….. 13

Go…………………………………………………………………………………………………………………………………………. 14

GVM…………………………………………………………………………………………………………………………………….. 17

Установка Protobuf…………………………………………………………………………………………………………….. 18

Git…………………………………………………………………………………………………………………………………………. 19

Codestyle……………………………………………………………………………………………………………………………… 21

Docker и Docker-Compose………………………………………………………………………………………………….. 22

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

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

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

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

Логирование……………………………………………………………………………………………………………………….. 36

ORM…………………………………………………………………………………………………………………………………….. 40

Swagger………………………………………………………………………………………………………………………………… 43

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

gRPC………………………………………………………………………………………………………………………………………….. 116

RabbitMQ………………………………………………………………………………………………………………………………….. 120

Apache Kafka……………………………………………………………………………………………………………………………. 123

Redis………………………………………………………………………………………………………………………………………….. 125

Разработка сервиса Gateway………………………………………………………………………………………………….. 126

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

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

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

Частная форма третьей нормальной формы: нормальная форма Бойса — Кодда (НФБК)          157

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

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

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

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

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

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

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

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

ACID…………………………………………………………………………………………………………………………. 166

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

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

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

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

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

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

Saga……………………………………………………………………………………………………………………………………. 229

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

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

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

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

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

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

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

Приложение. Описание файлового архива…………………………………………… 313

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

Добавить комментарий