Всем привет! Решил накидать книжных полезняшек для тех, кто любит DevOps или движется в этом направлении. Книги поделил по темам: сначала базовый уровень, потом архитектура, методологии, ну и всё остальное. В общем, от и до.

Я Сергей Задорожный, руководитель отдела платформенных решений банка «Центр-инвест» и один из авторов курса «DevOps для эксплуатации и разработки» от Яндекс Практикума. Раньше занимался написанием бэкендов на Java и Kotlin, потом занялся архитектурой, выстраиванием процессов, а сейчас заношу DevOps-практики в финтех-энтерпрайз.


Моя книжная полочка
Моя книжная полочка

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

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

Кстати, вспомнилась статья «Почему обучение — это новая прокрастинация». Но я не думаю, что обучение — это прямо прокрастинация, особенно если правильно его выстраивать и подкреплять практикой. Так что переходим к рекомендашкам :) 

Полные названия всех рекомендаций будут в конце статьи одним большим списком.

Базовый уровень

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

Если хотите начать свой путь с разработки, есть отличная серия Head First. Она очень доступно объясняет всё с нуля. Например, можете выбрать язык, который есть в вашем стеке, если вы уже работаете в компании. 

У нас бэкенд в основном на Kotlin и Java, поэтому я обычно рекомендую новичкам Head First. Kotlin. Она очень просто заходит и даёт хорошее понимание самых основ. 

Не берите «Философия Java» Брюса Эккеля. Он, конечно, хорош, но в быстрой перспективе большой практической пользы не даст. Берите понятные и простые книги.

Если вы пошли дальше и решили погрузиться в паттерны проектирования, выбирайте книгу «Паттерны проектирования» от Head First, а не «Паттерны объектно-ориентированного проектирования» от GOF

А ещё в серии Head First вышла книжка по Git — «Head First. Git. Лучший способ понять Git изнутри».

Если вы решили начать свой путь администрирования, не надо с ходу читать «Linux API. Исчерпывающее руководство». Возьмите что попроще, познакомьтесь с основными концепциями и поизучайте базовые команды.

И обязательно Docker. Тут плюс-минус все книжки одинаковые. Я когда-то давно начинал с Эдриена Моуэта «Использование Docker», но она уже подустарела. Возьмите лучше Docker in Action Second Edition. 

А если хорошо изучили Docker и готовы разобраться ещё лучше, обязательно почитайте «Безопасность контейнеров» от Лиз Райс. Она даст более глубокое понимание. Очень крутая книга, рассказывает про возможности атаки и как захарденить контейнеры от сборки образов и до рантайма. 

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

Архитектура

Следующий уровень – это архитектура. Важно понимать, что в реальной жизни системы зачастую распределённые, и они не тривиальны. Существуют различные паттерны архитектуры: и не только микросервисы и монолиты, их намного больше, у них есть свои плюсы и минусы. 

Шикарная книжка «Фундаментальный подход к программной архитектуре». Авторы — боги архитектуры Нил Форд и Марк Ричардс. Они написали культовые книги: «Современный подход к программной архитектуре», «Эволюционная архитектура» и многие другие. 

Нил ещё и директор компании Thoughtworks, известной своим Technology Radar. Да и вообще Нил Форд — знатная фигура в IT. Кстати, совсем недавно вышла книжка Head First Software Architecture — интересно полистать. 

Если хочется копнуть в микросервисы, открывайте «Микросервисы» Сэма Ньюмана. Книга прилично выросла с момента первого издания почти в 3 раза.

У Сэма есть ещё Monolith to Microservices, но в русском издании очень сильно поиздевались над переводом. От таких терминов как «микрослужбы» и «робастность» просто вытекают глаза.

Есть книга «Микросервисы» Криса Ричардсона, но она больше академическая, лучше оставить её на когда-нибудь потом. 

Мне понравилась книжка Microservices in Action, она написана простым понятным языком и с отличными примерами. 

Из новых есть забавная книжка «Микросервисы. От архитектуры до релиза». Круто, что она показывает весь путь создания системы, однако примеры вряд ли зайдут для изучения. Некоторые места ввергают в когнитивный диссонанс: показываются развёртывания на Kubernetes без особых объяснений и тут же рассказывается, что такое curl. Но её интересно посмотреть как своеобразный спидран.

Методологии

После того как вы получили базовый скил и несколько смежных (стали T-Shaped-инженером), поняли, что системы распределённые и нужно разбираться в архитектуре, пора понять, что и этого мало. 

