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

Вышла книга “Проектирование архитектуры API: Как правильно проектировать, развивать и эксплуатировать API”

Проектирование архитектуры API: Как правильно проектировать, развивать и эксплуатировать API

Фундаментальная книга о разработке и реализации API (программных интерфейсов приложений). Разобраны базовые вопросы обмена информацией в микросервисной архитектуре, обработка запросов на сайтах и в веб-приложениях (парадигма REST). Показано, как поступательно развивать имеющиеся API, не переписывая их, а также как создать API любой сложности с нуля с учётом возможностей и ограничений конкретной системы. Книга поможет реализовать на предприятии архитектуру сервисной сети и подготовить ресурсы компании к миграции в облако.

Для архитекторов программного обеспечения

Сегодня такое внимание уделяется контейнерам и микросервисам, что зачастую забываются фундаментальные вопросы, касающиеся базовой коммуникации сервисов. Данная книга заполняет именно этот пробел и подробно рассказывает, как правильно структурировать и развивать ваши API.
Сэм Ньюмен, автор книги «От монолита к микросервисам»

Книга отлично написана, полна советов, подсказок и практических примеров
Стефания Чаплин, GitLab&DevStefOps

Как правильно проектировать, развивать и эксплуатировать API

В этой прикладной книге изложены стратегии создания REST API, рассказано, как на уровне шлюзов API сочетать самые разные функции, компонуя их в виде микросервисов. Авторы книги описывают, как небольшая корректировка инфраструктуры помогает перевести весь сайт или ресурс в облако и заново связать внутренние сервисы при помощи таких инновационных технологий как сервисная сеть.

• Изучите основы работы с API и архитектурные паттерны, позволяющие собрать API и платформу с нуля
• На практических примерах разберите, как проектировать, собирать и тестировать системы на основе API
• Развёртывайте, используйте, конфигурируйте ключевые компоненты API
• Пользуйтесь шлюзами API и сервисными сетями там, где они нужны
• Внедрите в компании ключевые практики обеспечения безопасности и научитесь находить в архитектуре API наиболее распространённые уязвимости
• Защитите данные и API при помощи моделирования угроз, задействовав такие технологии, как OAuth2 и TLS
• Научитесь развивать существующие системы, подготавливая их на уровне API к миграции в облако

Большинству организаций, имеющих сайт или сервис в Интернете, приходится осваивать работу с API – программными интерфейсами приложений. API – это дверь, через которую пользователь находит путь к работе с сервисами и приложениями компании.

Проектирование, выстраивание этих программных компонентов, а также управление ими касается всей организации, от разработчиков и администраторов до совета директоров и владельцев продукта. Но по-настоящему серьёзный вызов для разработчиков и архитекторов решений – это необходимость собирать новый API с нуля.

Книгу “Проектирование архитектуры API: Как правильно проектировать, развивать и эксплуатировать API” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Вступительное слово………………………………………………………………………………. 15

Предисловие…………………………………………………………………………………………… 17

Для чего мы написали эту книгу?…………………………………………………………………………………………….. 17

Почему стоит прочитать эту книгу?………………………………………………………………………………………… 17

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

Разработчик…………………………………………………………………………………………………………………….. 18

Случайный архитектор………………………………………………………………………………………………….. 18

Архитектор решений, корпоративный архитектор……………………………………………………… 19

Чему вы научитесь?…………………………………………………………………………………………………………………… 19

О чем не расскажет эта книга?…………………………………………………………………………………………………. 20

Условные обозначения……………………………………………………………………………………………………………… 20

Использование примеров кода…………………………………………………………………………………………………. 21

Платформа онлайн-обучения O’Reilly……………………………………………………………………………………… 22

Как с нами связаться?………………………………………………………………………………………………………………… 22

Благодарности…………………………………………………………………………………………………………………………… 22

Благодарности Джеймса Гофа……………………………………………………………………………………… 23

Благодарности Дэниэла Брайанта……………………………………………………………………………….. 23

Благодарности Мэтью Оберна……………………………………………………………………………………… 23

Введение………………………………………………………………………………………………… 25

Путешествие по архитектуре……………………………………………………………………………………………………. 25

Что же такое API?………………………………………………………………………………………………………………………. 26

Практический пример конференц-системы: запуск………………………………………………………………… 27

Типы API в практическом примере конференции………………………………………………………… 29

Причины изменения конференц-системы……………………………………………………………………… 29

