Что такое облака, и когда имеет смысл строить облачные решения? И если строить, то какие платформы использовать? Нужно ли предоставлять клиентам облачные сервисы? А может, лучше использовать виртуализацию? И чем отличается виртуализация от облаков? Эти вопросы задают все IT и «не IT» компании: от крупных операторов связи до небольших стартапов. Давайте попробуем разобраться! В предыдущей статье мы рассмотрели понятия SDN и NFV. Возникает вопрос — если и то и другое связано с виртуализацией и сетями, то это получились облака? Ведь все мы прекрасно знаем, что облака — это виртуализация ресурсов где-то в сети. Я попробовал найти формальное определение облаков, но не нашел. Определения были расплывчаты и нечетки, как настоящие облака. И тогда у меня возникло чувство, что ОБЛАКАМ невозможно дать четкого определения, они как ЛЮБОВЬ, которую можно только описывать и характеризовать с разных сторон. Дальнейшее расследование подтвердило это предположение. Для начала нашел стандарт Cloud Computing, который разрабатывает NIST (National Institute of Standards and Technology). Он выделяет 3 измерения облачных сервисов:
Т.е. четкого определения облака нет даже в стандарте. Рассмотрим подробнее все измерения:
Следующие понятия наверняка все слышали:
Есть мнение, что настоящие облака это только PaaS и SaaS, но стандарт это мнение не подтверждает.
Теперь про модели развертывания, которые тоже на слуху:
А вот на функциональные характеристики облаков зачастую не обращают внимание, тогда как для облаков это неотъемлемые требования:
Получается, чтобы Сервис имел право называться облачным, нужно уметь ответить на вопрос «Где он находится по всем трем измерениям?».
Но при всех преимуществах облаков существует ряд моментов, которые могут иметь негативные последствия, особенно в публичных облаках:
Это все, конечно, не повод отказаться от использования облаков, а причина более тщательно разобраться в плюсах и минусах.
Теперь несколько слов про виртуализацию, без которой не может быть облаков. У виртуализации также есть несколько измерений, которые условно можно назвать «Тип» и «Способ виртуализации».
Я кратко рассажу обо всех. Для более глубокого погружения в тему рекомендую статью «Обзор методов виртуализации, архитектур и реализаций»
Ресурсы — это оперативная память, жесткие диски, процессоры. Они также могут быть нарезаны и розданы по частям разным пользователям.
Виртуализация приложений — это то, что мы уже знаем как PaaS и SaaS
Основные методы виртуализации — это полная виртуализация и паравиртуализация. Схема обоих методов очень похожа. Есть гипервизор и виртуальные машины с гостевыми OS. При полной виртуализации в гостевую OS не вносятся никакие изменения. При паравиртуализации устанавливаются оптимизированные образы для определенного гипервизора. Это позволяет максимально использовать аппаратные ресурсы и не требует никаких изменений от приложений. Примером системы, реализующей полную виртуализацию, является VMware, пример паравиртуализации — Xen и KVM.
Еще выделяют несколько способов виртуализации:
Особенностью является, что гостевая OS может быть только одна. Примером виртуализации на уровне OS является Linux-VServer:
В последнее время все больше используются системы контейнеризации, такие как Docker или Kubernetes. Они позволяют автоматически разворачивать подготовленные образы OS в основном для целей автоматического тестирования и для систем CI. Контейнеры очень похожи на виртуальные машины, но для них не требуется гипервизор, а только соответствующий движок:
При этом способе виртуализации VM полностью эмулирует работу определенного оборудования. С одной стороны, это дает возможность, например, на одном процессоре эмулировать другой тип процессора. С другой стороны, понятно, что при этом будет замедление работы в десятки раз. Пример эмулятора — это Bochs.
И для полноты картины добавлю эмуляцию библиотек. Это способ, при котором эмулируется не вся OS, а только часть. Например, Wine в Linux — эмуляция библиотек для Windows-приложений.
Получается, что мы можем виртуализировать разные системы разными методами. Т.е. видим, что существующими способами и типами виртуализации можно решить множество задач. Возникает логичный вопрос, когда же имеет смысл разворачивать облачную платформу?
Облачные платформы располагаются над набором виртуальных машин, полностью изолируют приложение как от железа, так и от структуры виртуальной среды. Облачные платформы используются для автоматичеcкого и ручного scale in / scale out, запуска / остановки / конфигурирования VM и приложений. Когда имеет смысл оставаться в виртуализации, а когда оставаться в облаке? Концепция следующая: когда всего много — облако, мало — виртуализация:
Несколько слов про платформы для построения облаков. Информации по ним масса, поэтому приведу только сухую выжимку:
Для построения облаков сейчас есть две основные платформы, остальные (Eucalyptus, Cloudstack, Microsoft Azure) занимают несущественную долю.
Облачные платформы обычно используются заказчиками для реализации следующих задач:
Подробно остановиться на этих задачах и на «Cloud Ready» приложениях планирую в одной из следующих статей.
Интересно понять, есть ли облака у мобильных операторов связи? Предоставляют ли они облачные сервисы? Из открытых источников картина получается следующая:
Из облачных услуг предоставляет:
Есть следы в сети, что в 2013 году МегаФон предоставлял IaaS. Сейчас на сайте из похожего можно найти услугу Colocation. Вместе с тем у МегаФона появилась масса специализированных услуг: CDN, M2M, WiFi авторизация, VPN и т.п.
МТС предоставляет облачные услуги под маркой «Белорусские облачные технологии».
Tele2 не замечен в попытках продвигать облака, а вот РТК, мобильные активы которого находятся в совместном холдинге с Tele2 (Т2 РТК Холдинг) развернулся серьезно. РТК сделал «Национальную облачную платформу» и теперь на ее базе предоставляет:
Из полученных данных можно сделать вывод, что для мобильных операторов связи предоставление облачных сервисов не является приоритетной задачей, они больше сосредоточены на развитии своих сетей и сервисов. К операторам связи нужно обращаться за сетевыми услугами, такими как: виртуальная АТС, виртуальная сеть, М2М и вообще за всем тем, что может предоставляться на SDN & NFV технологиях: виртуальные Firewall, DPI и т.п. А за вычислительными облаками лучше идти к специализированным провайдерам.
Облака
Т.е. четкого определения облака нет даже в стандарте. Рассмотрим подробнее все измерения:
Модель обслуживания или сервисная модель
Следующие понятия наверняка все слышали:
- IaaS (Infrastructure as a Service) — поставщик предоставляет только вычислительные ресурсы (servers, storage, processing, memory, network bandwidth). При этом может предоставляться набор подготовленных образов OS, которые разворачиваются за несколько минут. Также предоставляется сетевая связность между виртуальными машинами и дополнительные дисковые ресурсы. Отдельной частью IaaS является MaaS (Metal as a Service) — предоставление доступа к голому железу без OS (bare-metal servers). Пример поставщика IaaS: AWS. Платформы для построения IaaS: VMware, OpenStack, Azure.
- PaaS (Platform as a Service) — поставщик предоставляет операционную систему и определенный софт для самостоятельной реализации заказчиком своих услуг, например, DB, CMS. Примеры: OpenShift, Heroku, Google Cloud Platform, Cloud Foundry.
- SaaS (Software as a Service) — поставщик предоставляет софт для использования заказчиком, например: Microsoft Office 365, Microsoft Exchange, 1C и т.п.
Есть мнение, что настоящие облака это только PaaS и SaaS, но стандарт это мнение не подтверждает.
Модель развертывания
Теперь про модели развертывания, которые тоже на слуху:
- Private cloud (Частное облако) — инфраструктура разворачивается внутри организации, тем самым обеспечивается безопасность и производительность.
- Public cloud (Публичное облако) — инфраструктура предназначена для предоставления услуг сторонним заказчикам. Например, AWS, Google Cloud. Преимущества тут очевидны: не нужен обслуживающий персонал, быстрорасширяемые ресурсы, платишь только за то, что потребил (часы, гигабайты), возможность сосредоточится на идее или бизнесе, а не на обслуживании инфраструктуры. Хорошо подходят для быстрого развертывания небольших систем, для организации стартапов.
- Community cloud (Общественное облако) — инфраструктура разделяется между несколькими организациями со схожими концепциями потребления ресурсов, политиками в безопасности и т.п. Потребителей меньше чем в публичном облаке, но больше чем в частном. Пример: Google Apps for Government.
- Hybrid cloud (Гибридное облако) — это комбинация из двух или более различных облачных инфраструктур (частных, публичных или общественных). Среди гибридных облаков есть интересные кейсы использования, например: внутри частного облака организация хранит всю необходимую актуальную информацию, а резервные копии прозрачно отправляются в публичное облако.
Функциональные характеристики
А вот на функциональные характеристики облаков зачастую не обращают внимание, тогда как для облаков это неотъемлемые требования:
- Broad Access Network — возможность доступа к ресурсам из Интернета с помощью разнообразных устройств.
- Rapid Elasticity — эластичность ресурсов. При необходимости быстрое выделение дополнительных ресурсов, вплоть до бесконечности.
- Measured Services — автоматическое измерение услуг и выставление счетов для оплаты.
- On-Demand Self Services, Resource Pooling — выделение вычислительных ресурсов (resource pooling) по запросу от заказчиков (on demand).
Получается, чтобы Сервис имел право называться облачным, нужно уметь ответить на вопрос «Где он находится по всем трем измерениям?».
Обратная сторона облаков
Но при всех преимуществах облаков существует ряд моментов, которые могут иметь негативные последствия, особенно в публичных облаках:
- Облаком сравнительно легко управлять, но обновление софта влияет на тысячи пользователей, что потенциально может привести к серьезным авариям
- В публичных облаках большие конфигурации не всегда дешевле, надо считать TCO
- Возникает несколько вопросов к безопасности в публичных облаках:
- Как обрабатываются конфиденциальные данные?
- Соблюдены ли требования регулятора к персональным данным?
- Насколько надежна сохранность данных (дублирование, бекапирование)?
- Какая защита от хакерских атак?
Это все, конечно, не повод отказаться от использования облаков, а причина более тщательно разобраться в плюсах и минусах.
Виртуализация
Теперь несколько слов про виртуализацию, без которой не может быть облаков. У виртуализации также есть несколько измерений, которые условно можно назвать «Тип» и «Способ виртуализации».
Я кратко рассажу обо всех. Для более глубокого погружения в тему рекомендую статью «Обзор методов виртуализации, архитектур и реализаций»
Типы виртуализации
Виртуализация серверов
- Обычно под виртуализацией подразумевается размещение нескольких виртуальных серверов в рамках одного физического
- Но может еще быть объединение нескольких физических серверов в один логический для решения определенной задачи
- Распределенность + виртуализация = GRID системы
Виртуализация ресурсов
Ресурсы — это оперативная память, жесткие диски, процессоры. Они также могут быть нарезаны и розданы по частям разным пользователям.
Виртуализация приложений
Виртуализация приложений — это то, что мы уже знаем как PaaS и SaaS
Способы виртуализации
Полная виртуализация и паравиртуализация
Основные методы виртуализации — это полная виртуализация и паравиртуализация. Схема обоих методов очень похожа. Есть гипервизор и виртуальные машины с гостевыми OS. При полной виртуализации в гостевую OS не вносятся никакие изменения. При паравиртуализации устанавливаются оптимизированные образы для определенного гипервизора. Это позволяет максимально использовать аппаратные ресурсы и не требует никаких изменений от приложений. Примером системы, реализующей полную виртуализацию, является VMware, пример паравиртуализации — Xen и KVM.
Еще выделяют несколько способов виртуализации:
Виртуализация уровня операционной системы
Особенностью является, что гостевая OS может быть только одна. Примером виртуализации на уровне OS является Linux-VServer:
Контейнеризация
В последнее время все больше используются системы контейнеризации, такие как Docker или Kubernetes. Они позволяют автоматически разворачивать подготовленные образы OS в основном для целей автоматического тестирования и для систем CI. Контейнеры очень похожи на виртуальные машины, но для них не требуется гипервизор, а только соответствующий движок:
Эмуляция оборудования
При этом способе виртуализации VM полностью эмулирует работу определенного оборудования. С одной стороны, это дает возможность, например, на одном процессоре эмулировать другой тип процессора. С другой стороны, понятно, что при этом будет замедление работы в десятки раз. Пример эмулятора — это Bochs.
Эмуляция библиотек OS
И для полноты картины добавлю эмуляцию библиотек. Это способ, при котором эмулируется не вся OS, а только часть. Например, Wine в Linux — эмуляция библиотек для Windows-приложений.
Получается, что мы можем виртуализировать разные системы разными методами. Т.е. видим, что существующими способами и типами виртуализации можно решить множество задач. Возникает логичный вопрос, когда же имеет смысл разворачивать облачную платформу?
Облачные платформы располагаются над набором виртуальных машин, полностью изолируют приложение как от железа, так и от структуры виртуальной среды. Облачные платформы используются для автоматичеcкого и ручного scale in / scale out, запуска / остановки / конфигурирования VM и приложений. Когда имеет смысл оставаться в виртуализации, а когда оставаться в облаке? Концепция следующая: когда всего много — облако, мало — виртуализация:
- Для задач с большим числом виртуальных серверов — лучше облако, для задач с 10-20 виртуалками можно не разворачивать облачную платформу.
- Если требуется постоянно менять конфигурацию ресурсов — облако.
- Много пользователей, данных, клиентов — облако.
Несколько слов про платформы для построения облаков. Информации по ним масса, поэтому приведу только сухую выжимку:
Платформы для построения облаков
Для построения облаков сейчас есть две основные платформы, остальные (Eucalyptus, Cloudstack, Microsoft Azure) занимают несущественную долю.
- VMware — платформа vSphere. VMware собрала огромное количество технологий, ведет разработку собственной версии OpenStack.
- OpenStack — образовался в 2010 году, является комплексом проектов свободного программного обеспечения, который может быть использован для создания инфраструктурных облачных сервисов и облачных хранилищ. Организация OpenStack Foundation (2012) насчитывает более чем 1000 организаций и более 30 000 участников. Основные поставщики стека: Mirantis, RedHat, HP.
Облачные платформы обычно используются заказчиками для реализации следующих задач:
- Работа с часто меняющейся конфигурацией железа, о чем мы говорили выше.
- Предоставление интернет-услуг и другие сетевые приложения. Приложения должны быть «Cloud Ready».
- Telco Cloud (они же SDN & NFV).
- Сбор, хранение, обработка BigData.
Подробно остановиться на этих задачах и на «Cloud Ready» приложениях планирую в одной из следующих статей.
Операторы связи и облака
Интересно понять, есть ли облака у мобильных операторов связи? Предоставляют ли они облачные сервисы? Из открытых источников картина получается следующая:
Билайн
Из облачных услуг предоставляет:
- PaaS: Виртуальный хостинг
- SaaS: Microsoft Office 365
МегаФон
Есть следы в сети, что в 2013 году МегаФон предоставлял IaaS. Сейчас на сайте из похожего можно найти услугу Colocation. Вместе с тем у МегаФона появилась масса специализированных услуг: CDN, M2M, WiFi авторизация, VPN и т.п.
МТС
МТС предоставляет облачные услуги под маркой «Белорусские облачные технологии».
- IaaS в виде доступа к своему «CloudServer»
- PaaS: SiteBuilder
- SaaS: Microsoft Exchange, Microsoft Lync 2013
РТК / Tele2
Tele2 не замечен в попытках продвигать облака, а вот РТК, мобильные активы которого находятся в совместном холдинге с Tele2 (Т2 РТК Холдинг) развернулся серьезно. РТК сделал «Национальную облачную платформу» и теперь на ее базе предоставляет:
- IaaS: Виртуальные ЦОД-ы
- SaaS: 1С, Виртуальный офиc
Из полученных данных можно сделать вывод, что для мобильных операторов связи предоставление облачных сервисов не является приоритетной задачей, они больше сосредоточены на развитии своих сетей и сервисов. К операторам связи нужно обращаться за сетевыми услугами, такими как: виртуальная АТС, виртуальная сеть, М2М и вообще за всем тем, что может предоставляться на SDN & NFV технологиях: виртуальные Firewall, DPI и т.п. А за вычислительными облаками лучше идти к специализированным провайдерам.
Следующие статьи
- SDN & NFV и при чем тут Облака
- Облака как любовь
- Интерфейсы и функциональные блоки NFV
- Платформы для построения облаков и Cloud Ready Applications
- Производители и кейсы использования SDN и NFV
- Готовим NFV в домашних условиях
- BigData и NFV — есть ли связь?