5 книг, которые стоит почитать начинающему ИТ-архитектору

Привет, Хабр! Меня зовут Александр Бардаш, я главный архитектор интеграционных платформ в МТС. Сегодня расскажу, почему ИТ-архитекторам важно хотя бы иногда всегда читать книги, и поделюсь подборкой для начинающих. Жду вас под катом и в комментариях!

f5b1d3ec19a7e0074660570ddab3700c.png

Архитекторы разные — и литература для них тоже

Начнем с того, что архитекторы бывают абсолютно разные. Например, одни формируют бизнес-процессы, работают с TOGAF и другими паттернами. Эти ребята больше углублены в операционные процессы, чем в технические.

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

Еще есть системные, инфраструктурные архитекторы и так далее. Все они отвечают за конкретные области.

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

5 книг для начинающих архитекторов

А вот и моя «базовая» подборка:

  1. «Паттерны объектно-ориентированного проектирования», Ральф Джонсон, Джон Влиссидес, Ричард Хелм, Эрих Гамма.

  2. «Микросервисы. Паттерны разработки и рефакторинга», Крис Ричардсон.

  3. «Паттерны разработки на Python. TDD, DDD и событийно-ориентированная архитектура», Гарри Персиваль и Боб Грегори.

  4. Strategic Monoliths and Microservices: Driving Innovation Using Purposeful Architecture, Tomasz Jaskula.

  5. Cloud Native Microservices With Kubernetes: A Comprehensive Guide to Building, Scaling, Deploying, Observing, and Managing Highly-Available Microservices in Kubernetes, Aymen El Amri.

Дальше расскажу, чем мне нравится каждая из них.

«Паттерны объектно-ориентированного проектирования», Р. Джонсон, Дж. Влиссидес, Р. Хелм, Э. Гамма

600621ecf6ab8b247588e001ed55830f.png

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

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

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

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

«Микросервисы. Паттерны разработки и рефакторинга», Крис Ричардсон

e6f32f2a69784eba8de0282daba74e02.png

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

Выдержки из этой книги уже гуляют по русскоязычным форумам. Энтузиасты сами создали подборки: 30 паттернов, 40 паттернов и так далее. Но я рекомендую именно первоисточник.

По промокоду IDKFA в Строках эти книги можно прочитать бесплатно. Активировать промокод — до 30.09.2024.

«Паттерны разработки на Python. TDD, DDD и событийно-ориентированная архитектура», Гарри Персиваль и Боб Грегори

c537963b63e05205284da69fca68559b.jpg

Теория — это классно и здорово, но хороший архитектор должен опробовать свои знания на практике и больше углубиться в процесс работы. Эта книга как раз позволяет ознакомится с TDD, DDD подходами. Все это описано в книге — паттерны можно опробовать и на личном опыте понять, насколько вам удобно с ними работать.

Авторы пишут про:

  • «инверсию зависимостей» и ее связи с портами и адаптерами,

  • про паттерны и различия между ними — например, чем отличаются паттерны «Сущность», «Объект-значение» и «Агрегат»;

  • разделение ответственности на команды и запросы;

  • событийно-управляемую архитектуру и реактивные расширения. 

Отдельно отмечу, что в книге много хороших примеров на Python. Я пользовался ими сам и вам тоже советую.

Strategic Monoliths and Microservices: Driving Innovation Using Purposeful Architecture, Tomasz Jaskula

5414a8fa78e16bd005f5d916466aee55.png

Многие, услышав «микросервисы», сразу говорят: «Монолит — отстой». Но это неправда, все решения по-своему хороши.

Чтобы действительно понимать это, разбираться в этом и аргументировать свои решения, полезно прочитать эту книгу. Она написана на английском, перевод мне пока не попадался. Но ребята пишут легко и очень классно рассказывают о теме — было интересно читать.

Cloud Native Microservices With Kubernetes, Aymen El Amri

4bde79e298dda97a549888d53990bb8c.png

Напоследок одна из топовых книг об инфраструктурной части проектирования систем. Полное название: Cloud Native Microservices With Kubernetes: A Comprehensive Guide to Building, Scaling, Deploying, Observing, and Managing Highly-Available Microservices in Kubernetes.

Мы как архитекторы должны понимать, как приложение работает на уровне инфраструктуры, что такое CI/CD, high-level ability, GitOps и прочее. Об этом тезисно и подробно сказано в книге. Развернуто описаны современные ключевые истории: clinative, cubic architecture, QR компоненты.

Рекомендую эту книгу тем, кто действительно хочет быть многопрофильным архитектором.

Почему вообще нужно читать?

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

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

Работа архитектора заключается не только в том, чтобы спроектировать классную систему. Еще ее нужно защитить перед Tech Lead разработчиками, которые потом уже будут ее реализовывать. Например, как-то я показывал архитектуру в новой команде и мне сказали: «Да ну, твоя архитектура нам не подходит. Мы всегда работали с монолитами». И вот тогда мне пришлось аргументированно доказывать разработчикам, почему им стоит пользоваться именно моей архитектурой. Я много читал по этому (и не только) поводу — например, ту же Strategic Monoliths and Microservices. Так что мне не составило труда объяснить, почему через пять лет монолит выльется в проблему — даже если разработчики сейчас об этом не думают вообще. Архитектор всегда должен мыслить концептуально и наперед. К слову, убедить разработчиков у меня все-таки получилось.

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

Теперь слово вам! Расскажите в комментариях, какие книги уже читали и как оно. Сейчас я раздумываю над подборкой для уже опытных ИТ-архитекторов, так что скоро продолжим тему.

© Habrahabr.ru