Спецпроекты

Облака: от старых технологий к широким перспективам

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

Несмотря на то, что "облачные вычисления" как термин приобрели известность лишь в 2007 году, они имеют довольно долгую историю. Практически все технологии, которые сегодня входят в состав облачной парадигмы, существовали и раньше, однако, как пишет американский автор Джордж Риз (George Reese), для того, чтобы сделать эти технологии по-настоящему массовыми, потребовалась компания Amazon.

Заря виртуализации

Одной из наиболее существенных технологических новаций, лежащих в основе облачных вычислений, являются технологии виртуализации. Не все знают, что эта новация насчитывает уже более 40 лет: впервые виртуализация была предложена в мейнфреймах IBM еще в середине 1960-х годов. Однако после поворота компьютерных технологий в сторону ПК и недорогих серверов, основанных на процессорной архитектуре x86, о виртуализации на долгое время забыли: это была одна из многих технологических привилегий тех пользователей, которые готовы были платить за мощности и возможности мейнфреймов.

Лишь с середины 2000-х годов ситуация стала радикально меняться. Компания VMware, впервые представившая систему виртуализации для процессоров x86, довольно долго была фактическим монополистом, предлагая свой продукт на коммерческой основе. Однако со временем монополию VMware стали подрывать как коммерческие проекты (Parallels, VirtualPC и др.), так и разработки с открытым кодом (Bochs, QEMU и др.). Под их влиянием в 2005 году VMware сделала настольную версию своего ПО для запуска виртуальных машин бесплатной. С этого времени можно условно отсчитывать начало массового использования технологий виртуализации на компьютерах архитектуры x86.

Насколько далеко grid-технологии отстоят от облаков?

Как и облачные вычисления, grid-вычисления позволяет выполнять вычислительные задачи на удаленных компьютерах. Однако у этих концепций разные особенности и приоритеты. Grid-вычисления ориентированы на выполнение ресурсоемких вычислительных задач, чаще всего научного характера, параллельно на множестве компьютеров. Обработка массива данных, полученных с телескопа, в поисках внеземного разума или перебор комбинаций химических веществ в поиске перспективных лекраственных средств – примеры задач, где grid-вычисления оказываются чрезвычайно кстати. Напротив, в облачных вычислениях пользователи сами определяют характер решаемых: при этом обработка данных может вестись как распределенно, так и на отдельном компьютере – все зависит от того, как спроектирована архитектура облачного приложения и как устроена "внутренняя кухня" конкретного облачного поставщика.

Прелюдией к современным облачным вычислениям послужили такие модные (в свое время) тренды развития ИТ-индустрии, как сервисно-ориентированная архитектура (Service-Oriented Architecture, SOA), grid-вычисления, предоставление приложений в режиме услуг (Application Service Provider, ASP) и др. Некоторые из этих терминов заключали в себе вполне конкретные технологии (например, grid-вычисления), другие преимущественно употреблялись в маркетинговых целях (например, ASP). Облачные вычисления вобрали в себя много идей из предшествующих концепций и потому изначально они носят более разносторонний характер, чем существовавшие ранее концепции: облачные вычисления можно понимать и как техническую парадигму, и как маркетинговый термин, и как перспективное направление для НИОКР и академических исследований. По сути, в облачные вычисления вложили все те идеи, которые накапливались в отрасли в течение предыдущих полутора десятилетий.

Технологии последнего десятилетия

Помимо технологий виртуализации, есть и другие технологические факторы, которые имели принципиально важную роль для развития облачных вычислений. Повсеместное распространение высокоскоростных каналов интернет-связи сделало возможным интенсивный обмен данными с компьютерами, находящимися в облаке. Созревание технологий Web 2.0 позволило выполнять функционально насыщенные веб-приложения непосредственно в окне веб-браузера, а не запускать их на локальном компьютере или компьютере в локальной сети. В какой-то мере успеху облачных вычислений содействовало также развитие интернет-сервисов, которые предоставляют доступ к своим данным посредством специальных программных интерфейсов (API): действительно, когда я создаю приложение, которое собирает данные из интернета (например, из Facebook) и обслуживает пользователей в интернете же, вполне логично, чтобы и промежуточный этап – обработка данных – осуществлялась также в интернете, т.е. на облачной площадке.

Облачные вычисления – результат синтеза целого ряда технологий и подходов

Источник: CNews Analytics, 2011

У разных видов облачных сервисов разные предшественники. Все вышесказанное относится преимущественно к решениям класса SaaS. Если мы посмотрим на технологии "платформа как сервис" (PaaS), то среди их предшественников нужно будет упомянуть технологии распределенных вычислений, используемые в инфраструктуре таких интернет-гигантов, как Google и Yahoo. В какой-то момент Google осознала, что эти технологии уже достаточно зрелы и хороши, чтобы их можно было сделать доступными для массового разработчика – и в результате появился инструментарий Google App Engine. Компания Salesforce.com шла с другой стороны: предлагаемая ей онлайновая CRM-платформа разрабатывалась таким образом, чтобы предоставить заказчикам максимум возможностей для доработки и адаптации – и в какой-то момент выяснилось, что этих возможностей вполне достаточно для создания полностью независимых пирложений. Так родилась PaaS-платформа Force.com.

Другой краеугольный камень облачных вычислений – ПО с открытым кодом, зрелость которого также наступила в 2000-е гг. Джордж Риз справедливо замечает, что успех Amazon Web Services стал возможен исключительно благодаря свободным лицензиям, которые не связывают пользователя излишними ограничениями и не требуют лицензионных платежей за каждый процессор или за каждый экземпляр установленного ПО.