Большинство из нас видели диаграммы архитектуры, такие как
Облако использовалось для обозначения интернета. Со временем значение «Интернет» изменилось, и теперь оно включает ресурсы, обычно воспринимаемые как находящиеся в Интернете, а также средства доступа к ним.
Термин «облачные вычисления» получил широкое распространение всего несколько лет назад. Некоторые поспешили заявить, что этот термин, а не новая концепция, был просто другим названием существующей практики. С другой стороны, этот термин стал достаточно мощным для того, чтобы некоторые существующие веб-приложения волшебным образом превратились в примеры облачных вычислений в действии! Такова сила маркетинга.
Хотя специфика может варьироваться от поставщика к поставщику, вы можете думать о облаке как о согласованном, широкомасштабном, общедоступном наборе вычислительных ресурсов, ресурсов хранения и сетевых ресурсов. Они распределяются через вызовы веб-службы (программируемый интерфейс, доступ к которому осуществляется через HTTP-запросы) и доступны для краткосрочного или долгосрочного использования в обмен на оплату на основе фактических потребленных ресурсов.
Облако по сути является многопользовательской средой, работающей от имени большого числа пользователей одновременно. Таким образом, он отвечает за управление и проверку личности пользователя, отслеживание распределения ресурсов среди пользователей, предоставление эксклюзивного доступа к ресурсам, принадлежащим каждому пользователю, и предотвращение вмешательства одного пользователя в работу других пользователей. Программное обеспечение, которое запускает облако каждого поставщика, сродни операционной системе в этом отношении.
Облачные вычисления основаны на нескольких важных технологиях базового уровня, включая сети TCP-IP, надежную интернет-связь, веб-сервисы в стиле SOAP и REST, обычное оборудование, виртуализацию и системы онлайн-платежей. Детали многих из этих технологий скрыты от глаз; Облако предоставляет разработчикам идеализированное, абстрактное представление о доступных ресурсах.
Центр программируемых данных
Давайте подумаем о традиционной модели распределения ИТ-ресурсов. В следующих параграфах ресурсами могут быть серверы, хранилище, IP-адреса, пропускная способность или даже записи брандмауэра.
Если вы являетесь частью большой компании и нуждаетесь в дополнительных ИТ-ресурсах, вы, вероятно, обнаружите, что вам необходимо пройти через процесс, который включает в себя значительное количество общения между людьми и переговоров. Возможно, вы отправляете электронные письма, создаете онлайн-заказ или билет, или просто берете трубку и обсуждаете свои требования к ресурсам. На другом конце системы есть некоторая ручная работа, чтобы утвердить запрос; найти, выделить и настроить оборудование; иметь дело с кабелями, маршрутизаторами и межсетевыми экранами; и так далее. Это не случайно, что в некоторых организациях этот процесс занимает 12–18 месяцев!
Если вы являетесь предпринимателем, вы звоните своему провайдеру (Internet Service Provider), обсуждаете, договариваетесь, а затем соглашаетесь на увеличение ежемесячной платы и получаете доступ к вашему оборудованию в сроки, измеряемые часами, а иногда и днями.
Пройдя этот процесс, вы, вероятно, взяли на себя долгосрочное обязательство работать и платить за ресурсы. Крупные компании будут взимать с вашего внутреннего центра затрат каждый месяц, и они будут хотеть сохранить оборудование до конца его срока полезного использования. Интернет-провайдеры будут более гибкими, но это редкий Интернет-провайдер, который готов делать масштабные изменения от вашего имени каждый час или два.
Облако выводит человеческий ответ из цикла. Вы (или, скорее, управляющее приложение, работающее от вашего имени) отправляете запросы веб-сервисов («звонки») в облако. Облако затем выполняет следующие шаги для обслуживания вашего запроса:
- Принимает запрос
- Подтверждает, что у вас есть разрешение сделать запрос
- Проверяет запрос на соответствие лимитам аккаунта
- Находит подходящие бесплатные ресурсы
- Присоединяет ресурсы к вашей учетной записи
- Инициализирует ресурсы
- Возвращает идентификаторы ресурсов для удовлетворения запроса
Поскольку разработчики привыкли мыслить объектно-ориентированными терминами, мы могли бы даже думать о облаке конкретного поставщика как об объекте. Действительно, идеализированное определение для облака может выглядеть так в PHP:
class Cloud {
public function getDataCenters() {
⋮
}
public function allocateServer($dataCenter, $count) {
⋮
}
public function releaseServer($server) {
⋮
}
public function allocateDiskStorage($dataCenter, $gb) {
⋮
}
public function releaseDiskStorage($storage) {
⋮
}
⋮
}
Вот как будет использоваться это идеализированное облако. Сначала мы получаем список доступных центров обработки данных ($ d) и сохраняем ссылку на первый в списке ($ d1):
$server = $c->allocateServer($d1, 1);
$storage = $c->allocateDiskStorage($d1, 100);
Важным моментом является то, что теперь вы можете написать программу для инициирования, контроля, мониторинга и хореографии крупномасштабного использования ресурсов в облаке. Решения по масштабированию и разбиению (например, как увеличить емкость сервера или распределить существующую емкость), которые когда-то принимались вручную и нечасто системными администраторами с большим вниманием, теперь могут быть автоматизированы и выполнены с регулярностью.