От многоуровневой архитектуры к моделированию API……………………………………………. 30

Практический пример: эволюционный этап………………………………………………………………… 30

Трафик север-юг……………………………………………………………………………………………………… 31

Трафик восток-запад……………………………………………………………………………………………… 32

API-инфраструктура и шаблоны трафика……………………………………………………………………. 32

Дорожная карта для практического примера конференции………………………………………. 32

Использование диаграмм C4…………………………………………………………………………………………………….. 33

Диаграмма контекста C4……………………………………………………………………………………………….. 33

Диаграмма контейнеров C4…………………………………………………………………………………………… 34

Диаграмма компонентов C4………………………………………………………………………………………….. 34

Использование записей архитектурных решений………………………………………………………………….. 34

ADR-запись эволюции участников……………………………………………………………………………….. 35

Осваиваем API: руководства ADR………………………………………………………………………………… 36

Заключение………………………………………………………………………………………………………………………………… 37

Часть I. Проектирование, создание и тестирование API… 39

Глава 1. Проектирование, создание и спецификация API………………………. 41

Практический пример: проектирование API Участник………………………………………………………….. 41

Знакомство с REST…………………………………………………………………………………………………………………….. 42

Знакомство с REST и HTTP на примере……………………………………………………………………….. 42

Модель зрелости Ричардсона……………………………………………………………………………………….. 43

Введение в API удаленного вызова процедур (RPC)………………………………………………………………. 44

Краткое упоминание о языке GraphQL……………………………………………………………………………………. 45

Стандарты и структура REST API…………………………………………………………………………………………… 47

Коллекции и пагинация………………………………………………………………………………………………….. 48

Фильтрация коллекций…………………………………………………………………………………………………… 49

Обработка ошибок…………………………………………………………………………………………………………. 49

Руководство ADR: выбор стандарта API……………………………………………………………………… 50

Определение REST API с помощью OpenAPI………………………………………………………………………….. 51

Практическое применение спецификаций OpenAPI……………………………………………………………….. 51

Генерация кода……………………………………………………………………………………………………………….. 52

Валидация OpenAPI……………………………………………………………………………………………………….. 52

Примеры и создание имитаций……………………………………………………………………………………… 53

Обнаружение изменений………………………………………………………………………………………………… 54

Версионирование API……………………………………………………………………………………………………………….. 54

Семантическое версионирование…………………………………………………………………………………. 55

Спецификация и версионирование OpenAPI………………………………………………………………… 55

Реализация RPC с помощью gRPC……………………………………………………………………………………………. 57

Моделирование обмена данными и выбор формата API………………………………………………………. 59

Сервисы с высоким уровнем трафика…………………………………………………………………………… 59

Большие полезные нагрузки при обмене данными……………………………………………………… 59

Преимущества производительности HTTP/2……………………………………………………………….. 60

Старые форматы…………………………………………………………………………………………………………….. 60

Рекомендация: моделирование обменов………………………………………………………………………………….. 61

Различные спецификации………………………………………………………………………………………………………….. 61

Существует ли «золотая спецификация»?……………………………………………………………………. 61

Проблемы комбинированных спецификаций………………………………………………………………. 63

Заключение………………………………………………………………………………………………………………………………… 63

Глава 2. Тестирование API…………………………………………………………………….. 65

Сценарий конференц-системы для этой главы……………………………………………………………………….. 66

Стратегии тестирования……………………………………………………………………………………………………………. 66

Тестовый квадрант…………………………………………………………………………………………………………. 67

Тестовая пирамида…………………………………………………………………………………………………………. 69

Руководство ADR по стратегиям тестирования…………………………………………………………… 71

Контрактное тестирование……………………………………………………………………………………………………….. 72

Почему часто предпочтительнее проводить контрактное тестирование?……………….. 72

Порядок реализации контракта…………………………………………………………………………………….. 73

Контракты производителя…………………………………………………………………………………….. 75

Контракты, ориентированные на потребителя…………………………………………………… 76

Наш пример: использование CDC………………………………………………………………………… 76

Обзор методологии контрактов…………………………………………………………………………….. 76

Фреймворки для контрактного тестирования……………………………………………………… 77

Хранение и публикация контрактов API……………………………………………………………… 77

Руководство ADR: контрактное тестирование…………………………………………………………….. 78

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

Контрактное тестирование в сравнении с тестированием компонентов…………………… 80

