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

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

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

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

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

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

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

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

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

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

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

Скачать презентацию