Лекция 27. Введение в облачные вычисления

Облачные вычисления (cloud computing) — быстро развивающаяся область распределенных вычислений. Основная идея облачных вычислений — это предоставление потребителям готовой распределенной инфраструктуры, которая является прозрачной для выполняющихся приложений. Таким образом, при разработке облачных приложений можно игнорировать наиболее сложные для имплементации моменты, связанные с организацией распределенных вычислений, и вместо этого использовать высокоуровневые программные интерфейсы. Другая особенность облачной архитектуры — эластичность, то есть возможность быстрого увеличения вычислительных мощностей, например, при увеличении нагрузки на систему. При этом подобные манипуляции автоматизированы с помощью системы управления облаком, а в некоторых случаях могут вообще происходить без вмешательства человека.

Основа для облачных вычислений — технологии, разработанные к началу XXI века:

  • аппаратная виртуализация, сделавшая возможной быстрое масштабирование вычислительных ресурсов;
  • распространение и стандартизация веб-сервисов;
  • наработки в области распределенных вычислений, в частности, grid- и утилитарные вычисления.

Архитектура облачных систем состоит из трех уровней:

  • инфраструктура как сервис (IaaS) — базовый уровень, предоставляющий доступ к вычислительным серверам, системам хранения данных и технологиям вроде балансировки нагрузки;
  • платформа как сервис (PaaS) — промежуточный уровень, на котором находятся API для доступа к данным и проведения вычислений;
  • программное обеспечение как сервис (SaaS) — наиболее высокий уровень, обеспечивающий доступ к пользовательским приложениям (например, редактирование документов в веб-браузере).

Типичный сценарий применения облачной архитектуры — использование PaaS, предоставляемой одним из крупных игроков рынка (например, Google), для создания приложений, которые взаимодействуют с клиентами (SaaS), а также средств анализа и обработки данных (например, с помощью методов машинного обучения).

Презентация: Лекция 27.

Основа для облачной инфраструктуры — хранение данных. Для этой цели используются как неструктурированные хранилища (то есть распределенные файловые системы), так и базы данных с разной степенью структурированности. Основное препятствие при построении распределенных хранилищ сформулировано в виде так называемой CAP-теоремы:

Теорема (Брюэр, 2002). Не существует распределенной компьютерной системы, удовлетворяющей одновременно трем условиям:

  • согласованность данных (consistency) — все узлы системы имеют доступ к одним и тем же данным в произвольный момент времени;
  • доступность (availability) — на каждый запрос к данным будет получен ответ об успешности его выполнения;
  • масштабируемость (partition tolerance) — система продолжает функционировать, несмотря на возможную потерю сообщений между узлами или отказ части системы.

Поскольку распределенные системы, используемые в облаке, должны быть масштабируемыми, выделяют AP-хранилища (с возможной несогласованностью данных в некоторые промежутки времени) и CP-хранилища (с «теряющимися» запросами). Обыкновенные реляционные БД, соответствующие сигнатуре AC, плохо подходят для облачного хранения данных (хотя существуют их адаптированные модификации, такие как MySQL Cluster).

Используемые в облачных вычислениях базы данных можно классифицировать по используемым схемам данных. Большинство исходных данных для облака либо неструктурированны вовсе (например, изображения), либо структурированы слабо (например, документы в формате JSON). Таким образом, хранение информации в реляционных таблицах неэффективно; вместо таблиц используют подход NoSQL (not only SQL), в котором акцент делается на отсутствие жесткой схемы данных и нормализации. Выделяют четыре основных типа баз данных NoSQL согласно типу хранимых объектов:

  • пары «ключ — значение» (часто используются для распределенного кэширования данных);
  • столбцы данных;
  • полуструктурированные документы вроде JSON;
  • графы отношений между сущностями.

Для обработки данных в облачных системах используются особые методы вычислений. Одна из наиболее распространенных моделей таких вычислений — MapReduce, предложенная компанией Google. По своей сути она напоминает использование функций map и reduce в функциональных языках программирования (например, эти функции есть Python), только для распределенных систем. Среди используемых для обработки облачных данных алгоритмов можно выделить методы машинного обучения (например, для составления контекстной рекламы или распознавания лиц на фотографиях) и индексирования (например, для полнотекстового поиска по большим массивам документов).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *