Что такое облачная инфраструктура
Что такое облачная IT-инфраструктура и почему можно обойтись без своего дата-центра
Что такое обычная инфраструктура для бизнеса? Это стойки с серверами, системные администраторы и куча насущных проблем типа сгоревшей памяти, безопасности и постоянных закупок каких-то штуковин, названия которых сложно запомнить. Всё это — причины для головной боли и финансовых расходов.
Чтобы не терять деньги и сберечь нервы, многие компании переходят на облачную виртуальную IT-инфраструктуру. Разбираемся, как работать с серверами, которые нельзя потрогать руками.
Что такое облачная инфраструктура предприятия
В основе облачных технологий для инфраструктуры лежит простая идея — вместо продажи клиентам физических серверных железок в дата-центрах операторы продают определенный процент вычислительных ресурсов.
Как это работает?
Когда компания использует обычные серверы, часть мощностей всегда простаивает — например, вы готовитесь к худшим сценариям и максимальным нагрузкам, значит, ставите много железа. Так как у вас обычно меньше клиентов, приходится содержать и обслуживать серверы, которые большую часть времени не используются. Если вы, наоборот, поставили меньше оборудования, его придется докупать под рост нагрузки. Это новые расходы, кроме того, подключение нового железа в работу — процесс трудоемкий: нужно физически воткнуть сервер в стойку, всё настроить и за всем следить.
Поэтому придумали внутри одного железного сервера выделять несколько программных, виртуальных серверов. Железка одна, а на самом деле в ней несколько отдельных пространств, в которых находятся разные программы, несвязанные между собой. Можно на одном железном сервере держать данные сразу нескольких клиентов — тогда за аппаратным хозяйством намного проще следить.
Такое распределение ресурсов физических серверов между виртуальными серверными пространствами пришлось по вкусу как провайдерам, так и их клиентам. Тут и использование ресурсов эффективнее, и время запуска клиентских серверов меньше, и расходы на поддержание всего этого в рабочем состоянии ниже.
IaaS: облачная инфраструктура для компании как сервис
У виртуальных серверов есть еще одна особенность, которая драматическим образом изменила то, как мы работаем с инфраструктурой сегодня.
Дело в том, что виртуальные машины, то есть те самые виртуальные серверы, создаются из готовых образов — «слепков» состояний операционной системы и всех приложений внутри нее. Эти образы копируются внутри самого облака, запускаются — и, вуаля, у вас готовый и настроенный сервер!
То есть образ для создания виртуальных машин может содержать в себе не только ОС, но и различные облачные сервисы — например, файловые хранилища. После развертывания такого слепка вы получаете сервер не только с ОС, но и с готовыми к использованию элементами инфраструктуры.
Это значит, вам не нужно тратить время и деньги на установку и конфигурирование ваших сервисов с нуля!
Заботы обо всех таких облачных сервисах ложатся на плечи администраторов облака — именно они обновляют виртуальные базы данных, делают резервные копии облачных файловых хранилищ и следят за безопасностью.
Виды облачных инфраструктур
Развитие рынка IaaS привело к появлению нескольких подвидов облачных инфраструктур:
«Облака были созданы, потому что все задолбались»: в чём отличие облачной инфраструктуры от своих серверов
Публичные облака появились как ответ на мучения компаний, которые поддерживали парк собственных серверов. Слишком много проблем возникало с заказом оборудования, его настройкой и поддержкой, поэтому облачные вычисления быстро стали востребованными — так считает Александр Волочнев, Developer Advocate в DataStax и автор видеокурса по AWS в «Слёрме».
Боли сисадминов и бизнеса, а также возможности, которые принесли им облака, Александр Волочнев подробно описал на вебинаре «Создание эффективной инфраструктуры при помощи облачных решений». Запись вебинара есть на YouTube, здесь публикуем краткую выжимку.
Проблемы поддержки своей инфраструктуры
Поддерживая собственный парк серверов, мучались все: и разработчики, и саппорт, и сисадмины. Сисадминам доставалось больше остальных: серверов не хватало, а новых заказать не давали — бюджета нет; один инженер работал за десятерых; поддержка флота съедала всё время, его не оставалось на развитие; разработчики плохо оценивали нагрузку на инфраструктуру; заказанные с горем пополам серверы ехали по несколько месяцев.
Мучались не только рядовые сотрудники, но и управленцы: постоянно приходилось искать деньги на новое оборудование и одновременно — нормальных людей в команду; админы не развивали инфраструктуру, а только патчили текущий флот; БД работала медленно, клиенты были недовольны; сложно было оценить, сколько железа нужно под новый проект.
При поддержке своего парка серверов компании сталкивались и продолжают сталкиваться с несколькими крупными проблемами.
Медленные изменения. Расширение, масштабирование, добавление мощностей — на всё это нужно время. Оборудование надо заказывать за несколько недель или даже месяцев, оплата вперёд. Можно взять в аренду, но минимальный срок аренды — месяц, даже если сервер нужен на один день. Чаще аренда годовая. Любые операции требуют участия людей, а толковых всегда не хватает.
Высокая стоимость и низкая надёжность. Система либо хрупкая, либо очень дорогая. А часто и хрупкая, и дорогая.
Отсутствие гибкости по географии. Решение проблемы географической распределённости укладывается в схему ДДХ — долго, дорого, хреново. При этом без распределённости не будет отказоустойчивости. Если данные размещены в одном дата-центре, приложение нельзя назвать отказоустойчивым.
Например, AWS работает регионами и зонами доступности. Регион — это несколько центров обработки данных, размещенных вместе. Зона доступности — это конкретный ЦОД, обязательно удалённый от соседей, имеющий независимое подключение к интернету и энергопитанию. Вот это настоящая распределённость и отказоустойчивость.
Отсутствие гибкости по производительности. Свои серверы либо простаивают ¾ времени, либо в час пик не хватает мощностей, и всё лежит.
Режим экономии vs режим производительности: либо отказы в обслуживании на пике, либо переплата
Идеальная ситуация с точки зрения бизнеса — это когда закрыты и пики, и спады, и при этом нет переплат. С точки зрения инженеров — когда при первой необходимости есть возможность поднять новое окружение и грохнуть его, как только отпадёт нужда.
Идеальная ситуация: мощности и затраты на них меняются под задачи бизнеса
Как раз к такой идеальной ситуации и стремились в Amazon, где придумали облака. Для маркетплейса характерна сезонность нагрузок: ночью потише, днем потяжелее, плюс чёрная пятница и пик перед Рождеством. Площадка либо падает в пиковые нагрузки и теряет клиентов, либо весь год платит за инфраструктуру столько, сколько зарабатывает на пике. Со временем нашли выход — стали сдавать простаивающее железо в аренду, чтобы компенсировать расходы.
Так появился Amazon Web Services (AWS) и такой вид услуг, как облака.
Так облака появились, а востребованы они стали, потому что все — в буквальном смысле — задолбались.
Что такое облако
Предположим, компании нужно организовать работу с данными, и руководство решает создать собственную инфраструктуру. Компания строит свой ЦОД или арендует место в коммерческом дата-центре. Закупает и устанавливает серверы. Настраивает хранилища и сети. Далее занимается виртуализацией, установкой операционных систем, баз данных и прочего софта, необходимого для работы конечных приложений.
Теперь представим, что вместо этого руководство выбирает IaaS (Infrastructure as a Service, инфраструктура как услуга). В этом случае часть задач по организации инфраструктуры забирает облачный провайдер. ЦОД уже есть, он построен и отвечает самым высоким требованиям надёжности (по крайней мере, в случае с крупными провайдерами вроде AWS или Google Cloud). Хранилища, сети и виртуализацию тоже настраивает провайдер.
Таким образом компании остаётся только подготовка окружения для работы с данными и их администрирование. У инженеров освобождается время на развитие, улучшение, прокачку, оптимизацию. Они начинают больше участвовать в процессе разработки, появляется DevOps.
Распределение по обязанностям
Со временем облачные провайдеры развивали услуги и в дополнение к IaaS появились такие подходы, как Platform as a Service (платформа как сервис) и Software as a Service (приложение как сервис).
Для примера предположим, что в компании разработали приложение и хотят его запустить. В случае с IaaS, нужно войти в веб-интерфейс AWS, создать виртуальную машину. Операционная система уже будет установлена, но настраивать её придётся самостоятельно. Самим придётся устанавливать необходимый софт и разбираться в работе с данными.
В случае с PaaS всё необходимое уже установлено, остаётся только управлять своим приложением и данными. Уже легче, и админов для поддержки нужно меньше. PaaS подойдет не для всех, но точно будет полезен стартапам, которым надо быстро развернуться и некогда думать о железе.
И наконец, Software as a Service — приложение как сервис, когда вы просто используете какую-то услугу и не заботитесь ни о чём.
Дополнительные возможности
Особенности облака: «чёртова магия!»
Рассмотрим ключевые особенности облаков. В примерах часто упоминается Amazon Web Services (AWS), потому что с этой компании всё началось, и сейчас они лидеры на рынке облачных услуг.
On-Demand Self-Service — самообслуживание. Возможность по требованию, ни к кому не обращаясь, получить всё необходимое. Без телефонных звонков, без пересылки документов почтой, без ожидания в несколько месяцев — сразу.
Fast Flexibility (0 → 100 → 10) — «быстрая» гибкость. Сегодня компания не арендует ни одного сервера, завтра возьмёт сто машин, а послезавтра — десять. Очень быстро и гибко.
Resource Pooling — шаринг ресурсов. На одном железном сервере могут храниться данные разных компаний: профили нагрузки не совпадают, и они друг другу не мешают, зато оба платят меньше, чем за выделенный сервер — концепция многоквартирного дома. Однако не все любят многоквартирные дома. Тогда можно сказать: «хочу выделенный сервер», и вы это получите. Естественно, цена будет выше.
Elastic Scalability — гибкая масштабируемость. Сегодня нужно 10 серверов, завтра понадобится 100, послезавтра снова 10. С облаками не надо думать, где взять столько. Можно просто использовать и закрывать, когда необходимость отпадёт.
Measured Service — измеряемый сервис. Потребление ресурсов измеряется до бита и микросекунды, чтобы пользователь действительно оплачивал только то, что было потреблено. AWS первыми ввели посекундную тарификацию серверов.
Pay as you Go — оплата по мере потребления. Большинство облачных провайдеров берут оплату постфактум. Но если пользователь знает, что сервер будет нужен и завтра, и через год, он может платить и по-другому: сразу за весь период или по частям. За это предусмотрена скидка.
В AWS есть три способа получить сервер: on-demand — оплата по факту потребления; reserved — оплата за год вперёд, целиком или частями; spot instances — оплата по типу аукциона. В последнем случае пользователи устанавливают цену, которую готовы платить за Spot Instance, и сервер уходит к тому, кто заплатил больше. Система не самая надёжная, зато скидки могут достигать 90%. Spot Instance подходит для отложенного выполнения задач, когда скорость обработки не так важна, как стоимость.
На облаках можно экономить, но это не значит, что вы точно на них сэкономите. Во-первых, у облачных провайдеров бывают очень странные системы оплаты, в которых легко запутаться. Во-вторых, если забыть вырубить флот серверов, который был не нужен с четверга по вторник, то за него придётся заплатить. При плохом стечении обстоятельств в облаке можно сжечь гораздо больше денег, чем вы тратили в собственных ДЦ. Имейте это в виду.
Global Availability / Distribution — глобальная доступность. AWS имеет 22 региона и 77 центров обработки данных по всему миру, плюс около 200 точек присутствия. Похожая инфраструктура у Azure и Google Cloud. Благодаря этому клиенты облачных сервисов могут использовать свои приложения, управлять своими данными глобально. Если компания работает в одном регионе, а клиенты живут в другом, тогда можно настроить всё так, чтобы подключение от клиента шло сначала во внутреннюю сеть AWS и оттуда уже на высоких скоростях попадало в регион компании.
Programmable Access / Management — программный доступ и программное управление. Раньше для заказа серверов приходилось звонить поставщикам, объяснять свои задачи, ждать коммерческое предложение, опять звонить… Связаться с AWS по телефону может только очень крупный клиент. Время стоит дорого, поэтому всё делается через веб-интерфейс, интерфейс командной строки и программный менеджмент.
Если нужно оптимизировать мощности серверов в зависимости от трафика, то достаточно один раз настроить AutoScaling Group — группу автоматического масштабирования для серверов, мониторинг и триггеры. После этого AWS будет сам создавать и удалять серверы в зависимости от нагрузки. Клиент получает масштабирование с минимальной переплатой и полностью автоматическим управлением.
«Программный доступ, программирование вашей инфраструктуры — это реально чертова магия, я это просто обожаю!»
AWS предлагает около 250 служб для самых разных задач. Если говорить про инфраструктуру, то здесь есть и базы данных, и сетевые хранилища, и вообще всё. Нет такой отрасли, для которой они еще что-то не предложили. Посмотрите на скриншот, в левом нижнем углу есть вкладка «Satellite» — управление спутниками. То есть при желании в AWS можно работать со спутниками!
Услуги AWS
Фактически в AWS есть всё, что может потребоваться в разработке. Хотите организовать работу микросервисов — пожалуйста, на базе AWS существует целый фреймворк. В современных приложениях 99% кода — это повторение уже написанного. Чтобы не повторяться, можно прийти в AWS и пользоваться.
Облачные провайдеры
AWS, Microsoft Azure и Google Cloud — самые популярные облачные провайдеры. Но помимо них существует более десяти крупных поставщиков облачных услуг.
Amazon высадились первыми, и они продолжают занимать около половины рынка. Microsoft Azure присоединились с большим опозданием, но сейчас каждый пятый клиент пользуется именно ими. Google Cloud Platform немножко от них отстают, но в принципе незначительно.
Распределение облачных провайдеров на рынке
Кто из них лучше? Я не буду отвечать на этот вопрос, потому что для ответа нужно учесть столько факторов и нюансов, что не хватит двадцати вебинаров и двадцати специалистов (в конце концов специалисты передерутся и к одному решению не придут). Google Cloud считается дешевле Amazon, и это логично: если ты приходишь на рынок, который уже занят, то с высокими ценами шансов у тебя не будет. Насколько я знаю, сейчас Google Cloud самое быстро растущее облако.
Некоторые компании предпочитают использовать Hybrid Cloud и Multicloud. Multicloud подразумевает, что ресурсы рассредоточены по нескольким облакам. Его организуют, чтобы сэкономить и обеспечить отказоустойчивость. Если один тип обработки дешевле в Google Cloud, второй тип на Amazon, то распределять данные выгоднее, чем держать в одном сервисе. Хотя надо учитывать, что передача больших объемов данных между облаками может стоить дорого.
Для отказоустойчивости дублируют данные в хранилищах двух провайдеров, чтобы при падении одного второй подстраховал. Но есть вероятность, что подобное дублирование будет стоить гораздо дороже, чем потери в случае простоя.
Как попробовать
У всех поставщиков есть бесплатный доступ, в рамках которого можно попробовать все услуги. Создать большие хранилища не получится, но для теста бесплатных мощностей точно хватит.
На курсе по администрированию облачных систем мы рассказываем о принципах работы в AWS и учим развёртывать системы с автоматическим масштабированием. Видеокурс вышел в январе 2021. Он будет полезен разработчикам, DevOps, сисадминам. Архитекторам и техническому руководству тоже пригодится: чтобы сэкономить время, можно пропустить практику, а сосредоточиться на теории и демонстрациях. Они помогут понять, как работает AWS и как его использовать в компании.
Простыми словами: Разбираемся с «облачными» услугами
Раньше, чтобы развернуть какое-либо приложение, приходилось покупать и настраивать собственные физические серверы. Такой подход обладал большим количеством недостатков, например, если для нормальной работы приложения ему достаточно «полтора сервера», платить все равно приходилось за два – расходы на содержание и обслуживание инфраструктуры оказывались неоправданно высокими.
Сегодня у нас есть такие сервисы, которые позволяют настроить виртуальный сервер и хранилище данных под собственные нужды. В этом случае расходы зависят от необходимого количества вычислительных (и других) ресурсов – вы платите только за то, что используете.
Корни облачных вычислений восходят к высокопроизводительным вычислениям. В гонке стран по наращиванию вычислительной мощности приняли участие даже такие крупные компании, как IBM и HP.
«Однако инженеры и исследователи быстро поняли, что такой подход плохо масштабируется, – говорит Прадип Падала (Pradeep Padala), учредитель ContainerX. – Поэтому начались поиски альтернативных способов проведения вычислений: начали разрабатываться распределенные системы, объединяющие в себе мощности огромного количества компьютеров».
Появились такие академические проекты, как Condor – это распределённая сеть компьютеров, развернутая в Висконсинском университете в Мадисоне. На сегодняшний день там установлено 350 настольных UNIX-станций, которые предоставляют доступ для работы пользователям со всего мира. Были и другие проекты, например distributed.net и SETI@home – на тот момент эта идея была инновационной, да и заниматься поиском внеземных цивилизаций тоже достаточно интересно.
Затем появился БАК от ЦЕРН, который породил бессчётное количество исследовательских проектов, на которые уходили миллиарды долларов. Как часть всего этого движения в моду вошли грид-вычисления. Определение грид-вычислений очень близко к тому, что мы называем «вычисления как услуга». В качестве примера можно привести Globus Toolkit.
Одновременно со всем этим, в технической индустрии, VMware и Xen занимались популяризацией виртуализации, которая позволяла запускать сразу несколько машин на одной физической машине. Это преобразило IT-индустрию, а простота использования привлекла внимание стартапов, которым было сложно покупать и содержать свое собственное оборудование.
Ниже изображена классическая модель компьютерных вычислений. Доступ к серверам, приложениям и сервисам осуществляется по сети.
Обратившись к облачным вычислениям, организация получает возможность настраивать инфраструктуру по своему усмотрению, затрачивая на это меньшее количество средств и усилий. Иными словами, эта модель направлена на повышение доступности вычислительных ресурсов и сочетает в себе пять характеристик: самообслуживание по требованию, широкая доступность через Интернет, объединение ресурсов в пул, способность к быстрой адаптации и измеримость.
Самообслуживание означает, что потребители должны иметь возможность без труда и по собственному желанию задействовать (или наоборот отключить) дополнительные вычислительные мощности, не контактируя с персоналом и техниками на стороне поставщика услуг.
Широкая доступность означает, что все возможности, предлагаемые поставщиком доступны через сеть. Работа с ними осуществляется на основе стандартных механизмов – это дает возможность использовать различные клиентские платформы, например мобильные телефоны, планшетные и персональные компьютеры.
Свои вычислительные ресурсы поставщик объединяет в пул, чтобы их можно было динамически перераспределять в соответствии с нуждами пользователей – это так называемый принцип множественной аренды (Multi-tenancy). Возникает ощущение независимости от местоположения, когда заказчик не знает, где именно находятся ресурсы, но может определять их расположение на абстрактном уровне (страна или регион).
Способность к быстрой адаптации – это возможность быстро масштабировать ресурсы под нужды заказчика. С точки зрения клиента, предлагаемые ему возможности выглядят неограниченными, которыми он может воспользоваться в любой момент.
Облачные системы автоматически контролируют и оптимизируют использование ресурсов. Это осуществляется путем измерения различных параметров (размер хранилища данных, вычислительная мощность, пропускная способность). Таким образом, как поставщик, так и потребитель получают полную информацию об объеме оказанных/потребленных услуг.
Что касается стоимости услуг, то процесс их формирования может быть достаточно сложным, а ценник изменяться от поставщика к поставщику. Джейсон Лемкин (Jason M. Lemkin), партнер SaaStr Ventures, считает, что если ваш продукт лучше, то не стоит стесняться завышать цену.
Если вы вводите какую-нибудь новую функцию, которая способна кардинально изменить пользовательский опыт, то нет ничего плохого в том, если вы постараетесь извлечь из этого максимальную выгоду. «Если ваш продукт в пять раз серьезнее, чем у конкурента, то вы можете просить за него в 5 раз больше», – утверждает Джейсон.
Помимо характеристик выделяют еще три модели обслуживания: программное обеспечение как услуга (SaaS), платформа как услуга (PaaS) и инфраструктура как услуга (IaaS). Отличаются они степенью предоставляемого контроля.
В случае IaaS клиент получает возможность использовать облачную инфраструктуру по своему усмотрению и самостоятельно управлять ресурсами обработки и хранения, а также сетями. «Пользователь может создать виртуальную инфраструктуру и изменить её в любой момент», – говорит консультант Эван Лейт (Ewan Leith). Аутсорсинг стал популярным еще в те времена, когда компании хотели использовать компьютеры, но не хотели нести издержки по их содержанию и обслуживанию. По этой причине мы сегодня имеем технологию виртуализации.
Виртуализация – это предоставление набора вычислительных ресурсов или их логического объединения, абстрагированное от аппаратной реализации, то есть одна физическая машина может поддерживать несколько виртуальных. Таким образом, физические ресурсы объединяются в пул, а гипервизор выделяет их виртуальным машинам, на которых запускаются гостевые операционные системы.
Вам не потребуется покупать оборудование, не потребуется строить собственный дата-центр, не потребуется нанимать системных инженеров, которые отвечают за обслуживание техники на физическом уровне. Данную часть вы отдаете на обслуживание облачному провайдеру. В вашей зоне ответственности остается управление операционной системой, установкой и настройкой приложений.
Второй слой – это платформа как услуга или PaaS. При переходе от модели IaaS к модели PaaS (Platform as a Service) дополнительно на сторону облачного провайдера передается управление операционными системами и базами данных. В этом случае клиентам не приходится думать о дисковом пространстве, которое необходимо выделить, и распределении нагрузки между серверами. Примерами PaaS являются Google App Engine, Heroku и Force.com.
Программное обеспечение как услуга (SaaS) – последний уровень облачных вычислений, обычно дополняющий PaaS. Это программное обеспечение для конечного пользователя, например, обеспечивающее работу с электронной почтой или текстом. Очень часто оно предоставляется по подписке. Примерами SaaS могут служить Google Apps, Salesforce.com и Business Productivity Online Suite от Microsoft.
Для варианта SaaS на сторону облачного провайдера дополнительно передаются вопросы установки и настройки приложений, мониторинга, резервного копирования, защищенной передачи в Интернет – то есть все задачи. Если вы решили воспользоваться этой моделью, то вам даже не обязательно держать в команде технического специалиста, поскольку всем управляет поставщик услуг.
Существует несколько моделей развертывания: частное облако, публичное облако, общественное облако, гибридное облако.
Частное облако (private cloud) – это инфраструктура, которая располагается в пределах одной организации. Данная модель развертывания создана с целью удовлетворить потребности внутреннего рабочего персонала, обеспечивая высокий уровень безопасности данных. Частное облако создается, например, для обеспечения какой-либо дочерней компании сервисом корпоративной почты.
Публичное облако (public cloud) – это инфраструктура, предназначенная для свободного использования широкой публикой. Этот тип облака может находиться в собственности, например, коммерческих, научных и правительственных организаций.
Однако слово «публичное» совсем не означает, что данные пользователей доступны абсолютно всем – здесь по-прежнему реализуются механизмы безопасности для контроля доступа. Основным достоинством использования публичного облака является простота настройки и низкая стоимость. Поставщик услуги делает всю работу, необходимую для создания облака, а потребитель лишь настраивает необходимое количество ресурсов.
Общественное облако (community cloud) имеет схожие черты с частным и публичным облаком. Это вид инфраструктуры, предназначенный для использования конкретным сообществом потребителей из организаций, имеющих общие задачи. Общественное облако может управляться организациями третьей стороны и существовать как внутри, так и вне юрисдикции владельца. В этом случае ответственность по содержанию облака перекладывается с плеч организаций-членов на все сообщество целиком.
Гибридным же облаком (hybrid cloud) называют композицию из двух или более типов облаков, которые связываются между собой стандартизированными технологиями передачи данных. Очень часто компании запускают бизнес-критические приложения в приватном облаке, в то время как остальные приложения работают в публичном облаке.