Распределенные системы. Паттерны проектирования - [7]
«Паттерны проектирования» привнесли в работу программи-стов инфраструктуру и общий язык. В этой книге описывается набор интерфейсных паттернов, которые можно использовать в различных контекстах. Благодаря развитию объектно-ориен-
тированного программирования в целом и интерфейсов в част-ности появилась возможность реализовать такие паттерны в виде повторно используемых библиотек. Эти библиотеки можно написать единожды и затем многократно использовать, экономя тем самым время и повышая надежность. Глава 1. Введение 23
Расцвет программного обеспечения с открытым исходным кодом
Делиться исходным кодом с другими разработчиками было принято со времен появления вычислительной техники. Фор-мальные организации в поддержку свободного программно-го обеспечения существовали с середины 1980-х. Но именно
в конце 1990-х — начале 2000-х резко возросло количество разработчиков и потребителей программного обеспечения с от-крытым исходным кодом. Хотя движение open source лишь от-носительно связано с разработкой паттернов проектирования
распределенных систем, его заслуга состоит в том, что именно сообщества open source показали миру: создание программного обеспечения в целом и распределенных систем в частности — труд коллективный.
Здесь важно отметить, что все технологии контейнеров, ле-жащие в основе паттернов проектирования из этой книги, разрабатывались и выпускались именно как программное обеспечение с открытым исходным кодом. Ценность паттер-
нов для документирования и усовершенствования практик разработки распределенных программных систем становится наиболее очевидной именно с точки зрения коллективной разработки.
24 Глава 1. Введение
Цель паттерна — предоставить общие предложения по ар-хитектуре системы, задать ее ориентировочную структуру. Надеюсь, что эти паттерны направят ход ваших мыслей в верную сторону и окажутся применимы в широком спек-
тре приложений и программных сред.
Ценность паттернов, практик и компонентов
Прежде чем тратить ценное время на чтение книги о набо-ре паттернов, которые, с моих слов, усовершенствуют ваши подходы к работе, научат вас новым приемам разработки и — давайте посмотрим правде в глаза — изменят вашу жизнь, имеет смысл спросить: «А зачем?» Что такого есть в паттернах и методиках разработки, что может поменять подход к проек-
тированию и компоновке программного обеспечения? В этом разделе я объясню, почему считаю их важными. Надеюсь, мои доводы убедят вас прочесть книгу полностью. Стоя на плечах гигантов> 1
Начнем с того, что паттерны проектирования распределенных систем позволяют, образно говоря, стоять на плечах гигантов. Задачи, которые мы решаем, или системы, которые мы создаем, нечасто становятся действительно уникальными. В конечном итоге собранные воедино компоненты и общая бизнес-модель, которую позволяет организовать разрабатываемое программ-ное обеспечение, являются чем-то новым. Но то, как система построена, и те проблемы, с которыми она сталкивается в сво-ем стремлении быть надежной и масштабируемой, отнюдь не Глава 1. Введение 25
В этом, стало быть, состоит первая ценность паттернов: они позволяют учиться на чужих ошибках. Возможно, вы нико-гда раньше не разрабатывали распределенные системы. Воз-можно, вы никогда раньше не разрабатывали определенный
вид распределенных систем. Вместо того чтобы надеяться на опыт вашего коллеги в этой области или учиться на ошибках, которые совершали другие, вы можете обратиться за помощью к паттернам.
Изучение паттернов проектирования распределенных систем — то же самое, что изучение любых других передовых практик компьютерного программирования. Оно ускоряет разработку программного обеспечения, не требуя наличия непосредствен-ного опыта разработки систем, исправления ошибок и набива-ния собственных шишек.
Общий язык обсуждения
подходов к разработке
Возможность учиться, а также лучше и быстрее понимать раз-работку распределенных систем — лишь часть преимуществ от наличия общего набора паттернов проектирования. Паттерны ценны даже для опытных разработчиков распределенных си-
стем, уже хорошо их понимающих. Паттерны предоставля-ют общий словарь, позволяющий нам быстро понимать друг друга. Понимание — основа обмена знаниями и дальнейшего обучения.
Для того чтобы было понятнее, представим, что мы оба исполь-зуем один и тот же инструмент для постройки дома. Я называю его «сепулька», а вы называете его «бутявка». Как долго мы бу-дем спорить о преимуществах «сепулек» над «бутявками» или пытаться объяснить различие в их свойствах, пока не придем к тому, что это одно и то же? Только когда мы придем к тому, 26 Глава 1. Введение
что «сепульки» и «бутявки» — одно и то же, мы сможем учиться на опыте друг друга.