Больше рецензий
6 июля 2016 г. 10:48
591
4
РецензияРазработка программного обеспечения (ПО) за последние 70 лет (то есть с момента появления первых электронных компьютеров общего назначения и программ для них) изменилась практически до неузнаваемости. Если первым программистам приходилось создавать программы в машинных кодах, при этом параллельно отлаживая нестабильное “железо”, то сейчас каждый школьник может создавать простые программы без каких-либо усилий. А профессиональным разработчикам ПО доступен целый арсенал инструментов от языков программирования высокого уровня, интеллектуальных интегрированных сред разработки (иногда даже пугающих своей интеллектуальностью) и вплоть до сред имитационного моделирования и облачных систем виртуализации. И всё же, проекты по разработке ПО всё равно остаются безумно рисковыми и сложными.
Уже давно ушли в историю монолитные программы, создаваемые одним человеком. Современные программные системы достигают такой сложности, что для их разработки требуются сотни тысяч человеко-часов работы, требуется организация совместной работы десятков и сотен человек, и чтобы эти системы в итоге не развалились под собственной “тяжестью”, требуются особые подходы к их внутренней организации. В середине нулевых годов стал активно использоваться подход к модульной разработке ПО, названный сервисно-ориентированной архитектурой (SOA). При этом подходе большая и сложная программная система разбивается на набор слабо связанных друг с другом компонентов, каждый из которых решает свою задачу и взаимодействует с остальными через стандартизированные интерфейсы. Подход имел много сторонников, но второе рождение по сути пережил с появлением идеи микросервисов и бурным распространением интернет-сервисов, облачных инфраструктур и веб-программирования. Микросервисы всё так же решают каждый свою небольшую задачу, не зависят друг от друга, но при этом не только выполняются каждый в своём окружении, но и могут вообще даже размещаться совершенно на разных вычислительных устройствах в сети. В условиях современных требований к надёжности, устойчивости и возможности быстрого масштабирования интернет-сервисов системы, состоящие из большого количества мелких независимых компонент, которые можно легко добавлять или заменять при выходе из строя, зарекомендовали себя очень хорошо.
Автор книги -- инженер компании ThoughtWorks, сотрудниками которой было написано много замечательных книг в области разработки ПО (один только Мартин Фаулер чего стоит). Первая глава более-менее вводная, описывает используемые идеи и концепции, а вот дальше материал становится более практическим. Рассматриваются подходы к моделированию ПО в виде микросервисов, способы их интеграции между собой, развёртывания на аппаратном обеспечении, подходы к тестированию такого рода распределённых систем, мониторинга их работы, обеспечения безопасности. Всё это на примерах из реальной практики автора. Отдельная очень полезная, на мой взгляд, глава рассматривает разбиение существующей монолитной системы на части и перевод её на микросервисные рельсы. И это очень здорово, поскольку создавать что-то новое и правильное с нуля легко и приятно, но энтузиазм резко падает, когда перед тобой сотни тысяч строк кода на давно устаревшем языке, и все боятся это трогать, чтобы ненароком что-нибудь не сломать. А такие случаи чаще всего и встречаются в реальной жизни.
Книга больше сосредоточена на идеях, чем на конкретных средствах, но примеры современных технологий и инструментов тут тоже упоминаются. Она будет интересна и тем, кто интересуется подходами к проектированию архитектуры ПО в целом, и тем, кто уже занимается внедрением микросервисов в своих системах. Очень годная книжка на актуальную тему.
8/10