Здравствуйте, дорогие читатели. Мы редко пишем о книжных «долгостроях», то есть, о работах, которые никак не выйдут на Западе. Но сегодня хотим познакомить вас с постом из блога Мартина Клеппмана, который уже не первый год трудится над фундаментальной книгой "Designing Data-Intensive Applications"


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

В конце 2012 года я написал у себя в блоге пост “Rethinking caching in web apps”. В нем почти 4,000 слов, что гораздо длиннее, чем, согласно народной мудрости должен быть хороший пост. Тем не менее, у меня осталось впечатление, что в нем я лишь слегка копнул те проблемы, о которых нужно рассказать.

Поэтому я задумался – а не написать ли произведение подлиннее, книгу, например. Мне нравится писать, поскольку такой труд стимулирует автора заниматься глубокими исследованиями, продумывать проблему, а затем пытаться все это логично объяснить. Таким образом я прорабатываю проблему гораздо лучше, чем если просто читаю о ней. Или, если выразиться афористичнее:

Писательство помогает понять, насколько неуклюжи твои мысли. – Дик Гиндон

Какие книги уже есть


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

  1. Большинство айтишных книг – это прикладные руководства по конкретной технологии. В них предполагается, что вам сказано использовать базу данных X или язык программирования Y, поэтому там и рассказывается, как это делать. Эти книги хороши, но от них мало пользу в ситуациях, когда вы пытаетесь выбрать, какой инструмент — X или Y — вам действительно нужен. Такие книги обычно сосредоточены на достоинствах конкретной технологии и замалчивают ее недостатки.

  2. В блогах часто встречаются сравнения нескольких технологий, но в таких публикациях затрагиваются преимущественно поверхностные аспекты (контрольные точки, характеризующие производительность, API, лицензия), а фундаментальное устройство технологии полностью игнорируется. Такие посты можно сравнить с карточками по базам данных из игры Top Trumps, каких-либо глубоких представлений по ним не составишь.

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

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

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

Я обсуждал эти идеи с разными людьми, в том числе, с сотрудниками O’Reilly, и стало ясно, что не мне одному нужна такая книга. Так зародилась идея книги Designing Data-Intensive Applications. И вы ее легко узнаете на полке – ведь на обложке будет такой классный индостанский вепрь.

Книга «Высоконагруженные приложения. Эффективная обработка больших данных» (извините за многословное заглавие – можете называть ее просто «книга с вепрем») пока готовится к выходу, но на сайте уже выложен early release.

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


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

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

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

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

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

Проголосовало 280 человек. Воздержалось 56 человек.

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

Поделиться с друзьями
-->

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


  1. VioletTape
    03.09.2016 00:13

    Один из главных бонусов Сафари-букс, что можно читать книги постепенно, до выхода. И это действительно одна из увлекательнейших вещей в библиотеке!


    1. 7ft
      03.09.2016 10:51

      По отношению к данной книге, это бонус от Early Release издательства O'Reilly Media. Говорю вам, как человек купивший эту конкретную книгу почти 2 года назад. Похожие бонусы есть и у других издательств. Например, MEAP издательства Manning.


  1. Here_and_Now
    03.09.2016 10:51

    Писательство помогает понять, насколько неуклюжи твои мысли. – Дик Гиндон


    Если поможете найти источник этой цитаты, цены вам не будет.


    1. JIghtuse
      03.09.2016 17:26

      Седьмая картинка на этой странице: http://www.guindoncartoons.com/gallery.php?id=17 ("Dear Diary, ..."). Как понял, благодаря Лесли Лэмпорту фраза популярна стала.


      1. Here_and_Now
        05.09.2016 13:49

        Спасибо


  1. afanasiy_nikitin
    03.09.2016 12:29
    +1

    Мне требовалась книга, в которой объяснялись бы системы данных – вся сфера баз данных, распределенных систем, пакетной и потоковой обработки, согласованности, кэширования, индексации – на нужном уровне сложности.

    так в итоге, о чем и для кого эта книга?
    веб-сайты? высоконагруженные кластеры? enterprise-системы? о каком «уровне сложности» идет речь? на каком уровне абстракции рассказывается — автор учит нюансам работы с Oracle или проектировать системы хранения данных? книга для прикладных программистов или разработчиков библиотек?


    1. lair
      03.09.2016 16:25

      Так вроде же написано в конце поста:


      Если вы – программист, занимающийся разработкой серверных приложений (например, машинного интерфейса веб-приложения), то эта книга для вас.


  1. indiedev
    03.09.2016 18:28

    а есть ли уже книги с подобной темой, с переводом на русский?


  1. eminsk
    03.09.2016 21:19

    Спасибо за статью — очень понравилась


  1. kingu
    10.09.2016 15:05

    Книга может и хорошая но автор как-то затянул с написанием.