Развитие платформы облачных вычислений Microsoft Windows Azure
Покупка
Новинка
Тематика:
Windows
Издательство:
ИНТУИТ
Автор:
Сафонов Владимир Олегович
Год издания: 2016
Кол-во страниц: 292
Дополнительно
Продвинутый курс для студентов старших курсов и аспирантов с теоретическими лекциями и практическими занятиями по облачным вычислениям, новой облачной платформе Microsoft Windows Azure, ее архитектуре, новых возможностях, областях и методах применения, новейшей версии ее пользовательского интерфейса.
В курсе дается глубокое научное изложение и анализ платформы Azure, анализ архитектуры платформы Azure; обучение фундаментальным технологиям и принципам, на которых она базируется (.NET, WCF и др.); обучение новой версии архитектуры платформы Azure, которая является достаточно сложной для понимания, изучения и использования; обучение методам практического применения новой версии платформы Azure для решения различных классов задач (хранение и использование данных, реализация бизнес-логики, коммуникация, научные вычисления и др.).
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Развитие платформы облачных вычислений Microsoft Windows Azure 2-е издание, исправленное Сафонов В.О. Национальный Открытый Университет “ИНТУИТ” 2016 2
Развитие платформы облачных вычислений Microsoft Windows Azure/ В.О. Сафонов - М.: Национальный Открытый Университет “ИНТУИТ”, 2016 Продвинутый курс для студентов старших курсов и аспирантов с теоретическими лекциями и практическими занятиями по облачным вычислениям, новой облачной платформе Microsoft Windows Azure, ее архитектуре, новых возможностях, областях и методах применения, новейшей версии ее пользовательского интерфейса. В курсе дается глубокое научное изложение и анализ платформы Azure, анализ архитектуры платформы Azure; обучение фундаментальным технологиям и принципам, на которых она базируется (.NET, WCF и др.); обучение новой версии архитектуры платформы Azure, которая является достаточно сложной для понимания, изучения и использования; обучение методам практического применения новой версии платформы Azure для решения различных классов задач (хранение и использование данных, реализация бизнес-логики, коммуникация, научные вычисления и др.). (c) ООО “ИНТУИТ.РУ”, 2013-2016 (c) Сафонов В.О., 2013-2016 3
Новые принципы архитектуры современных программных систем Рассмотрены новейшие классы задач, решаемые современным ПО. В этом отношении лекция является продолжением, дополнением и развитием лекции 1 предыдущего курса [14]. Рассмотрены новые концепции архитектуры программного обеспечения, вопросы развития популярных платформ разработки программ, сформулированы новые требования к ПО, вытекающие из потребностей облачных вычислений и их реализации. Цель лекции: Ознакомление с новыми принципами архитектуры программного обеспечения, решаемыми задачами, требованиями к современному программному обеспечению, тенденциями его развития, основными концепциями архитектуры ПО. Презентацию к лекции вы можете скачать ссылка: здесь http://old.intuit.ru/department/os/devccpazure/1/Azure_New_Course_1.pptx. Введение Данный курс познакомит Вас с развитием принципов современных облачных вычислений и развитием наиболее перспективной платформы облачных вычислений Windows Azure и научит практически использовать ее новую версию (2013). Будут даны детальный научный анализ развития концепции облачных вычислений в целом, оценка ее перспектив развития. Комментарии к списку литературы Список литературы по курсу приведен в конце данной лекции. Вот некоторые комментарии к этому списку. В книге автора [1], опубликованной в 2011 г., рассмотрены основы архитектуры программного обеспечения, основы облачных вычислений, основы платформы облачных вычислений Microsoft Windows Azure и описана ее версия 2011 г. Книга рекомендуется для изучения перед изучением данного курса. Курс автора [2], как и книга [1], посвящен предыдущей версии Windows Azure и отражает ее состояние на 2011 год. Книга [3] и учебное пособие [4] автора курса предназначены для изучения современных операционных систем. В частности, в курсе и книге кратко рассмотрены основные принципы и возможности Windows Azure и бесплатных облачных сервисов Windows Live. Курс автора [5] – обзорно-аналитический курс по архитектурам и моделям прог рамм и знаний. Одна из лекций курса посвящена основам облачных вычислений и Windows Azure. Курс дает широкие базовые знания в области современных архитектур и моделей программ и знаний. 4
Некоторые виды современного программного обеспечения Основные концепции архитектуры ПО и анализ места облачных вычислений в их общей схеме даны в лекции 1 курса автора [2]. Рассмотрим некоторые новые тенденции в развитии современного программного обеспечения: Развитие ПО для облачных вычислений и центров обработки данных. Облака продолжают активно развиваться. За несколько лет развития облачных вычислений разработчиками были хорошо осознаны отличия в методах разработки облачных приложений от методов разработки более традиционных программ. Исследователями всего мира ведется научный анализ проблем безопасности облака, его эластичности и масштабируемости, методов эффективной реализации облака и облачных приложений. Это – основная движущая сила развития программного обеспечения в настоящий момент. Еще 5-7 лет назад можно было говорить о том, что программное обеспечение должно быть “осведомлено о Web” (Web-aware), т.е. программы должны в необходимых случаях взаимодействовать друг с другом через Web и обеспечивать удобный Web-интерфейс для пользователей. Ныне же можно говорить, что наиболее современный подход – это “осведомленность” программного обеспечения об облаке (cloud awareness), т.е. особая организация программ, обеспечивающая интеграцию нового приложения в существующее облако и его последующее использование в нем. Какая именно, будет объяснено в данном курсе. Магазины приложений для новых ОС на основе Web-сайтов. Другой важной современной тенденцией является организация и использование магазинов приложений (application stores, или appstores) для новых операционных систем, прежде всего, для новых версий Windows (Windows Store), например, для Windows 8. Магазин приложений – это Web-сайт (портал), обеспечивающий возможность поиска, использования, публикации, распространения и продажи готовых приложений для данной платформы. Например, с помощью магазина приложений для Windows 8 разработчик (индивидуал или небольшая фирма) может получить серьезную поддержку на начальном этапе разработки приложения в виде бесплатного доступа к облаку Windows Azure и бесплатного предоставления всех необходимых программных инструментов разработки приложений для данной платформы. Далее разработчик получает в виде магазина приложений возможность рекламы и распространения своих разработок, возможность общения с коллегами и отслеживания информации обо всех новейших разработках. Инструменты надежных и безопасных вычислений (trustworthy computing). О важности надежных и безопасных вычислений (trustworthy computing), начало которым было положено корпорацией Microsoft, автор уже неоднократно писал в предыдущем курсе [2] и многих других своих публикациях. Отметим, что, в связи с развитием облачных вычислений, вопросы надежности и безопасности ПО становятся все более и более актуальными, так как архитектура программ и способы доступа к данным все более усложняются. Многие виды защиты от атак обеспечивают сами современные платформы разработки программ, прежде всего – платформа .NET [2], методами, 5
основанными на управляемом выполнении кода (managed execution), с полным контролем типов и полномочий безопасности при выполнении программ. Однако и этими средствами необходимо правильно воспользоваться – выполнить должным образом установки атрибутов, конфигурирование программы и данных, обеспечить в необходимых случаях явные проверки путем вызовов системных методов, и т.д. Для контроля соответствия современного ПО требованиям надежных и безопасных вычислений разработаны и активно используются специальные инструменты. Например, для платформы .NET – это инструмент FxCop, который выполняет анализ бинарных сборок .NET в терминах единого промежуточного кода CIL и соответствующих атрибутов. Утилита FxCop контролирует правильность установки атрибутов безопасности и позволяет обнаруживать многие другие виды типичных ошибок при разработке программ. Во многих компаниях, выполняющих разработки ПО для платформы .NET, проверка кода инструментом FxCop является обязательной. Инструменты верификации программ. Как мы уже отмечали, например, в курсе [5], для разработки современного ПО характерно усиление интереса к верификации программ, т.е. разработке их формализованных спецификаций для каждого модуля (например, пред- и постусловий для каждого метода и инвариантов для каждого класса), с последующей автоматической проверкой (либо до выполнения программы, в случаях, когда это возможно, либо при ее выполнении, в виде assertions) соответствия реализации кода его спецификации. Самый простой способ – проверка пред- и постусловий и инвариантов во время выполнения, с выдачей сообщений и генерацией исключений при нарушении их истинности. Постепенно получают распространение новые языки, сочетающие средства традиционного программирования и средства формальной спецификации, например, система Spec# [5] – реализация расширения языка C# средства формальных спецификаций в стиле контрактного проектирования (design by contract) по Б. Мейеру. Иными словами, программистов постепенно приучают к доказательному программированию, основы которого были заложены еще в 1960-х – 1970-х гг. классиками в области ИТ, прежде всего, Ч. Хоаром, который ныне является ведущим научным сотрудником фирмы Microsoft Research (Кэмбридж). Наряду с системой Spec#, можно также назвать другую разработку Microsoft Research – верификатор программ Z3. Из разработок других фирм в этой области следует упомянуть верификатор программ Coq, разработанный в INRIA,Франция. Новые черты программных систем Проанализируем некоторые новые черты программных систем, наметившиеся в недавние годы. Интеграция, использование и распространение ПО через Web. Этот современный принцип получает все большее распространение. Создаются порталы, магазины приложений, Web-сервисы, т.е. Web все больше применяется для использования и распространения ПО. Развитие надежных и безопасных вычислений (trustworthy computing). Инициатива 6
надежных и безопасных вычислений (TWC) была начата корпорацией более 10 лет назад, в 2002 г. За эти годы было создано много инструментов TWC, и применение принципов TWC вошло в практику разработки программ многих компьютерных фирм. Если вначале отношение к TWC было в основном скептическим, то ныне корпорация Microsoft практически доказала применимость и полезность TWC на примере разработки и архитектуры своих новых программных продуктов. Развитие многоязыковых платформ с единым промежуточным кодом. Начало этой тенденции было положено с появлением платформы .NET. В настоящее время и другая популярная платформа – Java – развивается подобным же образом. Развитие виртуализации ресурсов и сред. В настоящее время все большее распространение получает ПО, использующие принципы виртуализации ресурсов, сред, платформ и инфраструктуры. Развитие облачных вычислений. Все ведущие ИТ-компании, прежде всего – Microsoft, активно развивают свои облачные платформы. Новая версия Windows Azure, разработанная в 2012-2013 гг., описана в данном курсе. Получила развитие и облачная платформа Oracle (Oracle Java Cloud), облачные платформы компаний IBM, HP и др. Все фирмы-поставщики облаков предоставляют бесплатный пробный доступ к ним на период от месяца до года для популяризации и распространения облачных вычислений. Это значительно увеличило число пользователей облаков, разработчиков облачных приложений и число специалистов в различных областях (как в России, так и во всем мире), интересующихся облачными вычислениями и желающими применить их в своей области. Перенос популярных видов приложений и инструментов в облака. Эта тенденция, связанная с развитием облачных вычислений, также прогрессирует. Имеются облачные аналоги многих популярных офисных приложений и инструментов, например, Microsoft Office, электронная почта и др. Разработчики осознали, что разработка и публикация облачных аналогов их программных продуктов весьма перспективны, так как могут значительно увеличить число их пользователей. Унификация пользовательских интерфейсов для всех видов компьютеров (настольных, ноутбуков, планшетов, мобильных устройств), развитие интерфейсов типа multi-touch. В настоящий момент наблюдается буквально бум пользовательских интерфейсов типа multi-touch. Они используются для всех видов компьютерных устройств и всех видов программного обеспечения. Хотя сама эта идея далеко не новая, популярность и удобство подобных интерфейсов нельзя не признать. Например, на них основано использование новейших операционных систем Windows 8 (для настольных и портативных компьютеров) и Windows Phone 8 (для мобильных устройств). Современные платформы для разработки программ Платформа Java (Oracle) существует уже почти 18 лет. За это время она превратилась из “моноязыковой” платформы, поддерживающей только программирование на языке Java, в многоязыковую платформу для разработки программ с единым бинарным промежуточным кодом (байт-кодом) в постфиксном формате и единой виртуальной 7
машиной (JVM), поддерживающая программирование на языках Java, Ruby, Python и др. (всего таким методом реализовано более 30 “единобайткодных” языков). Для платформы Java все большее развитие получают методы JIT-компиляции, профилирования программ. В новой версии Java получили поддержку современные динамические языки с расширяемыми типами (введена виртуальная команда invokedynamic). Платформа .NET (Microsoft), существующая с 2000 г., также активно развивается как многоязыковая платформа с единым бинарным промежуточным кодом (CIL) и единой виртуальной машиной (CLR). В ней разрабатываются новые методы JIT-компиляции, профилирования программ; в новой версии .NET, как и в Java, получили поддержку современные динамические языки и расширяемыми типами. Обе платформы уделяют особое внимание надежности и безопасности, на основе исполнения управляемого кода и динамического контроля типов. Обе платформы поддерживают разработку Web-сервисов и содержат базовые средства для реализации облачных вычислений. На основе Java-технологии реализована облачная платформа Oracle Java Cloud, на основе .NET – облачная платформа Microsoft Windows Azure. Важнейшие современные характеристики программных продуктов Масштабируемость – возможность применения ПО для разных классов устройств (от мобильных телефонов до настольных компьютеров) и для разного числа пользователей одновременно (от 1-10 до нескольких миллионов, - последнее должно быть обеспечено для облачных приложений). Следование стандартам коммуникации, представления и передачи данных. Современные сложные виды ПО, такие, как Web-сервисы, могут взаимодействовать успешно между собой только при условии строгого соблюдения стандартов. Для Webсервисов это стандарт WSDL (Web Service Description Language), обеспечивающий возможность получения информации об интерфейсе Web-сервиса в специальной форме, в WML-формате. Используется также стандарт SOAP для пересылки в XMLформате входных параметров от клиента к Web-сервису и результатов – от Webсервиса клиенту. При условии соблюдения этих стандартов, метод и платформа реализации каждого Web-сервиса (.NET, Java и др.) несущественны. Возможность переноса в облако. Как уже отмечалось, важным условием широкого распространения современного ПО является возможность переноса его в облако и использования как облачного приложения. Это предполагает специальную архитектуру ПО, рекомендации к которой описаны в данном курсе. Сервисная ориентированность (SOA) – организация ПО в виде расширяемого набора Web-сервисов. Об этом подробнее ниже. Возможность быстрой интеграции с другими существующими продуктами в новое программное решение. Все перечисленные принципы обеспечивают быструю 8
интеграцию программных сервисов между собой в единое программное решение. Повышенная безопасность и надежность. Как уже говорилось, одно из важнейших требований к современному ПО – следование рекомендациям по надежным и безопасным вычислениям (trustworthy computing). Развитие современных основных понятий архитектуры ПО Для лучшего понимания архитектуры облачной платформы рассмотрим сначала основные концепции архитектуры современного ПО. Клиент (client) – это пользователь и (или) компьютер, использующий какие-либо программные сервисы. Как правило, в современном ПО он реализован как Web-клиент. Сервер (server) – компьютер или центр обработки данных, предоставляющий программные сервисы через Web. Тонкий клиент (thin client) – клиент Web-сервиса с минимальным пользовательским интерфейсом, общающийся с Web-сервисом только через браузер и протокол HTTP. Rich client (полнофункциональный клиент) – клиент Web-сервиса, имеющий полнофункциональный GUI и общающийся с Web-сервисом через слой промежуточного программного интерфейса (middleware), обеспечивающий его функциональность; пример ПО для поддержки rich clients: Microsoft Silverlight. Слой (layer) – крупная независимая компонента архитектуры ПО. Данная концепция устаревает, как и вообще “геометрический” подход к описанию архитектуры ПО, которая весьма сложна и более адекватно описывается сетью или графом. Уровень абстракции (abstraction layer) – “горизонтальный слой” (номер N); совокупность модулей, реализация которых использует только модули уровня N-1 (N > 0). Данная концепция несколько устарела, так как современные архитектуры более сложны. Аспект – совокупность рассредоточенных фрагментов кода, реализующих некоторую (сквозную) функциональность, например, проверки безопасности. Это основное понятие аспектно-ориентированного программирования [5]. Промежуточное программное обеспечение (middleware) – совокупность слоев ПО, лежащих между клиентом и сервером и обеспечивающих их коммуникацию. Ярус (tier) – слой программного обеспечения, реализующий какую-либо независимую часть его архитектуры; например: business tier – реализация бизнес-логики; Web tier – реализация взаимодействия с Web/ Многоярусная архитектура (multi-tier architecture) – архитектура ПО, при которой презентация результатов, обработка и управление данными реализованы как отдельные процессы. Пример: Использование middleware для взаимодействия с сервером и СУБД для взаимодействия с данными. 9
Многоклиентская архитектура (multi-tenant architecture) – архитектура клиентсерверного ПО, при которой один экземпляр серверного ПО, исполняемый на сервере, обслуживает несколько клиентов (термин tenants буквально означает клиенты, арендаторы). Пример: Web-сервис. С точки зрения рассмотренных концепций, облачные вычисления соответствуют принципам multi-tiered and multi-tenant architecture. Пример многоярусной архитектуры ПО представлен на рис. 1.1. Рис. 1.1. Пример многоярусной архитектуры ПО Развитие Service-Oriented Architecture (SOA) Сервис – компонента программы, непосредственно доступная пользователю. Основной принцип SOA состоит в следующем. С точки зрения пользователя, программный продукт представляет собой набор простых в использовании Webсервисов с удобным графическим Web-интерфейсом. Сервисно-ориентированная модель должна быть расширяемой (пользователь должен иметь возможность добавить новые сервисы или изменить набор доступных сервисов). Пользователи должны иметь возможность обращаться к сервисам через сеть с самых 10