can3p (can3p) wrote,
can3p
can3p

Из прочитанного. Выпуск 25

1) Onder volwassenen, Jami Attenberg

3 / 5

Еще одна книжка Ями Аттенберг, предыдущая была De Middlesteins. Не то, чтобы она меня совсем разочаровала, но навела сильную тоску. Книжка состоит из жизненных страданий и метаний отдельно взятой жительницы Нью-Йорка. Жизнь идет, она на нее со стороны смотрит и рефлексирует. Случается плохое, случается хорошее, рождаются дети, браки, разводы, да что угодно, у девушки случается жизнь, в которой этого ничего нет.

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

2) Designing Data-Intensive Applications, The big ideas behine reliable, scalable and maintainable systems, Martin Kleppmann

5 / 5

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

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

Например, хранить в базе данных. Круто, но что значит база данных, и как там хранятся данные? Какую роль играют индексы? Что значит ACID, и имеет ли он смысл? Какие гарантии могут базы данных предоставлять, и как это различается от продукта к продукту?

Потом идет заход про репликацию - один мастер, много мастеров, нет мастеров, что это значит и какие у этого последствия. Все эти вопросы также рассматриваются в разрезе NoSQL баз данных.

Есть еще главы про партицирование и его последствия, про кодирование данных - json или нет, различия в разных бинарных форматах и схемах. Следом идет глава про транзакции, и опять же что это значит и как различается в разных системах.

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

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

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

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

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

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

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

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

Tags: из прочитанного
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments