Release it! Проектирование и дизайн ПО для тех, кому не всё равно

    Привет, Хаброжители!
    У нас вышла книга Майкла Нейгарда

    image

    Неважно, каким инструментом вы пользуетесь для программной разработки — Java, .NET, или Ruby on Rails. Написание кода — это еще только полдела. Готовы ли вы к внезапному наплыву ботов на ваш сайт? Предусмотрена ли в вашем ПО «защита от дурака»? Правильно ли вы понимаете юзабилити? Майкл Нейгард утверждает, что большинство проблем в программных продуктах были заложены в них еще на стадии дизайна и проектирования. Вы можете двигаться к идеалу сами — методом проб и ошибок, а можете использовать опыт автора. В этой книге вы найдете множество шаблонов проектирования, помогающих избежать критических ситуаций, и не меньшее количество антишаблонов, иллюстрирующих неправильные подходы с подробным анализом возможных последствий. Любой разработчик, имеющий опыт многопоточного программирования, легко разберется в приведенных примерах на Java, которые подробно поясняются и комментируются.
    Стабильность, безопасность и дружественный интерфейс — вот три важнейших слагаемых успеха вашего программного продукта. Если в ваши планы не входит в течение последующих лет отвечать на недовольные письма пользователей, выслушивать критику заказчиков и постоянно латать дыры, устраняя возникающие баги, то прежде чем выпустить финальный релиз, прочтите эту книгу.


    Для кого предназначена эта книга?

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

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

    Книга разделена на четыре части, каждая из которых начинается с практического примера. В части I показано, как сохранить активность системы, обеспечив ее безотказную работу. Несмотря на обещанную надежность за счет избыточности, распределенные системы демонстрируют доступность, выражаемую скорее «двумя восьмерками», чем желанными «пятью девятками» (То есть 88, а не 99,999 % времени безотказной работы).

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

    Как только вы добьетесь стабильности, приходит время позаботиться о мощности системы. Этой теме посвящена часть II, в которой вы познакомитесь со способами измерения этого параметра, узнаете, что он на самом деле означает, и научитесь оптимизировать его в долгосрочной перспективе. Я покажу вам примеры паттернов и антипаттернов, иллюстрирующие хорошие и плохие проектные решения, и продемонстрирую потрясающее влияние, которое эти решения могут оказывать на вычислительную мощность (и, как следствие, на количество ночных телефонных звонков и сообщений).

    В части III мы рассмотрим общие вопросы проектирования, которые архитектор должен учитывать при написании программ для центров обработки данных. За последнее десятилетие аппаратное обеспечение и проектирование инфраструктуры претерпели значительные изменения; к примеру, такая относительно редкая раньше практика, как виртуализация, сейчас распространена практически повсеместно. Сети стали куда сложнее — теперь они являются многоуровневыми и программируемыми. Обычным делом стали сети хранения данных. Разработка программного обеспечения должна учитывать и использовать эти новшества для обеспечения бесперебойной работы центров обработки данных.

    В части IV существование системы рассматривается в рамках общей информационной экосистемы. Зачастую производственные системы напоминают кота Шрёдингера — они заперты в коробке без возможности наблюдать за их состоянием. Здоровью экосистемы это не способствует. Отсутствие информации делает невозможными целенаправленные улучшения. В главе 17 обсуждаются факторы, технологии и процессы, которые следует изучать у работающих систем (это единственная ситуация, когда можно изучать определенные вещи).

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

    Анализ примеров

    Для иллюстрации основных концепций книги я привел несколько развернутых примеров. Они взяты из реальной жизни и описывают системные отказы, которым я был свидетелем. Эти отказы оказались крайне дорогостоящими — и компрометирующими — для тех, кто имел к ним отношение. Поэтому я опустил информацию, которая позволила бы идентифицировать конкретные компании и людей. Также я поменял названия систем, классов и методов. Но изменениям подверглись только «несущественные» детали. Во всех случаях я указал отрасль, последовательность событий, режим отказа, путь распространения ошибки и результат. Цена всех этих отказов не преувеличена. Это реальные потери реальных фирм. Я упомянул эти цифры в тексте, чтобы подчеркнуть серьезность материала. Отказ системы ставит под удар реальные деньги.

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

    Для Хаброжителей скидка 25% по купону — Release it!
    • +12
    • 22.3k
    • 9
    Издательский дом «Питер»
    244.84
    Company
    Share post

    Comments 9

      +1
      Спасибо за скидку. Почему разные форматы книги нужно покупать отдельно? Я же книгу покупаю, а не просто файлик.
        0
        на следующей неделе появится такоя возможность, начиная с новинок
          0
          А можно будет скачать во втором формате?
          Прочитал внимательнее, начиная с новинок((
        +1
        Почему бы не дарить электронную версию купившим бумажную?
          0
          мы так пробовали, моло желающих было.
          на следующей неделе пост будет про книгу «Git для профессионального программиста»
          по факту оплвты бумажной книги электронная версия будет приходить на e-mail.
            0
            А купить отдельно электронную версию книги «Git для профессионального программиста» нету возможности?
              +1
              старт продаж электронной версии — 15 сентября
          +2
          Неужели никто не видит жуткий косяк прямо на обложке?

          "… проектирование и дизайн..."

          Я скажу страшную вешь — слово «дизайн» в переводе это и означает «проектирование»!

          Посмотрел на английском, там «design and deploy», то есть «проектирование и внедрение».

          И что я должен думать о качестве перевода книги, если вижу на обложке такое?
            +1
            Должен пожаловаться на качество перевода. На мой взгляд, уважающему себя издательству, коим Питер, безусловно, является, хорошо было бы найти несколько чтецов из практикующих инженеров, которые за пару недель будут вычитывать оригинал-макет и находить различные технические несуразицы, равно как и очевидные исказители смысла. Например, вот это сразу бросилось в глаза:

            1. Написано: "Серверы приложений самостоятельно реализуют механизмы работы с файлами cookie, предоставляя вам симпатичный программный интерфейс, напоминающий карту или словарь". Казалось бы, что за карта? Ведь очевидно имелось в виду Map и Dictionary. Хорошим тоном будет это вообще не переводить, а упомянуть их, оформив шрифтом "исходный код". Допустимым переводом будет "отображение". Я не встречал разработчиков, называющих Map картой, а назвавший её так заложит зерно сомнения.

            2. На этой схеме очевидно глаголами помечены ребра, как это принято на такого рода диаграммах. Но что за "счётчики"?

            image


            Эти "счётчики", будучи помещёнными на диаграмму, не имеют никакого смысла и даже искажают смысл исходный. Моя догадка была в том, что "счётчики" — это "counters", что означает "противостоять/предотвращать". В этом смысле диаграмма уже становится логичной.

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

            Only users with full accounts can post comments. Log in, please.