Необходимо не просто делать системы, а делать их так, чтобы бизнесу и пользователям было хорошо. А такие вещи, как долгая ручная поставка, ошибки при релизах и аварии — всё это совсем не приносит бизнес-ценности. 

Поэтому надо что-то с этим делать: автоматизировать поставку, улучшать надёжность систем. Поэтому DevOps :) 

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

Для начала «Руководство по DevOps» — отличная книжка, она даст базовое понимание, зачем нужен DevOps. Затем обязательно стоит глянуть Site Reliability Engineering от инженеров Google. Но тут нужно понимать, что книгу писали разные люди, и не факт, что фишки из Google подойдут и вам. Карго-культ — зло, но стоит почитать для идей, понимания, заодно вдохновиться.

Кстати, есть ещё несколько хороших книг: The Site Reliability Workbook, Seeking SRE, Database Reliability Engineering, методичка Enterprise Roadmap to SRE. А недавно вышла в переводе «Безопасные и надёжные системы», сейчас как раз её почитываю.

Практики

DevOps, как методология, состоит из разных практик: CI/CD, IaC, Observability и других. Чтобы с ними познакомиться, стоит полистать книги, которые рассказывают о практиках без привязки к конкретным инструментам. 

«Грокаем Continuous Delivery» — шикарнейшая книга! Написала Кристи Уилсон. В книге полностью разобраны основные концепции CI/CD на жизненных и красочных примерах. Совсем не сухо, а с обоснованиями и рассуждениями, почему именно так. Нет привязки к конкретным реализациям, а показываются именно принципы и концепции, что делает книжку фундаментальной. 

Не зря даже отец концепций СI/CD и автор «Руководства по DevOps», «Ускоряйся!» и «Непрерывное развёртывание ПО» старина Джез Хамбл вписался во введение к книге Кристи. Сама она, кстати, разрабатывает CI/CD инструмент Tekton. 

Кстати, ещё вышла книжка Continuous Deployment: Enable Faster Feedback, Safer Releases, and More Reliable Software, но пока не добрался её полистать.

В книжке Practical Monitoring. Effective Strategies For The Real World автор рассказывает про основные принципы Observability, очень хорошо, просто и понятно. Базовая книжка для тех, кто выстраивает мониторинг.

Ну и разумеется, Киф Моррис «Программирование инфраструктуры. Как создаются адаптивные облачные системы». Тут как раз про основные концепции практики, про то, как описывать инфру кодом и почему это нужно. Опять же без конкретных привязок к инструментам.

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

Культура и процессы

DevOps — не просто методология, DevOps — это целая культура, DevOp — это сообщество, DevOps — это движение. Кстати, про это есть отличный доклад Игоря Курочкина «DevOps — это движение».

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

Немного про культуру и процессы можно глянуть в «Ускоряйся! Наука DevOps. Как создавать и масштабировать высокопроизводительные цифровые организации». Это книжка от создателей опросов State of DevOps.

Ещё неплохая книга — Team Topologies: Organizing Business and Technology Teams for Fast Flow. О том, как организовывать топологию ИТ и как это влияет на процессы. Опять же не надо полностью на неё полагаться, но идеи почерпнуть можно. Много в каких компаниях есть аналоги Platform Team, Enabling Team, команд, которые заносят глобальные инструменты и практики. Как раз в такой и я.

Софтскилы

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

В последнее время появляются книги про софтскилы для инженеров: про лидерство (The Engineering Leader: Strategies for Scaling Teams and Yourself), как выстраивать коммуникации (Communication Patterns: A Guide for Developers and Architects). 

Также будут полезны более универсальные книги, например, о правильном донесении мыслей в переписке. Тут можно взять «Пиши, сокращай» Ильяхова.

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

Все рекомендации одним списком

Head First Kotlin. A Brain-Friendly Guide — Dawn Griffiths, David Griffiths (рус. Head First. Kotlin — Дон и Дэвид Гриффитс)

Head First Design Patterns — Eric Freeman, Elisabeth Robson, Kathy Sierra, Bert Bates (рус. Head First. Паттерны проектирования — Эрик Фримен, Элизабет Робсон, Кэти Сьерра, Берт Бейтс)

Head First Git: A Learner's Guide to Understanding Git from the Inside Out — Raju Gandhi (рус. Head First. Git. Лучший способ понять Git изнутри — Ганди Раджу)

Using Docker: Developing and Deploying Software with Containers — Adrian Mouat (рус. Использование Docker — Эдриен Моуэт)

Docker in Action, Second Edition — Jeff Nickoloff, Stephen Kuenzli

