Распределенные системы. Паттерны проектирования (Бёрнс) - страница 14

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

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

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

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

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

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

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

За  то  короткое  время,  что  я  работал  над  технологией  кон-тейнеров,  я  убедился  в  этом.  На  тот  момент  идея  контейне-ров-прицепов (будут описаны в главе 2) прочно укрепилась  в  сообществе  «контейнерщиков».  Благодаря  этому  не  было  необходимости тратить время на разъяснение того, что зна-чит быть контейнером-прицепом, а вместо этого можно было  перейти  к  обсуждению  того,  как  использовать  этот  паттерн  для  решения  конкретной  задачи.  «А  вот  если  мы  здесь  ис-пользуем  паттерн  Sidecar...»  —  «Ага,  кажется,  я  знаю,  какой  контейнер отлично подойдет для этой задачи». Этот пример  подводит нас к третьему показателю ценности паттернов про-ектирования — возможности создания повторно используе-мых компонентов.

Общие повторно используемые компоненты

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

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

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