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

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments