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

> Введение

В современном мире постоянно работающих приложений и про-граммных интерфейсов (API) к ним предъявляются такие тре-бования, которые пару десятилетий назад предъявлялись только  к  небольшому  количеству  наиболее  важных  систем.  Анало-гичным образом наличие возможности быстрого, «вирусного»  роста  популярности сервиса  означает,  что  любое  приложение  должно создаваться с расчетом на почти мгновенное масштаби-рование в ответ на увеличивающийся пользовательский спрос.  Эти  ограничения  и  требования  означают,  что  почти  каждое  разрабатываемое  приложение,  будь  то  мобильная  клиентская  программа  или  сервис  обработки  платежей,  должно  быть  рас-пределенной системой.

Но строить распределенные системы непросто. Как правило,  это единичные заказные системы. В этом смысле разработка  распределенных  систем  поразительно  похожа  на  разработку  программного  обеспечения  (ПО)  в  тот  период,  когда  еще  не  существовало современных объектно-ориентированных язы-ков программирования. К счастью, как и в случае с созданием  Глава 1. Введение 19

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

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

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

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