Опубликован: 02.08.2013 | Доступ: свободный | Студентов: 468 / 15 | Длительность: 18:38:00
Специальности: Программист
Лекция 25:

Основы работы с облачными сервисами

Аннотация: Данная лекция посвящена основам работы с облачными сервисами на примере Windows Azure.

Цель работы: Ознакомиться с основными положениями, касающимися работы с облачными сервисами, получить начальные сведения о Windows Azure и о работе с этим сервисом

Понятие облачных служб

В недалёком прошлом у разработчика, который нуждался в некоем сервисе, который он планировал использовать в качестве серверной части своего приложения, было всего две альтернативы.

Первая заключалась в том, чтобы самостоятельно поддерживать необходимую для этого инфраструктуру. Вторая заключалась в аренде физического сервера (или в различных вариантах такой аренды, когда можно арендовать не физический сервер, а получить некоторые фиксированные услуги).

Для поддержки собственной серверной инфраструктуры разработчику нужно позаботиться об оборудовании, об устойчивом интернет-соединении, о программном обеспечении. При этом на него возлагается задача поддержания работоспособности оборудования. Если речь идёт о небольшом проекте, то, как это всегда бывает с подобными проектами, у разработчика не может быть уверенности в том, что проект привлечет достаточное внимание пользователей для того, чтобы хотя бы окупить вложения в оборудование. В то же время, если окажется так, что проект привлекает большое внимание, возможностей того оборудования, которое использовалось изначально, может не хватить. Придётся приобретать дополнительный сервер или сервера. Здесь же, при условии большой востребованности проекта, возникает проблема масштабирования нагрузки. Если работа пользователей вызывает серьезные скачки нагрузки лишь в определенные периоды (например, по выходным, или при возникновении определенных событий, или по любым другим причинам), для того, чтобы обслужить всех желающих может понадобиться, например, еще один резервный сервер. Собственная инфраструктура – это вполне приемлемое решение, но дорогое, вызывающее необходимость решения множества вопросов, не имеющих к разработке прямого отношения.

Если речь идёт, например, об аренде выделенного сервера, разработчик оказывается избавленным от части проблем, однако, например, вопросы, касающиеся масштабирования нагрузки остаются. Как быть с периодическим повышением интереса пользователей к приложению, который вызывает повышение нагрузки на его серверную часть? Ответ заключается, например, в аренде дополнительного сервера, который некоторую часть времени будет простаивать, здесь возможны и ситуации, когда арендованной мощности попросту не хватит на пике нагрузки – либо придётся мириться с тем, что некотороые пользователи столкнуться с медленной работой приложения, либо – расширять арендованную инфраструктуру. В случае с арендой серверов такое расширение обычно реализовано не достаточно гибко. Например, технически можно организовать аренду сервера, например, на несколько дней или часов, но на практике сервера арендуются, например, с периодичностью в месяц, что означает нерациональное использование средств. То же самое касается и других подобных схем работы.

В последние годы чрезвычайно развились технологии, которые сделали возможным появление принципиально иного способа организации серверных служб приложений. Речь идёт о модели облачных вычислений (cloud computing) . Среди таких технологий можно отметить высокоскоростной доступ в Интернет, хранилища данных большого объема, виртуализацию. "Облако" скрывает от потребителя (в нашем случае речь идёт, преимущественно, о разработчике) технические детали реализации службы, оно предоставляет ему гибкие возможности масштабирования нагрузки, гибкие схемы оплаты услуг.

Пожалуй, каждый, кто пользовался современными устройствами, работал в Интернете, разрабатывал приложения, прямо или косвенно соприкасался с облачными сервисами. Например, с облачным хранилищем SkyDrive. Фактически, этот сервис тесно интегрирован с учетной записью Microsoft, которая используется на смартфонах под управлением Windows Phone, доступ к хранилищу можно получить, воспользовавшись веб-браузером на настольном ПК, то же самое хранилище доступно с использованием специальных приложений-клиентов на различных платформах, таких, как Windows, OS X, iPhone, iPad. Как только в хранилище добавлен новый файл, независимо от того, с какого устройства он был добавлен, он становится доступным в облаке, а значит – работать с ним можно, подключившись к хранилищу с использованием любого способа доступа к нему.

