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

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

еще был относительно прост для понимания. Клиент (-ы) делал  (-и) запросы, а сервер (-ы) их обслуживал (-и). Рост Интернета и появление в начале 2000-х крупных центров  обработки  данных  (ЦОД),  состоящих  из  тысяч  относительно  недорогих  массово  производимых  компьютеров,  которые  объ-единялись  в  сеть,  привели  к  широкому  распространению  рас-пределенных систем . В отличие от клиент-серверных архитек-тур  распределенные  приложения  состоят  либо  из  нескольких  разных  приложений,  либо  из  нескольких  копий  одного  при-ложения,  работающих  на  разных  машинах.  Взаимодействуя,  они реализуют некоторый сервис, например веб-поисковик или  систему розничных продаж.

В  силу  своего  распределенного  характера  такие  системы  при  грамотной их структуризации более надежны по определению.  А  при  грамотно  спроектированной  архитектуре  системы  мас-штабируемой становится и ее команда разработчиков. К сожале-нию, за эти преимущества приходится платить. Распределенные  системы  существенно  сложнее  в  проектировании,  построении  и отладке. При построении надежной распределенной системы  к инженерно-техническим навыкам специалистов предъявляют-ся существенно более высокие требования, чем при построении  локальных  приложений.  Так  или  иначе,  потребность  в  надеж-ных распределенных системах продолжает расти. Следователь-но, возникает необходимость в соответствующих инструментах,  паттернах и практиках их построения.

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

ных  систем.  Взяв  за  основу  контейнеры  и  оркестраторы  кон-тейнеров,  мы  можем  создать  набор  повторно  используемых  Глава 1. Введение 21

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

Формализация алгоритмического программирования

Люди писали программы задолго до опубликования Дональдом  Кнутом сборника «Искусство программирования»> 1 . Тем не ме-нее  это  событие  стало  важной  вехой  в  развитии  информатики.  В частности, описанные в книгах Кнута алгоритмы не ориенти-рованы на какой-либо компьютер, а предназначены для обуче-ния  читателя  алгоритмическому  мышлению.  Эти  алгоритмы  могут  быть  адаптированы  к  конкретной  компьютерной  архи-тектуре  или  к  конкретной  задаче,  решаемой  читателем.  Такая  формализация была важна не только потому, что предоставляла  разработчикам  общий  инструментарий  для  написания  про-грамм,  но  и  потому,  что  демонстрировала  существование  уни-версальных  идей,  которые  можно  применять  в  разнообразных  контекстах. Понимание алгоритмов имеет ценность само по себе,  безотносительно к какой-либо решаемой с их помощью задаче.