Container Security: Fundamental Technology Concepts that Protect Containerized Applications — Liz Rice (рус. Безопасность контейнеров. Фундаментальный подход к защите контейнеризированных приложений — Лиз Райс)

Fundamentals of Software Architecture: An Engineering Approach — Mark Richards, Neal Ford (рус. Фундаментальный подход к программной архитектуре: паттерны, свойства, проверенные методы — Марк Ричардс, Нил Форд)

Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures —  Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani (рус. Современный подход к программной архитектуре: сложные компромиссы — Нил Форд, Марк Ричардс, Прамод Садаладж и Жамак Дехгани)

Building Evolutionary Architectures: Automated Software Governance — Neal Ford, Rebecca Parsons, Patrick Kua, Pramod Sadalage (рус. Эволюционная архитектура. Автоматизированное управление программным обеспечением —- Нил Форд, Ребекка Парсонс, Патрик Куа и Прамод Садаладж)

Head First Software Architecture: A Learner's Guide to Architectural Thinking — Raju Gandhi, Mark Richards, Neal Ford.

Building Microservices: Designing Fine-Grained Systems — Sam Newman (рус. Создание микросервисов — Сэм Ньюмен)

Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith — Sam Newman (рус. От монолита к микросервисам. Эволюционные шаблоны для создания монолитной системы — Сэм Ньюмен)

Microservices in Action — Morgan Bruce, Paulo A. Pereira

Microservices Up and Running: A Step-by-step Guide to Building a Microservices Architecture — Ronnie Mitra, Irakli Nadareishvili (рус. Микросервисы. От архитектуры до релиза — Ронни Митра, Иракли Надареишвили)

The DevOps Handbook: How to Create World-Class Agility, Reliability, & Security in Technology Organizations, Second Edition — Gene Kim, Patrick Debois, John Willis, Jez Humble (рус. Руководство по DevOps. Как добиться гибкости, надежности и безопасности мирового уровня в технологических компаниях — Джин Ким, Патрик Дебуа, Джон Уиллис, Джез Хамбл)

Site Reliability Engineering: How Google Runs Production Systems — Jennifer Petoff, Betsy Beyer, Chris Jones, Niall Richard Murphy (рус. Site Reliability Engineering. Надежность и безотказность как в Google — Бетси Бейер, Крис Джоунс, Дженнифер Петофф, Нейл Ричард Мёрфи)

The Site Reliability Workbook — Betsy Beyer, Niall Richard Murphy, David K. Rensin, Kent Kawahara, Stephen Thorne, 

Seeking SRE: Conversations About Running Production Systems at Scale — David N. Blank-Edelman

Database Reliability Engineering: Designing and Operating Resilient Database Systems — Laine Campbell, Charity Majors

Enterprise Roadmap to SRE: How to Build and Sustain an SRE Function — James Brookbank, Steve McGhee 

Building Secure and Reliable Systems: Best Practices for Designing, Implementing, and Maintaining Systems — Heather Adkins, Betsy Beyer, Paul Blankinship, Piotr Lewandowski, Ana Oprea, Adam Stubblefield (рус. Безопасные и надежные системы: Лучшие практики проектирования, внедрения и обслуживания как в Google — Хизер Аткинс, Бетси Бейер, Пол Бланкиншип, Петр Левандовски, Ана Опреа, Адам Стабблфилд)

Grokking Continuous Delivery — Christie Wilson (рус. Грокаем Continuous Delivery — Кристи Уилсон)

Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations — Nicole Forsgren, Jez Humble, Gene Kim (рус. Ускоряйся! Наука DevOps: Как создавать и масштабировать высокопроизводительные цифровые организации — Николь Форсгрен, Джез Хамбл, Джин Ким)

Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation — Jez Humble, David Farley (рус. Непрерывное развертывание ПО. Автоматизация процессов сборки, тестирования и внедрения новых версий программ — Джез Хамбл, Дэвид Фарли)

Continuous Deployment: Enable Faster Feedback, Safer Releases, and More Reliable Software — Valentina Servile

Practical Monitoring. Effective Strategies For The Real World — Mike Julian

Infrastructure as Code: Dynamic Systems for the Cloud Age — Kief Morris (рус. Программирование инфраструктуры. Как создаются адаптивные облачные системы — Киф Моррис)

Team Topologies: Organizing Business and Technology Teams for Fast Flow — Manuel Pais, Matthew Skelton

Пиши, сокращай — Максим Ильяхов

Communication Patterns: A Guide for Developers and Architects — Jacqui Read

The Engineering Leader: Strategies for Scaling Teams and Yourself — Cate Huston

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