Сегодня представляем на Хабре очень интересную книгу — переводное издание «Проектирование архитектуры API» («Mastering API Architecture») издательства O'REILLY. Это руководство по разработке и реализации API (программных интерфейсов приложений). Разобраны базовые вопросы обмена информацией в микросервисной архитектуре, обработка запросов на сайтах и в веб‑приложениях (парадигма REST). Бонусами к статье — промокод «SSPSOFT» на русское издание и ссылка на оригинальный текст книги (бесплатная копия книги в PDF).
Для кого эта книга: разработчикам и инженерам, архитекторам и аналитикам
Авторы выделили три ключевые категории читателей в лице разработчиков, архитекторов решений и, как они выразились, ситуативных архитекторов (это тимлиды или мидлы‑сеньоры, которым поручили поработать над API ввиду занятости или отсутствия в штате выделенного архитектора).
Разработчикам книга пригодится для работы над проектами создания сервис‑ориентированной архитектуры (SOA) и внедрения облачных услуг, в которых предполагается разработка и использование API. Из книги разразрабочики узнают о различных вариантах реализации API (например, с синхронным и асинхронным взаимодействием), а также научатся задавать правильные вопросы архитекторам при совместной работе над проектом.
Архитекторам книга будет полезна при проектировании приложений класса SaaS, поскольку API играют большую роль в успешной интеграции разрабатываемых систем с внешними сервисами. Из книги можно узнать о поддерживаемых технологиях (например, API‑шлюзах, service mesh и т. д.), а также понять, как эксплуатировать и защищать системы на основе API.
Архитекторы решений могут работать над API, если эта технология является ключевой для успеха программной стратегии проекта. Выбор дизайна и реализации API, кросс‑функциональные характеристики — удобство использования, сопровождаемости, масштабируемости и доступности — это типичные точки приложения усилий архитекторов при проектировании API.
От нашего блога также добавим, что книга будет полезна еще таким категориям читателей как инженеры по программному обеспечению и DevOps (software and DevOps engineers) и системным аналитикам.
Системный аналитик, хотя это и нетипичная для него роль, может участвовать в написании API в тех случаях, если хорошо разбирается в технических аспектах и тесно сотрудничает с командой разработчиков. Аналитику чаще поручают определение требований к функциям API, необходимым для удовлетворения бизнес‑требований. Также задача аналитика может включать документирование спецификаций API, — описание энд пойнтов, методов, параметров и ожидаемых ответов системы. Но, в целом, привлекать ли аналитика к проектированию API — зависит от культуры разработки в конкретной компании.
Что касается инженеров‑программистов, они по большей части могут участвовать в тестировании API и также в его документировании.
Немного об авторах и бонусах от нашего блога
Все три автора обладают значительным опытом и знаниями в области разработки, проектирования и внедрения API‑архитектур. Их совместные усилия в написании книги «Mastering API Architecture» были направлены на то, чтобы поделиться своими обширными знаниями и практическими советами с сообществом разработчиков и архитекторов.
Джеймс Гоу (James Gough) является высокопоставленным инженером (Distinguished Engineer) в компании Morgan Stanley. Он является экспертом в области Java и является автором книги «Optimizing Java». Его глубокие знания и опыт в сфере Java‑технологий и финансовых систем делают его ценным автором и консультантом в области разработки и оптимизации программного обеспечения.
Дэниел Брайант (Daniel Bryant) занимает должность руководителя отдела по связям с разработчиками (Head of Developer Relations) в компании Ambassador Labs. Он также признан Java Champion, что свидетельствует о его выдающемся вкладе в сообщество Java‑разработчиков. Его область специализации включает инструменты DevOps, облачные и контейнерные платформы, а также микросервисную архитектуру. Дэниел активно участвует в продвижении лучших практик разработки и внедрения современных технологий.
Мэттью Оберн (Matthew Auburn) является вице‑президентом (VP) в компании Morgan Stanley. Его профессиональная карьера охватывает работу над финансовыми системами, мобильными и веб‑приложениями, а также безопасностью API. Его достижения в этих областях помогают обеспечить надежность и безопасность систем, которые он разрабатывает и поддерживает.
Чтобы купить русское издание книги «Проектирование архитектуры API» и любую другую компьютерную литературу со скидкой 25% на сайте издательства БХВ, введите промокод SSPSOFT как подарок от нашего блога для читателей Хабра. Пока доступна бумажная версия книги, электронную версию на русском языке можно будет приобрести, скорее всего, осенью 2024.
А если вы захотите прочесть «Mastering API Architecture» в оригинале в электронном виде и совершенно бесплатно, то такая возможность тоже есть. Как часто бывает в англоязычной ИТ‑литературе, не обошлось без спонсора, кто купил генеральную лицензию и выложил книгу в открытый доступ. Делимся ссылкой на этот подарок.
Не надо гуглить — вот очень краткие ревью по каждой главе
Чтобы вам не гуглить и оценивать содержание книги, мы включили в этот пост «по-главное» описание содержания книги. Кстати, с оглавлением русского издания книги можно ознакомиться в этом файле пробного фрагмента на сайте издательства,
Вот список глав и далее ревью на каждую из них:
Дизайн, построение и спецификация API
Тестирование API
API-шлюзы: управление входящим трафиком
Service Mesh: управление трафиком между сервисами
Развертывание и релизы API
Операционная безопасность: моделирование угроз для API
Аутентификация и авторизация API
Редизайн приложений для архитектур, управляемых API
Использование инфраструктуры API для эволюции к облачным платформам
Подведение итогов
Глава 1. Дизайн, построение и спецификация API
Эта глава закладывает фундамент для понимания API. Она начинается с введения в REST, RPC и GraphQL, объясняя их основные концепции и различия. Затем рассматриваются стандарты REST API, включая структуру, коллекции, пагинацию и обработку ошибок. Особое внимание уделяется спецификациям OpenAPI, их практическому применению и версионированию API. Глава также затрагивает реализацию RPC с помощью gRPC и выбор формата API для различных сценариев. Эта информация крайне важна для разработчиков, стремящихся создавать хорошо структурированные и эффективные API.
Глава 2. Тестирование API
Глава погружает в мир тестирования API, представляя различные стратегии и подходы. Она начинается с обзора тестового квадранта и пирамиды тестирования, затем переходит к подробному рассмотрению контрактного тестирования, компонентного тестирования API и интеграционного тестирования. Особое внимание уделяется использованию заглушек (stubs) и контейнеризации тестовых компонентов. Глава завершается обсуждением сквозного (end‑to‑end) тестирования. Эта информация важна для обеспечения надежности и корректности API, помогая разработчикам выбрать подходящие стратегии тестирования для своих проектов.
Глава 3. API-шлюзы: управление входящим трафиком
Эта глава углубляет читателей в мир API‑шлюзов, объясняя их роль в современной архитектуре API. Она начинается с определения API‑шлюза, его функциональности и места в инфраструктуре. Далее рассматриваются преимущества использования API‑шлюзов, включая уменьшение связности, упрощение API, защиту от перегрузок и злоупотреблений, а также управление жизненным циклом API. Глава также охватывает эволюцию API‑шлюзов, современную таксономию и типичные проблемы реализации. Эта информация особо ценна для архитекторов и разработчиков, стремящихся оптимизировать управление API и улучшить общую архитектуру системы.
Глава 4. Service Mesh: управление трафиком между сервисами
Глава посвящена концепции сервисной сети (Service Mesh), которая становится все более важной в мире микросервисов. Она начинается с определения Service Mesh, ее функциональности и места в инфраструктуре. Затем рассматриваются преимущества использования Service Mesh, включая тонкий контроль маршрутизации, надежность, управление трафиком, наблюдаемость и безопасность. Глава также охватывает эволюцию Service Mesh, паттерны реализации и таксономию. Особое внимание уделяется практическим примерам использования Service Mesh для маршрутизации, наблюдения и сегментации сети. Эта информация полезна для архитекторов и разработчиков, работающих с распределенными системами.
Глава 5. Развертывание и релизы API
Здесь фокус на стратегиях развертывания и релизов API. Повествование начинается с разделения понятий развертывания и релиза, объясняя важность этого различия. Затем рассматриваются различные стратегии, включая канареечные релизы, зеркалирование трафика и blue‑green развертывание. Глава также охватывает мониторинг успешности релизов и идентификацию проблем, важные метрики для API и решения на уровне приложений для эффективных релизов. Особое внимание уделяется использованию инструментов, таких как Argo Rollouts, для автоматизации процесса развертывания. Эта информация крайне важна для DevOps инженеров и разработчиков.
Глава 6. Операционная безопасность: моделирование угроз для API
Глава погружает в критически важную тему безопасности API. Она начинается с объяснения рисков, связанных с небезопасными внешними API, и вводит концепцию моделирования угроз. Затем подробно рассматривается процесс моделирования угроз, включая идентификацию целей, сбор информации, декомпозицию системы и выявление угроз с использованием методологии STRIDE. Особое внимание уделяется оценке рисков угроз и валидации модели. Глава также включает практический пример применения OWASP к API. Эта информация необходима для создания безопасных API и защиты от потенциальных атак.
Глава 7. Аутентификация и авторизация API
Эта глава детально рассматривает механизмы аутентификации и авторизации для API. Она начинается с разъяснения различий между аутентификацией пользователей и системной аутентификацией. Затем глубоко погружает в OAuth2, объясняя роль сервера авторизации, механизмы различных грантов OAuth2 и использование JSON Web Tokens (JWT). Особое внимание уделяется выбору подходящих грантов OAuth2 и использованию областей (scopes) для авторизации. Глава также кратко касается OpenID Connect (OIDC) и SAML 2.0. Эта информация крайне важна для реализации надежной системы безопасности API, обеспечивающей правильную аутентификацию и авторизацию.
Глава 8. Редизайн приложений для архитектур, управляемых API
Глава фокусируется на эволюции существующих систем к API‑ориентированным архитектурам. Она начинается с объяснения преимуществ использования API для эволюции системы, включая создание полезных абстракций и уточнение границ доменов. Затем рассматриваются различные варианты конечной архитектуры, включая монолиты, SOA, микросервисы и функции. Особое внимание уделяется процессу управления эволюцией, включая определение целей, использование функций пригодности и декомпозицию системы на модули. Глава также охватывает архитектурные паттерны для эволюции систем с помощью API. Эта информация по‑настоящему критична (crucial) для архитекторов и разработчиков, работающих над модернизацией устаревших систем.
Глава 9. Использование инфраструктуры API для эволюции к облачным платформам
Эта глава рассматривает роль API в миграции к облачным платформам. Она начинается с обзора различных стратегий миграции в облако, включая rehost, replatform и refactor. Затем объясняется роль API‑менеджмента в процессе миграции, включая управление трафиком север‑юг и восток‑запад. Особое внимание уделяется переходу от зональной архитектуры к архитектуре нулевого доверия (zero trust) и роли Service Mesh в этом контексте. Глава также включает практический пример переноса сервиса в облако. Эта информация крайне важна для разработчиков и архитекторов, планирующих или осуществляющих переход в облако, помогая им эффективно использовать API в этом процессе.
Глава 10. Подведение итогов
Заключительная глава подводит итоги всей книги, возвращаясь к примеру конференц‑системы и рассматривая, как различные концепции, обсуждаемые в книге, были применены к этому примеру. Она также затрагивает важные темы, такие как влияние закона Конвея на организацию API, понимание различных типов решений в архитектуре API и подготовка к будущему, включая асинхронную коммуникацию и HTTP/3. Глава заканчивается рекомендациями по дальнейшему изучению архитектуры API, включая постоянное совершенствование фундаментальных знаний, отслеживание новостей отрасли и изучение лучших практик. Эта последняя глава служит полезным заключением, связывая все концепции воедино и показывая векторы для дальнейшего изучения темы проектирования API.
Заключение
Что в сухом остатке: каждая глава книги «Mastering API Architecture» предлагает полезные теоретические знания и практические примеры, включая листинги кода и диаграммы, которые помогут разработчикам, архитекторам и инженерам по программному обеспечению улучшить свои навыки в проектировании, тестировании и управлении API. Книга богата рекомендациями, что делает ее ценным ресурсом для всех, кто работает с API.
Для закрепления знаний и навыков (примеры кода, упражнения и т. д.) дополнительно к книге есть раздел на GitHub.
Добавим каплю рекламы от нашего блога: компания SSP SOFT приглашает на позиции инженеров QA и DevOps, системного аналитика, разработчиков на Java, JS, React и Python, 1С — см. страницу на hh.ru. Если вашей специальности нет в текущих вакансиях, все равно присылайте резюме, т.к. новые позиции в командах открываются еженедельно (пишите в Telegram или на почту).
Успехов в разработке API!