Практический пример: тестирование компонентов для проверки поведения…………… 80

Интеграционное тестирование API………………………………………………………………………………………….. 82

Использование серверов-заглушек: почему и как?……………………………………………………… 82

Руководство ADR: интеграционное тестирование………………………………………………………. 84

Контейнеризация тестовых компонентов: Testcontainers…………………………………………… 85

Практический пример: применение Testcontainers для верификации интеграций……. 85

Сквозное тестирование……………………………………………………………………………………………………………… 87

Автоматизация сквозной валидации…………………………………………………………………………….. 87

Типы сквозных тестов…………………………………………………………………………………………………….. 88

Руководство ADR: сквозное тестирование…………………………………………………………………… 89

Заключение………………………………………………………………………………………………………………………………… 90

Часть II. Управление трафиком API………………………………………….. 91

Глава 3. API-шлюзы: управление входящим трафиком………………………….. 93

Является ли API-шлюз единственным решением?………………………………………………………………….. 93

Рекомендация: прокси, балансировщик нагрузки или API-шлюз………………………………………….. 94

Практический пример: открытие доступа к сервису Участник для потребителей……………… 95

Что такое API-шлюз?…………………………………………………………………………………………………………………. 96

Какие функциональные возможности предоставляет API-шлюз?………………………………………… 96

Где выполняется развертывание API-шлюза?………………………………………………………………………… 97

Как API-шлюз интегрируется с другими технологиями на периферии?……………………………….. 98

Зачем нужен API-шлюз?……………………………………………………………………………………………………………. 99

Снижение связанности: адаптер/фасад между фронтендами и бэкендами……………. 100

Упрощение использования: агрегирование/преобразование бэкенд-сервисов……… 101

Защита API от чрезмерного использования и злоупотреблений: обнаружение и устранение угроз     102

Понимание того, как используются API: наблюдаемость………………………………………… 104

Управление API как продуктами: менеджмент жизненного цикла API…………………… 104

Монетизация API: управление учетными записями, биллинг и оплата………………….. 106

Современная история API-шлюзов………………………………………………………………………………………… 106

1990-е годы и далее: аппаратные балансировщики нагрузки…………………………………. 107

Начало 2000-х годов и далее: программные балансировщики нагрузки……………….. 108

Середина 2000-х: контроллеры доставки приложений (ADC)…………………………………. 109

Начало 2010-х: API-шлюзы первого поколения……………………………………………………….. 109

2015 год и далее: API-шлюзы второго поколения…………………………………………………….. 111

Текущая таксономия API-шлюзов………………………………………………………………………………………….. 112

Традиционные корпоративные шлюзы………………………………………………………………………. 112

Микросервисы/микрошлюзы………………………………………………………………………………………. 113

Шлюзы сервисных сетей……………………………………………………………………………………………… 113

Сравнение типов API-шлюзов……………………………………………………………………………………… 113

Практический пример: развитие конференц-системы с помощью API-шлюза…………………… 115

Установка Ambassador Edge Stack в Kubernetes………………………………………………………… 116

Настройка сопоставления URL-путей с бэкенд-сервисами……………………………………… 116

Настройка сопоставлений с использованием маршрутизации на основе хостов….. 117

Развертывание API-шлюзов: понимание и управление отказами……………………………………….. 118

API-шлюз как единая точка отказа…………………………………………………………………………….. 118

Обнаружение и принадлежность проблем…………………………………………………………………. 119

Разрешение инцидентов и проблем…………………………………………………………………………….. 119

Снижение рисков………………………………………………………………………………………………………….. 120

Общие ошибки при внедрении API-шлюзов………………………………………………………………………….. 121

Loopback API-шлюза……………………………………………………………………………………………………. 121

Шлюз API в качестве корпоративной сервисной шины (ESB,
Enterprise Service Bus)…………………………………………………………………………………………………… 121

Черепахи (API-шлюзы) — и нет им конца………………………………………………………………….. 122

Выбор API-шлюза……………………………………………………………………………………………………………………. 122

Определение требований…………………………………………………………………………………………….. 122

Создание или покупка?………………………………………………………………………………………………… 123

Руководство ADR: выбор API-шлюза…………………………………………………………………………. 123

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

Глава 4. Сервисные сети: управление трафиком между сервисами………. 127

Сервисная сеть — это единственное решение?…………………………………………………………………….. 127

Рекомендация: стоит ли внедрять технологию сервисной сети?…………………………………………. 128

Практический пример: извлечение функциональности сессий в сервис…………………………….. 128

Что такое сервисная сеть?………………………………………………………………………………………………………. 130

Какие функциональные возможности предоставляет сервисная сеть?………………………………. 132

Где развертывается сервисная сеть?……………………………………………………………………………………… 133

Как сервисная сеть интегрируется с другими сетевыми технологиями?……………………………. 134

Зачем нужна сервисная сеть?…………………………………………………………………………………………………. 135

Тонкий контроль маршрутизации, надежности и управления трафиком……………….. 136

Прозрачная маршрутизация и нормализация имен сервисов………………………….. 136

Надежность…………………………………………………………………………………………………………… 137

Продвинутая маршрутизация трафика: придание формы, контроль, разделение и зеркалирование           138

Придание формы трафику…………………………………………………………………………… 138

Контроль трафика……………………………………………………………………………………….. 139

Обеспечение прозрачной наблюдаемости…………………………………………………………………. 139

Обеспечение безопасности: транспортная безопасность, аутентификация и авторизация      140

Поддержка кросс-функционального взаимодействия на разных языках………………… 140

Разделение управления входящим и межсервисным трафиком……………………………….. 141

Эволюция сервисных сетей…………………………………………………………………………………………………….. 142

Ранняя история и мотивация……………………………………………………………………………………….. 143

Шаблоны реализации………………………………………………………………………………………………….. 145

Библиотеки……………………………………………………………………………………………………………. 145

Sidecar……………………………………………………………………………………………………………………. 146

Библиотеки gRPC без прокси………………………………………………………………………………. 148

Без sidecar: реализации ядра операционной системы (eBPF)…………………………… 150

Таксономия сервисных сетей………………………………………………………………………………………………….. 151

Практический пример: использование сервисной сети для маршрутизации, наблюдаемости и безопасности              152

Маршрутизация с помощью Istio………………………………………………………………………………… 152

Наблюдение за трафиком с помощью Linkerd…………………………………………………………… 154

Сегментация сети с помощью Consul………………………………………………………………………….. 156

Развертывание сервисной сети: понимание и управление отказами………………………………….. 158

Сервисная сеть как единая точка отказа……………………………………………………………………. 159

Общие проблемы внедрения сервисной сети………………………………………………………………………… 159

Сервисная сеть в качестве ESB……………………………………………………………………………………. 159

Сервисная сеть в качестве шлюза……………………………………………………………………………….. 159

Слишком много сетевых уровней……………………………………………………………………………….. 160

Выбор сервисной сети…………………………………………………………………………………………………………….. 160

Определение требований…………………………………………………………………………………………….. 160

Создание или покупка?………………………………………………………………………………………………… 160

Руководство ADR: выбор сервисной сети………………………………………………………………….. 161

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

Часть III. Эксплуатация и безопасность API……………………… 165

Глава 5. Развертывание и релизы API………………………………………………….. 167

Отделение развертывания от релиза……………………………………………………………………………………… 167

Практический пример: установка флагов функций…………………………………………………… 168

Управление трафиком………………………………………………………………………………………………….. 170

Практический пример: моделирование релизов в конференц-системе……………………………….. 171

Жизненный цикл API……………………………………………………………………………………………………. 171

Сопоставление стратегий релизов с жизненным циклом………………………………………….. 172

Руководство ADR: отделение релиза от развертывания с помощью
управления трафиком и флагов функций……………………………………………………………………. 173

Стратегии релизов…………………………………………………………………………………………………………………… 173

Канареечный релиз………………………………………………………………………………………………………. 174

Зеркалирование трафика…………………………………………………………………………………………….. 176

Сине-зеленое развертывание………………………………………………………………………………………. 177

Практический пример: развертывание с помощью Argo Rollouts……………………………………….. 178

Мониторинг успешного выполнения и выявление отказов………………………………………………….. 181

Три столпа наблюдаемости………………………………………………………………………………………… 181

Важные метрики для API……………………………………………………………………………………………… 183

Считывание сигналов…………………………………………………………………………………………………… 184

Прикладные решения для эффективных релизов программного обеспечения…………………… 184

Кеширование ответов…………………………………………………………………………………………………… 185

Распространение заголовков на уровне приложений……………………………………………….. 185

Ведение журнала для помощи в отладке…………………………………………………………………… 185