Существует несколько общепринятых моделей обслуживания, используемых в облачных средах (их попросту называют "облаками").

Для начала нужно отметить, что облачную службу вполне может развернуть организация-разработчик (на самом деле, это может быть любая организация, которая выбрала подобную схему организации ИТ-инфраструктуры), такое облако называется частным (private cloud). Если некоторая организация поддерживает облачную инфраструктуру и даёт другим организациям за определенную плату доступ к ней, речь идёт о публичном облаке (public cloud). Возможны и комбинации этих двух основных подходов к построению облачных инфраструктур.

Если же говорить о моделях обслуживания, то обычно выделяют следующие модели.

  • Программное обеспечение как услуга (SaaS, Software as a Service). При использовании данной модели обслуживания потребителю даётся доступ к прикладному программному обеспечению, которое работает в облачной инфраструктуре провайдера. Такое программное обеспечение доступно через Интернет с использованием различных клиентских устройств. Например для работы с приложениями развернутыми в облаке, может быть достаточно обычного веб-браузера.
  • Платформа как услуга (PaaS, Platform as a Service). В этой модели обслуживания потребитель может разместить в облачной инфраструктуре собственные приложения (приобретенные или разработанные самостоятельно), может пользоваться средствами разработки программного обеспечения, системами управления базами данных. Такая модель предоставляет потребителю больший уровень контроля, нежели модель SaaS, хотя облачный провайдер всё равно выполняет большую часть задач по управлению инфраструктурой облака.
  • Инфраструктура как услуга (IaaS, Infrastructure as a Service). При таком подходе потребителю предоставляется максимальный уровень контроля над облачной инфраструктурой, хотя провайдер по-прежнему выполняет основную часть задач по поддержке виртуальной и физической инфраструктуры облака. Фактически, при такой модели обслуживания, речь идёт об аренде виртуальных серверов с возможностью быстрого масштабирования их вычислительной мощности. Потребитель, при такой модели обслуживания, может, например, устанавливать операционные системы на выделенные ему виртуальные машины, управлять инфраструктурой виртуальных сетей и хранилищ данных.

Существуют и другие модели облачных служб, например, сеть как услуга (NaaS, Network as a Service) –по такой модели потребителю предоставляются сетевая инфраструктура и сетевые службы, расположенные в облаке.

Разработчики программного обеспечения могут использовать облачные сервисы для самых разных целей. Например, разработчик может создать приложение, имеющее облачную серверную часть (cloud backend). Приложение может быть рассчитано на различные платформы, при этом облачная серверная часть остаётся одной и той же. В облако может быть вынесен функционал различного объема – от минимального, необходимого, например, для резервного копирования данных пользователя, до полной реализации приложения. Вышеупомянутый сервис SkyDrive вполне может справиться с задачей резервного копирования данных, при этом от разработчика под Windows Phone 8 требуется минимум усилий, так как то, что пользователь смог установить приложение разработчика на устройство, автоматически означает наличие у пользователя учетной записи Microsoft и возможность работы со SkyDrive.

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

  1. Зарегистрироваться на выбранном сервисе и выбрать план обслуживания, подходящий для его целей. Обычно разработчик может рассчитывать на некоторый пробный период, который позволяет, не неся затрат, ознакомиться с возможностями сервиса, протестировать его.
  2. Подключить услуги, которые требуются для достижения целей использования сервиса. Например, если речь идёт о хранении данных, разработчику может понадобиться создать на сервере базу данных, зарезервировать некий объем дискового пространства, который, по мнению разработчика, понадобится для хранения данных приложения. Так же разработчику нужен некий программный код, который будет исполняться на сервере, обслуживая запросы приложений-клиентов на работу с данными.
  3. Включить в приложение механизмы для взаимодействия с облачной службой хранения данных.

Один из существующих сегодня облачных сервисов, предоставляющих услуги по моделям PaaS и IaaS является Microsoft Windows Azure.