Всем привет! Решил накидать книжных полезняшек для тех, кто любит 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