Распределенные системы. Паттерны проектирования - [7]

Шрифт
Интервал

.

«Паттерны проектирования» привнесли в работу программи-стов инфраструктуру и общий язык. В этой книге описывается  набор интерфейсных паттернов, которые можно использовать  в различных контекстах. Благодаря развитию объектно-ориен-

тированного программирования в целом и интерфейсов в част-ности  появилась  возможность  реализовать  такие  паттерны  в  виде  повторно  используемых  библиотек.  Эти  библиотеки  можно написать единожды и затем многократно использовать,  экономя тем самым время и повышая надежность. Глава 1. Введение 23

Расцвет программного обеспечения с открытым исходным кодом

Делиться  исходным  кодом  с  другими  разработчиками было  принято со времен появления вычислительной техники. Фор-мальные  организации  в  поддержку  свободного  программно-го  обеспечения  существовали  с  середины  1980-х.  Но  именно 

в  конце  1990-х  —  начале  2000-х  резко  возросло  количество  разработчиков и потребителей программного обеспечения с от-крытым исходным кодом. Хотя движение open source лишь от-носительно  связано  с  разработкой  паттернов  проектирования 

распределенных систем, его заслуга состоит в том, что именно  сообщества open source показали миру: создание программного  обеспечения  в  целом  и  распределенных  систем  в  частности  —  труд коллективный.

Здесь  важно  отметить,  что  все  технологии  контейнеров,  ле-жащие  в  основе  паттернов  проектирования  из  этой  книги,  разрабатывались  и  выпускались  именно  как  программное  обеспечение с открытым исходным кодом. Ценность паттер-

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

MEAN> 1 ) есть свои правила установки. Но когда я говорю о паттернах, я имею в виду обобщенные схемы организа-ции распределенных систем, не зависящие от конкретных технологий или приложений.

24 Глава 1. Введение

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

тре приложений и программных сред.

Ценность паттернов, практик и компонентов

Прежде  чем  тратить  ценное  время  на  чтение  книги  о  набо-ре  паттернов,  которые,  с  моих  слов,  усовершенствуют ваши  подходы  к  работе,  научат  вас  новым  приемам  разработки  и — давайте посмотрим правде в глаза — изменят вашу жизнь,  имеет смысл спросить: «А зачем?» Что такого есть в паттернах  и методиках разработки, что может поменять подход к проек-

тированию и компоновке программного обеспечения? В этом  разделе я объясню, почему считаю их важными. Надеюсь, мои  доводы убедят вас прочесть книгу полностью. Стоя на плечах гигантов> 1

Начнем с того, что паттерны проектирования распределенных  систем позволяют, образно говоря, стоять на плечах гигантов.  Задачи, которые мы решаем, или системы, которые мы создаем,  нечасто становятся действительно уникальными. В конечном  итоге собранные воедино компоненты и общая бизнес-модель,  которую  позволяет  организовать  разрабатываемое  программ-ное  обеспечение,  являются  чем-то  новым.  Но  то,  как  система  построена, и те проблемы, с которыми она сталкивается в сво-ем  стремлении  быть  надежной  и  масштабируемой,  отнюдь  не  Глава 1. Введение 25

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

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

Изучение паттернов проектирования распределенных систем —  то  же  самое,  что  изучение  любых  других  передовых  практик  компьютерного  программирования.  Оно  ускоряет  разработку  программного обеспечения, не требуя наличия непосредствен-ного опыта разработки систем, исправления ошибок и набива-ния собственных шишек.

Общий язык обсуждения

подходов к разработке

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

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

Для того чтобы было понятнее, представим, что мы оба исполь-зуем один и тот же инструмент для постройки дома. Я называю  его «сепулька», а вы называете его «бутявка». Как долго мы бу-дем спорить о преимуществах «сепулек» над «бутявками» или  пытаться  объяснить  различие  в  их  свойствах,  пока  не  придем  к  тому,  что  это  одно  и  то  же?  Только  когда  мы  придем  к  тому,  26 Глава 1. Введение

что «сепульки» и «бутявки» — одно и то же, мы сможем учиться  на опыте друг друга.