207,70
рейтинг
26 января в 12:20

Разработка → Книга «Создание микросервисов»

Привет, Хаброжители! У нас вышла новая книга Сэма Ньюмена.

image Книга посвящена программированию микросервисов — небольших автономных компонентов, позволяющих добиться модульности и отказоустойчивости любой программы. Теория микро-сервисов тесно связана с философией Unix, способствует улучшению архитектуры любых приложений, дает возможность избегать громоздкого и запутанного кода. Эта книга поможет читателю заново взглянуть на многие, казалось бы, трудноразрешимые проблемы, масшта-бировать любые проекты, ювелирно разрабатывать даже самые сложные системы.

Эта книга полна конкретных примеров использования микросервисов, собранных по всему миру, включая их применение в таких организациях, как Netflix, Amazon, Gilt и REA group, пришедших к мысли, что возросшая автономность этой архитектуры дает их командам огромные преимущества.



Для кого написана эта книга

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

Зачем я (Сэм Ньюмен) написал эту книгу

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

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

Мир микросервисов сегодня

Микросервисы — весьма динамичная тема. Хоть идея и не нова (несмотря на новизну применяемого термина), накопленный по всему миру опыт наряду с новыми технологиями существенно повлияли на сами способы ее использования. Из-за высокого темпа перемен в данной книге я старался сконцентрироваться скорее на идеях, чем на конкретных технологиях, зная, что подробности реализации всегда изменяются быстрее, чем положенные в их основу размышления. И тем не менее я полон ожиданий, что буквально через несколько лет мы еще глубже вникнем в суть областей применения микросервисов и порядок их эффективного использования.
Хотя я приложил все свои силы к тому, чтобы передать в этой книге основную суть затронутой тематики, если у вас появился к ней серьезный интерес и вы хотите быть в курсе самых последний веяний, будьте готовы к тому, чтобы посвятить ее изучению не один год.

Структура книги

Основа книги по большей части тематическая. Поэтому вы можете произвольно выбирать для изучения темы, которые представляют для вас наибольший интерес. Хотя основные положения и идеи я постарался раскрыть в начальных главах, хочется верить в то, что даже достаточно искушенный читатель найдет для себя что-нибудь интересное во всех главах без исключения. Если же вы хотите углубиться в изучение некоторых более поздних глав, я настоятельно рекомендую просмотреть главу 2, касающуюся обширного характера самой темы, а также дающую представление о принятой мною структуре изложения материала.
Для новичков в данной области главы выстроены таким образом, что им, как я надеюсь, будет иметь смысл прочесть всю книгу от начала до конца. Вот краткий обзор всего, что рассматривается в данной книге.

Глава 1. Микросервисы. Начинается с введения в микросервисы с указанием как их преимуществ, так и некоторых недостатков.
Глава 2. Архитектор развития. Посвящена трудностям компромиссов в архитектурах и многообразию всего, что нужно осмыслить при использовании микросервисов.
Глава 3. Как моделировать сервисы. Начинается с определения границ микросервисов с использованием в качестве вспомогательных средств, направляющих мысли в нужное русло, технологий, позаимствованных из проектирования, основанного на областях применения.
Глава 4. Интеграция. В этой главе начинается погружение в конкретные технологические последствия по мере рассмотрения наиболее подходящих нам разновидностей технологий обеспечения совместной работы сервисов. В ней также более глубоко рассматривается тема пользовательских интерфейсов и интеграции с устаревшими и уже готовыми коммерческими программными средствами (COTS-продуктами).
Глава 5. Разбиение монолита на части. Многие специалисты рассматривают микросервисы в качестве своеобразного антидота от крупных, слабо поддающихся изменениям монолитных систем. Именно этот вопрос и будет подробно рассмотрен в данной главе.
Глава 6. Развертывание. Хотя данная книга носит преимущественно теоретический характер, некоторые темы в ней были подняты под влиянием последних изменений в таких технологиях, как развертывание, которое и станет предметом рассмотрения.
Глава 7. Тестирование. Данная глава посвящена углубленному рассмотрению темы тестирования, к которой следует отнестись с повышенным вниманием, когда речь зайдет о развертывании нескольких отдельных сервисов. Особо будет отмечена роль, которую в содействии обеспечению качества программных средств могут сыграть контракты, основанные на запросах потребителей.
Глава 8. Мониторинг. Тестирование программного средства перед развертыванием не помогает, если проблемы обнаруживаются во время его работы в производственном режиме, поэтому в данной главе исследуются возможности мониторинга систем, обладающих высокой степенью детализации, и методы, позволяющие справиться со сложностями, присущими распределенным системам.
Глава 9. Безопасность. В данной главе исследуются аспекты безопасности микросервисов и рассматриваются методы, позволяющие выполнять аутентификацию и авторизацию пользователя по отношению к сервису и сервиса — по отношению к другому сервису. Безопасность в вычислительных системах является весьма важной темой, однако многие ее охотно игнорируют. Хотя я ни в коем случае не считаю себя специалистом в области безопасности, но все же надеюсь, что эта глава поможет вам по крайней мере обдумать некоторые аспекты, о которых нужно знать при построении систем, в частности систем на основе микросервисов.
Глава 10. Закон Конвея и проектирование систем. Основное внимание в данной главе уделяется взаимодействию организационной структуры и архитектуры. Многие организации уже поняли, что если не добиваться в этом вопросе гармонии, то возникнут существенные затруднения. Мы попытаемся добраться до самых глубин этой дилеммы и рассмотрим несколько различных способов увязки проектирования системы со структурой команд.
Глава 11. Масштабирование микросервисов. В данной главе исследуется порядок всех предыдущих действий в условиях расширения системы, позволяющий справиться с постоянно возрастающими вероятностями сбоев, возникающих в условиях использования большого количества сервисов, а также при больших объемах трафика.
Глава 12. Коротко обо всем. В заключительной главе предпринимается попытка выделить основные черты, отличающие микросервисы от всего остального. В ней перечислены семь принципов микросервисов, а также подведены итоги по ключевым моментам книги.

Об авторе

Сэм Ньюмен — инженер из компании ThoughtWorks, где в настоящее время совмещает работу над клиентскими проектами с решением архитектурных задач для внутренних систем ThoughtWorks. Сэму доводилось работать с компаниями всего мира в самых разных предметных областях, зачастую заниматься одновременно и разработкой, и поддержкой ПО. Если спросить Сэма, чем он занимается, то он ответит: «Работаю с людьми, чтобы создавать все более и более классные софтверные системы». Сэм Ньюмен — автор статей, докладов на конференциях, время от времени он участвует в разработке свободных проектов.

Более подробно с книгой можно познакомиться на сайте издательства.

Оглавление
Отрывок

Для Хаброжителей скидка 25% по купону — Микросервисы.
По факту оплаты бумажной книги отправляем на e-mail электронные версии книг, при покупке электронной книги — все доступные версии отправляются пользователям.
Автор: @ph_piter

Комментарии (32)

  • 0
    Ура )) Как раз на днях хотел купить и на сайте ИД было указано, что не продаётся. А тут ещё и скидка.

    Купил. Спасибо! Жду электроверсию ))
  • –4
    Книга хорошая, жалко что на трекерах только английская версия.
  • +1
    А при покупке бумажной версии цифру что, нельзя получить?
    • +2
      после факта оплаты бумажной книги ссылка на скачивание электронных версий приходит
      • +1
        спасибо за оперативный ответ. Просто в магазине это не указано и складывается ощущение, что это раздельно придётся покупать.
      • 0
        Помнится когда-то издательство обещало мне книгу в электронном формате за купленную бумажную копию (https://habrahabr.ru/company/piter/blog/212023/#comment_7308745), но так и не прислали. А вообще редакторам нужно лучше проверять то, что выходит в печать. Конкретно в той книге (Разработка Backbone.js приложений) было очень много неточностей в переводе, а в примерах кода так вообще были пропущенные строки.
  • +3
    А зачем вы электронную книгу в zip архив положили? :) Из письма сразу в iBooks не добавишь.
  • +3
    Мало того, что книга в zip, так ещё и в CP1251 кодировке имена файлов. У меня Mac и результат выглядит не очень приятно. Переходите на 7z, там с именами файлов всё будет ок.
    • 0
      convmv тебе в помощь
      • +2
        Благодарю. Я написал об этом по большей части не потому, что для меня это большая проблема, а потому, чтобы сервис ИД «Питер» стремился к идеалу.
    • 0
      7z, в отличии от zip, не воспринимают всякие читалки. Т.е. придётся отдельно делать распаковку.
      Тут лучше, как выше предложили — предоставлять возможность скачать не архивом
      • +5
        А может просто лучше названия файлов на английском написать?
        building_microservices_rus.pdf
        • 0
          одно другому не мешает
    • 0
      У меня и Windows архив криво распаковывается нативными средствами.
      • 0
        а что за версия/локализация? в русской десятке нормально всё:
        картинка
        • 0
          Корпоративная семерка, английская.
          Причем в реестре в HKLM\CurrentControlSet\Control\Nls\CodePage у ключей «1250» и «1252» значение «c_1251.nls», этот хак я еще со времен XP наизусть помню и полез первым делом проверять.
          • +1
            • 0
              Похоже, спасибо! Проверю после следующей перезагрузки (слишком дорогая операция в рабочее время)
    • 0
      Распаковывал на планшете на Android. Аналогичная проблема с названиями файлов. Не критично конечно, но было бы неплохо решить эту проблемку.
      • 0
        а зачем распаковывать? Я сразу zip положил в "/Books" — Cool Reader подхватил из него epub без вопросов.
        • 0
          мне было удобнее читать pdf.
  • 0
    ph_piter при покупке на OZON электронные книги не высылаются?
    • 0
      нет
    • 0
      Поддержку ваш вопрос. Сделал предзаказ на Озоне на эту книгу еще в декабре. Завтра курьер ее привезет. Но электронную копию тоже хотелось бы получить. К слову, на сайте издательства ничего изначально про электронную копию не сказано.
      • 0
        AlexeiZhuravlev аналогичная ситуация. Знал бы, сделал бы заказ у издательства. ph_piter возможно как то решить этот вопрос?
  • 0
    ph_piter, а отрывок из ePUB можно?
    • +1
      Сейчас уже некому сверстать, завтра Вам отправим.
  • 0
    Куда писать если оплата прошла, но не засчиталась? На форме заказа написано «Произошла ошибка» и все. Было бы удобно если бы сразу формочка поддержки была)
    • 0
      Будьте добры в личку
  • 0
    Спасибо, заказано — ознакомимся :)
  • 0
    Зачем перед тем, как положить файл в корзину надо выбрать его тип (причем, если выбрать оба, то предлагается заплатить за каждый цену всей книги), если в конце-концов в zip, который предлагают скачать присутствуют оба файла?
  • 0
    Хорошо, что Питер начал придерживаться стратегии Manning. Если покупаешь бумажную книгу — получаешь электронные. Если электронные — то все форматы. Но, у manning есть еще ревьюеры. Рекомендую завести. Не то, чтобы перевод совсем плох, но в некоторых местах откровенно впадаю в транс.
    К примеру,
    страница 47. Работа с исключениями.
    Таковы наши принципы и инструкции, определяющие порядок создания систем.

    И тут я подумал, что что-то пропустил, так как конкретных принципов и инструкций до этого дано не было, а были лишь их определения и пример. Пытался откатиться обратно, но ничего не нашел. Полез в оригинал(страница 57):
    So our principles and practices guide how our systems should be built.

    Более уместно перевести как:
    Итак, наши принципы и инструкции определяют, как нужно создавать системы.

    Вот еще концепция возврата(страница 55).
    Иногда можно столкнуться с моделями с одинаковыми именами, у которых совершенно разное назначение, а также совершенно разные контексты. Например, может существовать такое понятие, как return («возврат»), представляющее собой то, что потребитель отправляет назад. В контексте потребителя понятие return касается распечатки ярлыка доставки, выдачи заказа на посылку и ожидания поступления наложенного платежа. Для товарного склада это понятие может представлять собой поступающую посылку и единицу хранения, запасы которой пополняются. Из этого следует, что в среде товарного склада мы сохраняем дополнительную информацию, связанную с return, которая относится к будущим задачам, например, на ее основе может быть создан запрос на пополнение запасов.
    Общая модель return становится связанной с разными процессами и поддерживающей объекты внутри каждого ограниченного контекста,
    но во многом это внутренняя проблема в пределах самого контекста.

    оригинал:
    Sometimes we may encounter models with the same name that have very different
    meanings in different contexts too. For example, we might have the concept of a return,
    which represents a customer sending something back. Within the context of the customer,
    a return is all about printing a shipping label, dispatching a package, and waiting for a
    refund. For the warehouse, this could represent a package that is about to arrive, and a
    stock item that needs to be restocked. It follows that within the warehouse we store
    additional information associated with the return that relates to the tasks to be carried out;
    for example, we may generate a restock request. The shared model of the return becomes
    associated with different processes and supporting entities within each bounded context,
    but that is very much an internal concern within the context itself.

    Мой любительский:
    Так же иногда мы можем встретить модели с одинаковыми именами, но с разными значениями в разных контекстах. Например, у нас может быть понятие возврата, которое представляет собой клиента возвращающего что-то продавцу. В контексте покупателя, возврат — это распечатка ярлыка доставки, отправки посылки и ожидание возврата денег. Магазину это может представляться как посылка, которая вот-вот прибудет, и товар из которой нужно отправить на склад. Из этого следует, что внутри магазина мы храним дополнительную информацию по возврату, из которой возможно будут порождены задачи. Например, мы можем сгенерировать запрос на пополнение склада. Общая модель возврата ассоциируется с разными процессами и поддерживающими их сущностями внутри каждого ограниченного контекста, но это по большей части внутренние заботы внутри самого контекста.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка