Сомневался, стоит ли брать. Но скажу сразу – стоит!!! Очень просто читается, очень много интересных решений рассматривается ) Подойдет для расширения кругозора DevOps инженеров)
Objętość 592 strony
2016 rok
Site Reliability Engineering. Надежность и безотказность как в Google (pdf+epub)
O książce
Вот уже почти 20 лет компания Google обеспечивает работу невообразимо сложных и масштабных систем, которые чутко реагируют на запросы пользователей. Поисковик Google находит ответ на любые вопросы за доли секунды, карты Google с высочайшей точностью отражают земной ландшафт, а почта Google доступна в режиме 365/24/7 и, в сущности, стала первым общедоступным облачным хранилищем. Неужели эти системы безупречны? Нет, они тоже отказывают, ломаются и устаревают, как любая техника. Просто мы этого не замечаем. Все дело в том, что уже более десяти лет Google нарабатывает уникальную технологию Site Reliability Engineering, обеспечивающую бесперебойную работу и поступательное развитие софтверных систем любой сложности. Эта книга – кладезь опыта, накопленного компанией Google за долгие годы, коллективный труд многих выдающихся специалистов и незаменимый ресурс для любого инженера, желающего разрабатывать и поддерживать любые продукты максимально качественно и эффективно.
SRE - это то, что происходит, когда вы просите программиста спроектировать команду службы эксплуатации.
В какой-то момент, казалось, об SRE заговорили из каждого утюга (по крайней мере, в моем информационном пузыре). Так что пройти мимо этой книги у меня не было практически никаких шансов. Сразу оговорюсь, что её имеет смысл читать исключительно "специалистам", ну либо очень любопытным людям.
Я же, поработав "с компьютерами" некоторое время, могу с уверенностью сказать, что компьютеры ненадёжны (впрочем, в каких-то отношениях точно надёжнее людей). Поэтому лично меня построение (и принципы построения) надёжных технических систем, которые способны функционировать достаточно автономно, стало интересовать само по себе.
Именно об этом данная книга. По сути, это компиляция статей о разных аспектах того, как строить отказоустойчивые системы. И, по сути, эти принципы достаточно хорошо сформулированы, чтобы быть применимы не только в IT-сфере.
Так уж получилось, что то, что ПО разрабатывалось одними одними людьми, а запускались системы и эксплуатировались - другими, стало доброй традицией. Вероятно, это наследие обычных производств. Наверное, с точки зрения чистого менеджмента, в этой книге всё достаточно банально. Есть организационные проблемы, есть принцип Конвея, есть риски, есть сроки, стоимость и качество. И всё это надо учитывать, чему и посвящены некоторые разделы.
С технической точки зрения, в этой книге описаны интересные ситуации, которые могут возникать в достаточно больших системах, и не обязательно таких больших, как продукты Google. Это, например, касается архитектуры распределенных систем и автоматизации уже имеющихся процессов. И, конечно же, в книге о надёжности очень важное место занимает работа с отказами - это могут быть как каскадные сбои, деградация производительности сервисов, так и банальные ошибки. Поэтому про то, как строить мониторинг, чтобы правильно узнавать об ошибках, как упрощать системы и исправлять в них ошибки - тоже написано достаточно подробно.
Книгой свободно можно пользоваться как справочником, потому что материал хорошо структурирован и, как уже говорилось, является скорее сборником статей. Хотя один раз я бы рекомендовал её прочитать целиком, чтобы составить комплексное представление о проблеме в целом.
Конкретные практики и подходы (бюджеты ошибок, SLO, SLA, управление инцидентами) в рамках небольшой рецензии описывать смысла нет. Серьёзно, для этого и есть эта книга. Думаю, основная её ценность - это то, что она позволяет посмотреть на проблемы отказов в сервисах в нескольких измерениях, рассматривая технические, организационные и человеческие факторы в целом. Шаг за шагом в этой книге описывается практически полная производственная цепочка ПО (очевидно, на примере Google, но это не так важно).
Главные общие идеи, которые красной нитью проходят через все повествование: - нужно стремиться не к абсолютной надёжности, а к достаточной. При ужесточений требований по надёжности, затраты на такое решение будут расти по экспоненте; - люди ошибаются, и делают это часто. Поэтому, когда они ошибаются, система должна продолжать работать корректно. Улучшить систему проще, чем изменить людей; - всегда есть компромисс, но очень важно думать не о сиюминутных приоритетах, а о более долгосрочных; - нужно понимать, что и почему вы делаете. Это определяет и эффективность процессов и успех команд.
Звучит более, чем банально, не правда ли?
Большая часть подходов, которые описаны в данной книге иначе как банальным "здравым смыслом" не назовёшь, но отчасти секрет в том, что люди как вид не очень-то заточены под создание по-настоящему сложных систем. Это факт, это ни хорошо, ни плохо. Среднестатистически это - норма. И, как это часто бывает, то, что очевидно на бумаге, не всегда проявляется в деле. И вот у нас есть стереотипы о программистах-перфекционистах и "эффективных" менеджерах.
Именно признание объективной действительности и понимание того, как именно всё (и компьютеры, и люди) работает позволяет двигаться вперёд и строить не просто сложные системы, а очень сложные ("Google runs on 5000 times more code than the original space shuttle").
Забегая вперёд, скажу, что в этой книге SRE не то, чтобы противопоставляется DevOps, но у меня сложилось впечатление, что SRE - это всё-таки про надёжность, в то время как из "руководства по DevOps" я бы сделал вывод, что DevOps - это про скорость внесения изменений. Понятно, что оба подхода стремятся в общем-то снизить издержки на внедрение нового функционала, чтобы позволить себе меняться настолько быстро, насколько это необходимо, а не упираться в потолок того, насколько это доступно.
Но например, в плане отношения к ошибкам: в DevOps мы считаем, что ошибки - это нормально, то, что мы их исправляем делает нас и продукт лучше. В SRE же принято бюджетирование ошибок, хотя, конечно же, на ошибках тоже учатся.
Когда я пишу эту рецензию, уже вышла и вторая книга (и, судя по всему, не последняя) - SRE Workbook. И в ней уже на нескольких страницах нам объясняют, что SRE - это и есть реализация DevOps. Впрочем, какая разница, как это называть, если это работает?
В заключение добавлю лишь, что слышал, что обе SRE-книги являются "настольными" в SRE-командах Google, хотя знать их как "отче наш", вроде бы не требуется. Но обе книги замечательны тем, что предлагают не просто набор инструментов, а даже определенную, не побоюсь этого слова, философию. Хотя, прежде всего, кажется, они просто призывают включить голову.
Систематизированный перечень подходов Google для обеспечения надежности сервисов, где Devops - лишь один из инструментов. Книга организована как сборник статей от разных авторов, но довольно цельный. Перевод не идеальный, но читабельный. Полезно будет прочитать всем, кто занимается организацией надежности высоконагруженных сервисов.
Обязательна к прочтению сотрудникам и особенно руководителям службы эксплуатации. Приводит голову в порядок в части организации работы по обеспечению заданной надежности ИТ систем, причём содержит вполне конкретные шаги и рекомендации, а не пространные рассуждения на тему.
Эта книга обязательна для прочтения всем кто отвечает за отказоустойчивость и надёжность программных продуктов, многолетний опыт Google собран в этой книге и помогает правильно выстроить работу по повышению доступности ваших сервисов.
Zostaw recenzję
Recenzje
5