Рассмотрение субъективной платформы……………………………………………………………………. 186

Руководство ADR: субъективные платформы……………………………………………………………. 186

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

Глава 6. Операционная безопасность: моделирование угроз для API…… 189

Практический пример: применение OWASP к API участников……………………………………………. 189

Риск при отсутствии защиты внешних API……………………………………………………………………………. 191

Моделирование угроз 101………………………………………………………………………………………………………. 192

Мыслите как злоумышленник………………………………………………………………………………………………… 193

Как построить модель угрозы?………………………………………………………………………………………………. 194

Этап 1: определение целей………………………………………………………………………………………….. 195

Этап 2: сбор нужной информации………………………………………………………………………………. 195

Этап 3: декомпозиция системы……………………………………………………………………………………. 195

Этап 4: выявление угроз и включение их в модель STRIDE…………………………………….. 196

Spoofing (Спуфинг)……………………………………………………………………………………………….. 199

Tampering (Подмена)……………………………………………………………………………………………. 199

Внедрение полезной нагрузки……………………………………………………………………. 199

Массовое переназначение………………………………………………………………………….. 200

Repudiation (Отрицание)……………………………………………………………………………………… 201

Information disclosure (Разглашение сведений)………………………………………………….. 202

Чрезмерное раскрытие данных………………………………………………………………….. 202

Некорректное управление активами…………………………………………………………. 203

Denial of Service (Отказ в обслуживании)…………………………………………………………… 204

Ограничение количества запросов и сброс нагрузки………………………………. 204

Elevation of privilege (Расширение полномочий)……………………………………………….. 206

Неправильная конфигурация безопасности………………………………………………………. 206

Терминирование TLS-соединений……………………………………………………………… 207

Совместное использование ресурсов разными источниками………………….. 207

Усиление директив безопасности………………………………………………………………. 208

Этап 5: Оценка рисков угроз……………………………………………………………………………………….. 208

Этап 6: Валидация……………………………………………………………………………………………………….. 210

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

Глава 7. Аутентификация и авторизация API………………………………………. 213

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

Аутентификация конечных пользователей на основе токенов………………………………… 215

Аутентификация между системами…………………………………………………………………………….. 216

Почему не следует смешивать ключи и пользователей?………………………………………….. 216

OAuth2………………………………………………………………………………………………………………………………………. 217

Роль сервера авторизации при взаимодействии с API………………………………………………. 218

Веб-токены JSON (JWT)……………………………………………………………………………………………….. 218

Кодирование и верификация веб-токенов JSON………………………………………………… 220

Терминология и механизмы предоставления доступа OAuth2………………………………… 221

Руководство ADR: стоит ли рассматривать возможность
использования OAuth2?……………………………………………………………………………………………….. 222

Authorization Code Grant: предоставление доступа по коду авторизации……………… 223

Authorization Code Grant (+ PKCE)……………………………………………………………………… 225

Практический пример: доступ к API Участник с помощью Authorization Code Grant        226

Refresh-токены………………………………………………………………………………………………………………. 227

Client Credentials Grant: предоставление доступа к учетным данным клиента………. 227

Практический пример: доступ к API Участник из CFP-системы
при помощи Client Credentials Grant……………………………………………………………………. 228

Дополнительные варианты предоставления доступа OAuth2…………………………………. 228

Руководство ADR: какой из грантов OAuth2 стоит поддерживать………………………….. 229

Области видимости OAuth2…………………………………………………………………………………………. 229

Практический пример: применение областей видимости OAuth2
к API Участник……………………………………………………………………………………………………… 230

Обеспечение выполнения авторизации………………………………………………………………………. 231

Вкратце об OIDC……………………………………………………………………………………………………………………… 232

Протокол SAML 2.0…………………………………………………………………………………………………………………. 234

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

Часть IV. Эволюционная архитектура
с применением API………………………………………………………………………. 235

Глава 8. Перепроектирование приложений на архитектуру,
управляемую API…………………………………………………………………………………. 237

Зачем использовать API для развития системы?………………………………………………………………….. 237

Создание полезных абстракций: повышение связности…………………………………………… 238

Уточнение границ домена: продвижение слабой связанности………………………………… 239

Практический пример: установление границ домена сервиса Участник…………………………… 240

Варианты архитектуры конечного состояния………………………………………………………………………. 241

Монолит………………………………………………………………………………………………………………………… 241

Сервис-ориентированная архитектура (SOA)……………………………………………………………. 241

Микросервисы………………………………………………………………………………………………………………. 242

Функции…………………………………………………………………………………………………………………………. 243

Управление эволюционным процессом…………………………………………………………………………………. 243

Определите свои цели………………………………………………………………………………………………….. 243

Использование функций приспособленности……………………………………………………………. 244

Декомпозиция системы на модули……………………………………………………………………………… 245

Создание API как «швов» для расширения………………………………………………………………… 247

Определение точек приложения усилий в системе……………………………………………………. 248

Непрерывная поставка и верификация………………………………………………………………………. 249

Архитектурные паттерны для эволюционирующих систем с API………………………………………. 249

Паттерн «Душитель»……………………………………………………………………………………………………. 249

Паттерны «Фасад» и «Адаптер»………………………………………………………………………………….. 250

Паттерн «Слоеный пирог API»……………………………………………………………………………………. 251

Определение болевых точек и возможностей……………………………………………………………………….. 252

Вопросы модернизации и технического сопровождения…………………………………………. 252

Проблемы с производительностью…………………………………………………………………………….. 253

Разрушение зависимостей: API с сильной связанностью…………………………………………. 253

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

Глава 9. Использование инфраструктуры API для эволюции
в сторону облачных платформ……………………………………………………………… 255

Практический пример: перенос сервиса Участник в облако……………………………………………….. 255

Выбор стратегии миграции в облако…………………………………………………………………………………….. 256

Сохранение или пересмотр…………………………………………………………………………………………. 257

Перенос………………………………………………………………………………………………………………………….. 258

Смена платформы………………………………………………………………………………………………………… 258

Новая покупка………………………………………………………………………………………………………………. 259

Рефакторинг/смена архитектуры………………………………………………………………………………… 259

Отключение…………………………………………………………………………………………………………………… 260

Практический пример: смена платформы сервиса Участник для переноса его в облако… 260

Роль API-менеджмента……………………………………………………………………………………………………………. 260

Север-юг и восток-запад: размывание границ управления трафиком………………………………… 262

Начните с периферии и работайте вглубь…………………………………………………………………. 262

Пересекая границы: маршрутизация по сетям…………………………………………………………… 262

От зональной архитектуры к принципу нулевого доверия………………………………………………….. 263

Попадание в зону………………………………………………………………………………………………………….. 263

Никому не доверять и проверять…………………………………………………………………………………. 265

Роль сервисной сети в архитектурах с нулевым доверием………………………………………. 266

Дополнение сервисной сети сетевыми политиками………………………………………….. 267

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

Глава 10. Подведение итогов……………………………………………………………….. 271

Практический пример: оглянитесь на пройденный путь……………………………………………………… 271

API, Закон Конвея и ваша организация…………………………………………………………………………………. 277

Понимание типов решений……………………………………………………………………………………………………… 278

Подготовка к будущему………………………………………………………………………………………………………….. 278

Асинхронное взаимодействие……………………………………………………………………………………… 278

Протокол HTTP/3…………………………………………………………………………………………………………. 279

Сеть на основе платформы………………………………………………………………………………………….. 279

Что дальше: как продолжать изучать архитектуру API?…………………………………………………….. 279

Постоянное совершенствование базовых знаний……………………………………………………… 280

Следите за новостями в отрасли…………………………………………………………………………………. 280

Радары, квадранты и трендовые отчеты……………………………………………………………………. 281

Изучение лучших практик и примеров использования…………………………………………….. 281

Обучение на практике………………………………………………………………………………………………….. 282

Обучение через преподавание…………………………………………………………………………………….. 282

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

Об авторах……………………………………………………………………………………………. 287

Об изображении на обложке………………………………………………………………… 287

Дэниэл Брайант

Дэниэл Брайант (Daniel Bryant) — глава отдела по взаимодействию с разработчиками в компании Ambassador Labs, Java-чемпион. Эксперт в инструментарии DevOps, облачных и контейнерных платформах, микросервисах.

 

 

Джеймс Гоф

Гоф Джеймс (James Gough) — заслуженный инженер в компании Morgan Stanley, Java-чемпион, соавтор книги «Optimizing Java».

 

 

Мэтью Оберн

Оберн Мэтью (Matthew Auburn) — вице-президент компании Morgan Stanley. Занимался разработкой финансовых систем, мобильных и веб-приложений, обеспечением безопасности API.

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