Распределенные системы. Паттерны проектирования - [4]
Практикум. Конвейерная разметка
и обработка изображений ..................................................... 212
Глава 13. Заключение — новое начало? ..................................... 217
Об авторе ....................................................................................... 220
Об иллюстрации на обложке .......................................................... 221
Предисловие
Кому стоит прочесть эту книгу На сегодняшний день почти каждый разработчик является соз-дателем и/или потребителем распределенных систем. Даже относительно простые мобильные приложения опираются на облачные API, чтобы обеспечить доступность данных на любом устройстве, которым пожелает воспользоваться клиент. Будете ли вы новичком в разработке распределенных систем или зака-ленным в боях ветераном, паттерны и компоненты, описанные в этой книге, помогут превратить разработку таких систем из искусства в науку. Повторно используемые компоненты и пат-терны проектирования распределенных систем позволят вам сосредоточиться на важных деталях вашего приложения. Это издание поможет любому разработчику более качественно, эф-фективно и быстро создавать распределенные системы. Зачем я написал эту книгу
За свою карьеру разработчика программных систем — от веб-поисковиков до облачных систем — я создал множество мас-штабируемых, надежных распределенных систем. Каждая из Предисловие 13
них была, по большому счету, разработана с нуля. В целом это характерно для всех распределенных приложений. Несмотря на то что зачастую многие их принципы и логика работы со-впадают, шаблонные решения или повторно используемые компоненты не так-то просто применять. Это заставляло меня впустую тратить время на реализацию систем, качество которых могло быть лучше, чем оказывалось в конечном итоге. Появившиеся недавно технологии контейнеров и их орке-страторов фундаментально изменили ландшафт разработки распределенных систем. В наше распоряжение попал объект и интерфейс, которые позволяют выражать базовые паттерны проектирования распределенных систем и компоновать кон-тейнеризованные компоненты. Я написал эту книгу, чтобы сблизить нас, практикующих специалистов в области распре-деленных систем; чтобы у нас появились общий язык и общая стандартная библиотека; чтобы мы могли быстрее создавать более качественные системы.
Современный мир распределенных систем
Когда-то, много лет тому назад, люди писали программы, рабо-тавшие на той же машине, на которой к ним получали доступ пользователи. С тех пор ситуация изменилась. Теперь почти каждое приложение является распределенной системой , кото-
рая работает на многих машинах и к которой получает доступ множество пользователей по всему миру. Несмотря на их повсе-местное распространение, проектирование и реализация таких систем — «черная магия», которой владеют лишь избранные. Но, как и все другие технологии, мир распределенных систем разви-вается, упорядочивается и абстрагируется. В этой книге я опи-сываю набор обобщенных повторяемых паттернов (шаблонов), 14 Предисловие
которые делают разработку надежных распределенных систем более доступной и эффективной. Внедрение паттернов проек-тирования и повторно используемых компонентов освобождает разработчиков от необходимости повторно реализовывать одни и те же системы. В сэкономленное время можно сосредоточить-ся на разработке ключевых частей приложения. Как ориентироваться в книге Книга разделена на четыре части следующим образом. > Глава 1. Введение. > Вводит понятие распределенной системы
и объясняет, каким образом паттерны проектирования и по-вторно используемые компоненты способствуют быстрой разработке надежных распределенных систем.
> Часть I. Одноузловые паттерны проектирования. > В гла-вах 2–4 обсуждаются повторно используемые паттерны и компоненты, имеющие место в рамках одного узла распре-деленной системы. В частности, рассматриваются паттерны Sidecar, Adapter и Ambassador.
> Часть II. Паттерны проектирования обслуживающих си-стем. В главах 8–9 рассматриваются многоузловые паттер-ны, применяемые в постоянно работающих обслуживающих системах, таких как веб-приложения. Обсуждаются паттерны репликации, масштабирования и выбора главного узла.
> Часть III. Паттерны проектирования систем пакетных вы-числений. В главах 10–12 рассматриваются паттерны распре-деленных систем для широкомасштабной обработки данных, в том числе очереди задач, событийно-ориентированная обработка и согласованные рабочие процессы.
Если вы опытный разработчик распределенных систем, мо-жете пропустить первые несколько глав. Тем не менее вам Предисловие 15
стоит хотя бы пролистать их, чтобы понять, как применять паттерны проектирования и почему считается, что сама идея паттернов проектирования распределенных систем настоль-ко важна.
Многие, вероятно, найдут полезными одноузловые паттерны, так как они являются наиболее универсальными и их проще всего использовать повторно.