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

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

Практикум. Конвейерная разметка

и обработка изображений ..................................................... 212

Глава 13. Заключение — новое начало? ..................................... 217

Об авторе ....................................................................................... 220

Об иллюстрации на обложке .......................................................... 221

Предисловие

Кому стоит прочесть эту книгу На сегодняшний день почти каждый разработчик является соз-дателем  и/или  потребителем  распределенных  систем.  Даже  относительно  простые  мобильные  приложения  опираются  на  облачные API, чтобы обеспечить доступность данных на любом  устройстве, которым пожелает воспользоваться клиент. Будете  ли вы новичком в разработке распределенных систем или зака-ленным  в  боях  ветераном,  паттерны  и  компоненты,  описанные  в  этой  книге,  помогут  превратить  разработку  таких  систем  из  искусства в науку. Повторно используемые компоненты и пат-терны  проектирования  распределенных  систем  позволят  вам  сосредоточиться  на  важных  деталях  вашего  приложения.  Это  издание поможет любому разработчику более качественно, эф-фективно и быстро создавать распределенные системы. Зачем я написал эту книгу

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

них была, по большому счету, разработана с нуля. В целом это  характерно  для  всех  распределенных  приложений.  Несмотря  на  то  что  зачастую  многие  их  принципы  и  логика  работы  со-впадают,  шаблонные  решения  или  повторно  используемые  компоненты  не  так-то  просто  применять.  Это  заставляло  меня  впустую тратить время на реализацию систем, качество которых  могло быть лучше, чем оказывалось в конечном итоге. Появившиеся  недавно  технологии  контейнеров  и  их  орке-страторов  фундаментально  изменили  ландшафт  разработки  распределенных систем.  В  наше  распоряжение попал  объект  и  интерфейс,  которые  позволяют  выражать  базовые  паттерны  проектирования  распределенных  систем  и  компоновать  кон-тейнеризованные  компоненты.  Я  написал  эту  книгу,  чтобы  сблизить  нас,  практикующих  специалистов  в  области  распре-деленных систем; чтобы у нас появились общий язык и общая  стандартная  библиотека;  чтобы  мы  могли  быстрее  создавать  более качественные системы.

Современный мир распределенных систем

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

рая работает на многих машинах и к которой получает доступ  множество пользователей по всему миру. Несмотря на их повсе-местное распространение, проектирование и реализация таких  систем — «черная магия», которой владеют лишь избранные. Но,  как и все другие технологии, мир распределенных систем разви-вается, упорядочивается и абстрагируется. В этой книге я опи-сываю набор обобщенных повторяемых паттернов (шаблонов),  14 Предисловие

которые делают разработку надежных распределенных систем  более доступной и эффективной. Внедрение паттернов проек-тирования и повторно используемых компонентов освобождает  разработчиков от необходимости повторно реализовывать одни  и те же системы. В сэкономленное время можно сосредоточить-ся на разработке ключевых частей приложения. Как ориентироваться в книге Книга разделена на четыре части следующим образом. ‰ ‰> Глава 1. Введение. > Вводит понятие распределенной системы 

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

‰ ‰> Часть I. Одноузловые паттерны проектирования. > В  гла-вах  2–4  обсуждаются  повторно  используемые  паттерны  и компоненты, имеющие место в рамках одного узла распре-деленной системы. В частности, рассматриваются паттерны  Sidecar, Adapter и Ambassador.

‰ ‰> Часть II. Паттерны проектирования обслуживающих си-стем. В главах 8–9 рассматриваются многоузловые паттер-ны, применяемые в постоянно работающих обслуживающих  системах, таких как веб-приложения. Обсуждаются паттерны  репликации, масштабирования и выбора главного узла.

‰ ‰> Часть III. Паттерны проектирования систем пакетных вы-числений. В главах 10–12 рассматриваются паттерны распре-деленных систем для широкомасштабной обработки данных,  в  том  числе  очереди  задач,  событийно-ориентированная  обработка и согласованные рабочие процессы.

Если  вы  опытный  разработчик  распределенных систем,  мо-жете  пропустить  первые  несколько  глав.  Тем  не  менее  вам  Предисловие 15

стоит  хотя  бы  пролистать  их,  чтобы  понять,  как  применять  паттерны проектирования и почему считается, что сама идея  паттернов проектирования распределенных систем настоль-ко важна.

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