гшдготовиа специалистов
программы сЕучання
Сафонов Владимир Олегович УДК 004 422 6' 004 43
ОБЛАЧИЫШ BЫIЧИCЛEHИЯ, ПPИHЦИПЫ ИХ ПPEПOДABAHИЯ И ИHTEPHET-KУPC ПО CИCTEME MICROSOFT WINDOWS AZURE
Аннотация
В статье рассмотрены возможности облачных вычислений - современного подхода к вычислениям, базирующегося на использовании Web-сервисов и центров обработки данных. Описаны принципы преподавания облачных вычислений. Представлен Интернет-курс автора по наиболее распространенной системе облачных вычислений Microsoft Windows Azure.
Ключевые слова: облачные вычисления, Microsoft Windows Azure.
ВВЕДЕНИЕ.
ПРИНЦИПЫ, ПРОБЛЕМЫ
И ПЕРСПЕКТИВЫ ОБЛАЧНЫХ ВЫЧИСЛЕНИЙ
Облачные вычисления - весьма популярный и бурно развивающийся в настоящее время принципиально новыш метод использования компьютерных ресурсов, при котором клиент, работая через Web-браузер, получает доступ через Web ко всем необходимым ресурсам для вычислений, для хранения данных и для сетевого взаимодействия. Вычислительные ресурсы фактически размещаются на мощных компьютерах центра обработки данных какой-либо фирмы, например, Microsoft, - поставщика облака. Облачные вычисления, по сути дела, - это коренное изменение парадигмы использования и разработки программного обеспечения.
В течение всей прежней истории ИТ разработка программы и ее использование под© Сафонов В.О., 2012
разумевали некоторый (локальный) компьютер, на котором после разработки инсталлируется и используется программа.
Затем сложились методы и были разработаны инструменты для работы в локальных сетях.
В облачных вычислениях все иначе. Программа разрабатывается на некотором компьютере, а затем, если разработчик программы имеет на то соответствующие полномочия, - публикуется в облаке, реализованном как совокупность специализированных взаимосвязанных Web-сайтов (страниц), функционирующих на компьютерах центра обработки данных, поддерживающего облако. Таким образом, главными элементами облачных вычислений являются расширяемые наборы программных сервисов, доступные клиентам через Web. При этом пользователь либо бесплатно использует сервисы облака, либо за определенную абонентскую плату подписывается на использование облачных услуг. Все, что требуется от пользователя, -
это иметь компьютер (или мобильное вычислительное устройство), на котором инсталлирован Web-браузер и с которого имеется выход в Интернет. Все остальное обеспечит облако. Заманчиво, не правда ли?
Пользователям доступно большое число платформ для облачных вычислений, разработанных практически всеми ведущими ИТ-фирмами (Microsoft, IBM, HP, Oracle и др.). Среди них особое место занимает платформа облачных вычислений Microsoft Windows Azure, которой посвящен Интернет-курс автора [1].
Облачные вычисления, можно сказать, «вошли в моду». Все большее число программ переносятся их разработчиками в облако и становятся широко доступными в виде облачных сервисов. Фирмы и программисты-разработчики ищут финансирование для своих разработок под лозунгом облачных вычислений. Все это вполне естественно. Это - этап роста. Курс [1] - результат научно-педагогического анализа концепции облачных вычислений и платформы Windows Azure. Желаю читателям успешного использования облачных вычислений и успешной разработки программ для них, в первую очередь, - для платформы Microsoft Windows Azure. Прежде всего, это очень интересно.
Концепция облака используется как метафора в литературе по ИТ уже много лет, с момента появления компьютерных сетей и, в особенности, Интернета. Облако - метафорический образ, обозначающий совокупность сетевых ресурсов, доступных через Интернет. Однако подход облачных вычислений внес принципиально новые возможности в ставшую привычной за несколько десятков лет картину организации вычислений - один или несколько клиентских компьютеров, соединенных в локальную сеть и при необходимости «выходящих» в Интернет.
Облачные вычисления - это перенос всех вычислений и хранение всех данных в Интернет (то есть в облако) и взаимодействие клиентов облака через Web-интерфейс облачных приложений. Такой подход к организации вычислений дает огромные, небывалые возможности клиентам, независимо
от мощности и класса их компьютеров (настольные компьютеры, ноутбуки, мобильные устройства и др.). При этом облачные вычисления обеспечивают доступ к облаку миллионам пользователей в каждый момент. Однако подобный подход создает и массу проблем и вызывает целый ряд вопросов у пользователей: прежде всего, это безопасность пользовательских данных (у пользователей нет уверенности в том, что сохранится конфиденциальность их данных и программ, хранящихся на «чужих» компьютерах) и невысокая скорость соединения с Интернетом. Последнее особенно существенно для российских пользователей. Далеко не каждому доступен Интернет 4G со скоростью доступа 10-100 Мбит/с. При скорости же соединения порядка 5-10 килобайт в секунду (характерной для протокола GPRS, используемого в мобильных устройствах) пользоваться облачными вычислениями практически нереально - слишком велико время ожидания.
Чтобы лучше представлять принципиальные архитектурные отличия облачных вычислений, рассмотрим некоторые основные понятия архитектуры современного программного обеспечения.
Клиент (client) - это пользователь и (или) компьютер, использующий какие-либо программные сервисы.
Сервер (server) - это компьютер или центр обработки данных, предоставляющий программные сервисы.
Тонкий клиент (thin client) - это клиент Web-сервиса с минимальным пользовательским интерфейсом, не имеющий состояния, сеанса, полнофункционального GUI и общающийся с Web-сервисом только через браузер и протокол HTTP посредством отправки HTTP-запросов и получения HTML-страниц.
Rich client (полнофункционалъный клиент ) - это клиент Web-сервиса, имеющий полнофункциональный GUI и общающийся с Web-сервисом через слой промежуточного программного интерфейса (middleware), обеспечивающий его функциональность; примеры ПО для поддержки rich clients: Microsoft Silverlight, Oracle JavaFX и т.д.
Слой (layer) - это крупная независимая компонента архитектуры ПО. Различают горизонтальные слои (иначе называемые уровнями абстракции) и вертикальные слои (срезы).
Уровень абстракции (abstraction layer), или «горизонтальный слой» номер N - это совокупность модулей, реализация которых использует только модули уровня N - 1 (N > 0). Нулевой уровень абстракции образует аппаратура или базовые библиотеки (API). Концепция принадлежит Э. Дейкстре и сформулирована в конце 1960-х гг. в ходе разработки операционной системы THE (Технического университета Эйндховена).
Вертикальный слой, срез (в некоторых технологиях - аспект) - это совокупность рассредоточенных фрагментов кода, реализующих (сквозную) функциональность, например, проверку безопасности. Авторы концепции: проф. А.Л. Фуксман (Ростовский университет, 1979 - технология вертикального слоения; G. Kiczales (Xerox PARC, ас-пектно-ориентированное программирование и система AspectJ).
Промежуточное программное обеспечение (middleware) - совокупность слоев ПО, лежащих между клиентом и сервером и обеспечивающих их взаимодействие, например, поддержку сетевых коммуникационных протоколов
Ярус (tier) - слой программного обеспечения, реализующий какую-либо независимую часть его архитектуры; например: business tier - реализация бизнес-логики; Web tier - реализация взаимодействия с Web. Если используется понятие tier, то архитектура ПО настолько сложна, что двумерная модель (горизонтальный слой/ вертикальный слой) ее полностью не описывает. Tier может находиться и использоваться в любой компоненте архитектуры ПО.
Многоярусная архитектура (multi-tier architecture) - архитектура ПО, при которой презентация результатов, обработка и управление данными реализованы как отдельные процессы. Пример: Использование middleware для взаимодействия с сервером и СУБД для взаимодействия с данными.
Многоклиентская архитектура (multi-tenant architecture) - это архитектура клиент-серверного ПО, при которой один экземпляр серверного ПО, исполняемый на сервере, обслуживает несколько клиентов (tenants - букв. клиентыг, арендаторыг). Пример: Web-сервис.
С точки зрения рассмотренных концепций облачныге вычисления соответствуют принципам multi-tiered и multi-tenant architecture.
С точки зрения реализации, система облачных вычислений основана на стандартизованных Web-сервисах. Например, реализация системы Microsoft Windows Azure основана на платформе .NET и ее Web-сервисах подсистемы Windows Communication Foundation (WCF).
ПРИНЦИПЫ ПРЕПОДАВАНИЯ ОБЛАЧНЫХ ВЫ1ЧИСЛЕНИЙ
И ИНТЕРНЕТ-КУРС ПО СИСТЕМЕ MICROSOFT WINDOWS AZURE
Основы облачных вычислений преподаются автором на математико-механическом факультете СПбГУ в рамках курса «Архитектуры и модели программ и знаний» для студентов 4 курса. В курсе облачным вычислениям посвящена одна лекция. Вводный материал по облачным вычислениям и системе Windows Azure включен также в курс автора по операционным системам и сетям [2]. Кстати, курс [2] в настоящее время имеет более 1500 онлайн-студентов на сайте ИНТУИТ.РУ и является одним из лидеров по числу скачиваний с академического сайта Microsoft Faculty Connection.
Курс [1] по системе Windows Azure - это первый опыт автора по разработке курса, посвященного полностью облачным вычислениям. Данный курс предназначен для студентов старших курсов (graduate students) в области ИТ. Он знакомит студентов с концепциями и инструментами облачных вычислений, архитектурой, возможностями и методами применения наиболее развитой платформы облачных вычислений Microsoft Windows Azure.
В настоящее время уже разработано большое число курсов и других учебных материалов по Windows Azure как на русском, так и на английском языках. Однако большинство из них носит либо начально-ознакомительный, либо рекламно-коммер-ческий характер и имеет целью, соответственно, либо обучение новичков основным понятиям облачных вычислений и платформы Azure, либо ее рекламу и оценку способов ее коммерческого использования (для функционирования предприятий, бизнеса и др.). Целью данного курса является более глубокое научное изложение и анализ платформы Azure, которым в учебных материалах других авторов не уделено достаточного внимания: анализ архитектуры платформы Azure, обучение фундаментальным технологиям и принципам, на которых она базируется (.NET, WCF и др.), обучение архитектуре платформы Azure, которая, даже с учетом усложнения современных программных архитектур, является достаточно сложной для понимания, изучения и использования, обучение методам практического применения платформы Azure для решения различных классов задач (хранение и использование данных, реализация бизнес-логики, коммуникация, научные вычисления и др.).
Курс создавался не только на основе большого предшествующего опыта автора в области ИТ, но и в процессе активного практического освоения автором платформы Windows Azure. В частности, в курсе использовано несколько сотен иллюстраций (архитектурных схем и скриншотов), что говорит о его практической направленности.
Приведем полностью программу курса [1]. Курс состоит из 16 лекций и 4 лабораторных работ и рассчитан на один учебный семестр.
Лекция 1. Обзор архитектуры современных программных систем.
Лекция 2. Понятие об облачных вычислениях. Обзор платформ облачных вычислений.
Лекция 3. Основные концепции и архитектура платформы Microsoft Windows Azure.
Лекция 4. Базовые технологии, используемые для реализации платформы Microsoft Windows Azure.
Лекция 5. Windows Azure Fabric.
Лекция 6. Windows Azure Storage.
Лекция 7. Windows Azure Compute.
Лекция 8. Web-сервисы в Windows Azure
Лекция 9. SQL Azure.
Лекция 10. Инструменты Windows Azure.
Лекция 11. Основы практического использования Windows Azure.
Лекция 12. Разработка приложений для Windows Azure.
Лекция 13. Методы применения Windows Azure для решения различных классов задач.
Лекция 14. Windows Azure и аспектно-ориентированное программирование (АОП).
Лекция 15. Windows Azure для мобильных устройств. Проект Hawaii.
Лекция 16. Перспективы Windows Azure.
Лабораторная работа 1. Общее ознакомление с Windows Azure.
Лабораторная работа 2. Использование сервисов и приложений в Windows Azure.
Лабораторная работа 3. Разработка, публикация и использование простого приложения для Windows Azure.
Лабораторная работа 4. Использование Windows Azure для мобильных устройств.
ЗАКЛЮЧЕНИЕ.
ПРОБЛЕМЫ ИСПОЛЬЗОВАНИЯ И ПЕРСПЕКТИВЫ WINDOWS AZURE
В курсе [1] и в данной статье рассмотрена система облачных вычислений Windows Azure. В настоящее время система все шире распространяется.
Безусловно, в целом у Windows Azure большие перспективы на пути к тому, чтобы облачные вычисления стали бы столь же распространенными, как и операционные системы семейства Windows для настольных и портативных компьютеров.
В настоящее время Microsoft Research предоставляет уникальную возможность опробовать в работе Windows Azure. Каждый пользователь может, зарегистрировавшись бесплатно в системе Windows Live (http:// www.live.com), не только получить в свое
распоряжение облачные сервисы самой системы Windows Live (например, бесплатный облачный аналог Microsoft Office 2010), но и через систему Windows Live заказать себе бесплатный доступ на 30 дней к Windows Azure.
Работая в облаке Windows Azure, испытываешь удивительное чувство постоянного обновления системы: еще вчера, например, те или иные возможности и соответствующие им элементы GUI были недоступны, а сегодня они уже работают. Разумеется, чтобы их использовать, необходимо подписаться на бета-тестирование облака, что нетрудно сделать через облачные страницы Azure (см. лекцию 11 и лабораторную работу № 1).
Для получения информации о новых возможностях системы Windows Azure необходимо обратиться по ссылке [3].
В частности, Windows Azure развивается в следующих направлениях:
• Выпуск новых версий инструментария Azure SDK.
• Развитие подсистемы управления сетевыми подключениями Windows Azure Connect.
• Развитие подсистемы Content Delivery Network (CDN), позволяющей организовать региональное кэширование предоставляемой в облаке информации.
• Развитие основного портала управления Windows Azure.
• Развитие гостевых операционных систем Windows Azure. Гостевой операционной системой (ОС) - guest operating system - называется ОС, предоставляемая пользователям через облако, то есть через Web-брау-зер. Именно гостевая ОС имеется в виду в формулировках рекламного стиля типа «Windows Azure - операционная система в облаке». Фактически, таким образом, работа Windows Azure основана на двух операционных системах - серверной, работающей на компьютерах центров обработки данных, и гостевой, доступной клиентам облака через Web-браузер на их клиентских компьютерах.
• Развитие эмуляторов вычислительной среды (Compute) и хранения (Storage). Не-
обходимость в них очевидна: перед тем, как публиковать новый разработанный облачный сервис в облаке, его необходимо отладить в среде Visual Studio 2010 на локальной машине разработчика. Для моделирования облачного окружения при отладке и служат указанные эмуляторы.
Не хотелось бы слишком акцентировать внимание на проблемах использования Windows Azure, так как считаю (как опытный разработчик и пользователь программного обеспечения), что ситуация с не решенными на данный момент вопросами в Windows Azure и вопросами ее оптимального использования в России - вполне рабочая («штатная»).
В самом деле, есть новая уникальная сложная и очень полезная для миллионов российских пользователей программная система Windows Azure, при опробовании которой выявились нерешенные вопросы, представляющие собой целый комплекс научных, инженерных, экономических и бизнес-задач, поскольку использование облака касается практически всех - не только программистов, но и конечных пользователей компьютеров. Теперь нам с вами, уважаемые коллеги, необходимо эти задачи решить. Так займемся же этим конкретно, безотлагательно и по-деловому, используя наши профессиональные знания и опыт, вместо того чтобы заниматься сетованиями или иронией по поводу якобы невозможности использования облака или его якобы бесполезности в России. Облако все равно «прилетит» к нам, даже если некоторые и будут пытаться прятаться от него.
По мнению многих опытных экспертов, в том числе и автора курса, облачные системы (прежде всего - система Windows Azure, ввиду того что она базируется на платформе .NET для разработки надежного и безопасного ПО) безусловно, имеют большое будущее, так как они «приносят» на любой компьютер или даже на мобильное устройство мощные ресурсы вычислений и данных, доступные через Интернет. Это позволит в ближайшем будущем использовать Интернет не только для просмотра прогноза погоды, курса акций любимой фирмы или картинок и
видео, но и для повседневного решения серьезных задач в любыгх областях деятельности, которые перед нами ставит жизнь, работа, учеба. Ради этого стоит постараться и обеспечить адекватное окружение (или, как сейчас принято говорить, инфраструктуру) для применения облачных вычислений.
Следующие нерешенные вопросы системы Windows Azure и ее применения в России, на наш взгляд, заслуживают внимания.
1) Низкая скорость, ненадежность и несоразмерно высокая стоимость соединений с Интернетом, предоставляемых российскими Интернет-провайдерами.
Именно эта проблема (отнюдь не проблема Windows Azure) побудила меня дать моему курсу несколько печальный, но реалистичный эпиграф («Облака плыгвут, облака, - не спеша плыгвут, как в кино»). Имея некоторый опыт использования Azure, вполне можно утверждать, что эта система спроектирована и реализована в предположении, что каждый пользователь имеет быстрый и надежный Интернет (3G / 4G, Wi-Fi или Wi-MAX, либо быстрое проводное TCP/IP - соединение). Реальная (а не рекламная) скорость работы Интернет-соединений, при которой облако работает с приемлемой скоростью, - это как минимум 20-50 килобайт, или 160-400 килобит, в секунду. Лучше, разумеется, иметь скорость соединения в 1-10 мегабит в секунду или еще выше. Большинство российских пользователей таких возможностей пока, к сожалению, не имеют. Улучшением качества и скорости Интернет-соединений на всей территории России (а не только в крупных городах, в зонах Wi-Fi - доступа и не только для применения Windows Azure) должны срочно заняться как соответствующие государственные организации, так и коммерческие фирмы в области телекоммуникаций. Иначе трудно говорить о перспективах использования облачных вычислений в России (как и о реальном использовании Интернета в целом). Например, до сих пор используемая многими связь dial-up (через модем по телефонной линии), или, в лучшем случае, GPRS (с мобильного телефона) имеют быстродействие не более 50-64 ки-
лобит в секунду. Для облака этого недостаточно: использование его будет вызывать серьезные временные задержки, что грозит «бойкотом» облаку со стороны многих программистов и конечных пользователей.
2) Сложность архитектуры облака и, как следствие, путаница в терминологии и затруднения пользователей в понимании на самом деле не столь сложных по смыслу и назначению компонент облака и их возможностей. Большинству программистов трудно сразу представить себе принципиальную разницу между облачными вычислениями и вычислениями, например, в программе на языке Фортран на локальной машине. Вкратце это различие можно сформулировать так: обыгчная программа налокалъ-ной машине оперирует переменныгми и массивами, в необходимые случаях - базами дан-ныгх, а облачное приложение - Web-сайтами (поскольку все данные и программы доступны только через облако). Надеюсь, что курс [1] поможет российским пользователям правильно понять и использовать облачные вычисления в системе Windows Azure, так как для стиля автора курса характерны понятныге объяснения сложныгх концепций, а не (как, к сожалению, часто бывает у некоторых авторов) запутыгвание простыгх.
3) Необходимость ежемесячной оплаты облачных услуг в дополнение к оплате Интернет-трафика. Большинство российских пользователей привыкло к другому стилю использования компьютерных ресурсов: покупка (или иной способ заимствования) ПО, установка его на своей машине, поиск и использование наиболее дешевого Интернет-провайдера (или, на практике, нескольких провайдеров попеременно, в случае сбоев в работе одного из них), хранение на своей машине (или, в крайнем случае, в сейфе на компакт-дисках) обрабатываемых конфиденциальных данных. Теперь пользователям придется привыкать к тому, что требует облако, и доверить ему свои данные.
4) Психологический барьер и проблемы надежности и безопасности. Большинству
пользователей трудно будет смириться с мыслью о том, что их любимые программы и «секретные» базы данных будут храниться на неизвестных машинах на другом конце света, где их вполне могут, в конце концов, «взломать». В этом - основной психологический барьер при использовании облака. Здесь могу лишь предположить, что через несколько лет этот барьер «в головах» пользователей будет преодолен, точно так же, как был в свое время преодолен психологический барьер многих пользователей-непрограммистов при использовании персональных компьютеров. Так или иначе, ныне использование любого компьютера, даже своего собственного (а не только компьютеров облачного центра обработки данных), - это значительный риск атаки, которая может быть осуществлена неожиданно и в любой момент при условии подключения Вашего компьютера к Интернету.
5) Значительное энергопотребление в центрах обработки данных (ЦОД), сложность и громоздкость их обслуживания.
ЦОД во всем мире превратились в огромные здания-монстры, пожирающие немыслимые запасы электроэнергии. Ряд весьма авторитетных организаций, в частности, правительственные организации США, по этой причине даже начали закрывать (!) свои центры обработки данных, несмотря на популярность облачных вычислений.
6) Необходимость эластичности и масштабируемости облачного ПО. Компьютеры ЦОД и их программное обеспечение подчас не справляются с возложенной на них колоссальной нагрузкой - возможными многомиллионными (по числу пользователей) запросами в каждый момент времени. Вообще, любой серверный код испытывает подобные проблемы, особенно - код облачного сервисного ПО.
Считаю все эти вопросы решаемыми и рекомендую российским пользователям осваивать облачные вычисления, пользуясь любезным предложением Microsoft Research о бесплатном доступе к Azure в течение месяца. Например, проблема 5 решается орга-
низацией частных (ведомственных) облаков - private clouds.
Перспективность облачных вычислений очень хорошо почувствовали многие серьезные фирмы и специалисты, которые становятся экспертами по облачным вычислениям и пытаются получить договора, заказы, гранты, ориентированные на развитие облачных вычислений и перенос разрабатываемых ими приложений в облако. В настоящее время наблюдается буквально бум облачных вычислений, - иначе нельзя назвать ситуацию, когда Интернет буквально переполнен материалами, новостями и программами на эту тему.
Каковы же, на наш взгляд, основные области применения облачных вычислений в будущем и направления их дальнейшего развития?
• Применение облачных вычислений в научных вычислениях (scientific computing).
• Развитие специализированных систем облачных вычислений по отраслям знаний и производственной деятельности.
• Применение облачных вычислений при обучении в вузах и школах.
• Применение облачных вычислений в социальных сетях.
• Применение облачных вычислений для управления разнообразного рода информацией (облачные базы данных и знаний и др.).
• Интеграция общедоступных облаков (public clouds) в единое облако.
• Исследования и разработки по эффективности облачных вычислений по различным критериям.
В общем, по-видимому, сложнее было бы назвать область, в которой не были бы применимы облачные вычисления.
Автор выражает глубокую благодарность коллегам из фирмы Microsoft Research (Редмонд, США) и из российского отделения фирмы Microsoft за предоставление академического доступа к системе Microsoft Windows Azure.
Приглашаю уважаемых читателей и их учеников к изучению облачных вычислений в системе Microsoft Windows Azure с помощью моего курса [1]. В настоящее время курс уже имеет более 300 онлайн-студентов
на сайте ИНТУИТ.РУ. Буду признателен ува- предложения. Приглашаю присылать их по жаемым читателям за отзывы, замечания и электронной почте: vosafonov@gmail. com.
Литература
1. Сафонов В О. Платформа облачных вычислений Microsoft Windows Azure. Интернет-курс // http://www.intuit.ru/department/se/pmsazure/. Опубликован в декабре 2011 г. (дата обращения 17.03.2012).
2. Сафонов ВО. Основы современных операционных систем. Интернет-курс // http://www.intuit.ru/ department/os/bmos/. Опубликован в декабре 2010 г. (дата обращения 17.03.2012).
3. Информация Microsoft о новых возможностях системы Windows Azure // http://msdn.microsoft.com/ ru-ru/library/gg441573.aspx (дата обращения 17.03.2012).
Abstract
The article covers cloud computing - a modern approach to computations based on using Web services and data centers. Principles of teaching cloud computing are discussed. An Internet course by the author on the most popular cloud computing system, Microsoft Windows Azure, is presented.
Keywords: Cloud computing, Microsoft Windows Azure.
© Наши аеторы, 2012. Our authors, 2012
Сафонов Владимир Олегович, доктор технических наук, профессор кафедры информатики математико-механического факультета СПбГУ, [email protected]