Цель лекции: Ознакомление с современными архитектурами программного обеспечения, решаемыми задачами, требованиями к современному программному обеспечению, тенденциями его развития, основными концепциями архитектуры ПО.
Презентацию к данной лекции Вы можете скачать здесь.
Данный курс познакомит Вас с принципами современных облачных вычислений и наиболее перспективной платформой облачных вычислений Windows Azure и научит ее практически использовать. Будет дан детальный научный анализ концепции облачных вычислений в целом, оценены ее достоинства, недостатки, перспективы и проблемы развития.
Список литературы по курсу приведен в конце данной лекции.
Вот некоторые комментарии к этому списку.
В книге [1] рассмотрен широкий круг практических вопросов, связанных с облачными вычислениями в целом: затраты на облачные вычисления, проблемы их безопасности, ограничения, поставщики облачных сервисов (Google, Microsoft, Amazon, Yahoo, IBM,
Книга [2] посвящена в основном платформе Windows Azure. В книге проанализированы отличия локальных (on-
Книга [3] и учебное пособие [4] автора курса предназначены для изучения современных операционных систем. В частности, в курсе и книге кратко рассмотрены основные принципы и возможности Windows Azure и бесплатных облачных сервисов Windows Live.
Курс автора [5] – обзорно-аналитический курс по архитектурам и моделям программ и знаний. Одна из лекций курса посвящена основам облачных вычислений и Windows Azure.
Прежде чем обратиться непосредственно к облачным вычислениям и к платформе Azure, рассмотрим важные основные концепции современной архитектуры ПО и проанализируем место облачных вычислений в этой общей схеме.
Рассмотрим некоторые наиболее характерные виды современного программного обеспечения:
В целом для современного ПО характерна тенденция к значительному усложнению архитектуры.
Клиент-серверные системы получили широкое распространение уже в течение десятков лет. Известны следующие основные разновидности серверов: сервер приложений, Web-сервер, сервер баз данных, сервер электронной почты, файл-сервер и другие [3].
Интернет (Web) – приложения предназначены для исполнения в Сети. В современных условиях большинство из них разрабатывается на платформе .NET или Java, хотя некоторые программисты и фирмы до сих пор пишут Интернет-приложения на C. В современном Web-программировании также широко используются языки с
Интернет-приложения подразделяются на клиентские (например, браузеры) и серверные (например, Web-сервисы).
Интегрированные решения являются распределенными программными системами для управления информацией и функционированием предприятий, фирм, банков, университетов. Для интегрированных решений характерно наличие модулей аутентификации и авторизации пользователей, работы с базами данных, работы с сетью, реализации бизнес-логики. Интегрированные решения могут быть разработаны с использованием различных языков программирования.
Встроенные системы – это программное обеспечение специализированных микропроцессоров, управляющих работой самых различных устройств – от атомных реакторов до холодильников, кардиостимуляторов, линий электропередач и автомобилей. Характерным требованием к программному обеспечению встроенных систем является фиксированность предельно допустимого времени ответа (
Программное обеспечение мобильных устройств – одна из наиболее современных и широко распространенных разновидностей ПО. Его особенности: ограничения на ресурсы (прежде всего – на объем памяти), необходимость учитывать различия в архитектуре конкретных моделей мобильных устройств (дисплеев и клавиш управления). ПО мобильных устройств, как правило, разрабатывается на платформе Java, либо с использованием продуктов Microsoft, например, .NET Compact Framework.
Как экзотический, но актуальный пример, приведем также ПО носимых компьютеров. Они встроены в спецодежду или обувь., используемые человеком, выполняют мониторинг состояния и поведения человека и дают экспертные рекомендации. Данный класс устройств также имеет весьма жесткие ограничения по памяти.
ПО промежуточного уровня (middleware) занимает промежуточное положение между клиентом и сервером. К наиболее типичным примерам middleware относится, например, ПО для поддержки протоколов отправки и приема мгновенных сообщений (
ПО центров обработки данных (ЦОД) - еще один современный вид программного обеспечения. В нем особо важную роль играют СУБД, например, Microsoft SQL Server.
ПО для виртуализации – это современный вид ПО, предназначенный для инсталляции и использования виртуальных машин на реальное оборудование с целью расширения функций компьютерной аппаратуры, использования других ОС и ПО для других платформ. Пример – Microsoft Virtual PC.
ПО для облачных вычислений (
ПО для управления знаниями играет в настоящее время все более важную роль, в связи с
ПО для управления информацией (information management) – офисные приложения (например, Microsoft Office, OpenOffice) и системы управления базами данных, например, Oracle, MySQL, Microsoft SQL Server.
ПО для научных вычислений – разнообразные инструменты и пакеты программ для поддержки решения научных задач, Пример: MATHLAB.
Рассмотрим теперь наиболее характерные черты современных программных систем, которые присущи большинству из них, независимо от их предметной области и платформы, на которой они используются.
Наиболее важная особенность современных программных систем – Web -
Для современного ПО характерна универсализация представления
Важный принцип современного ПО – единая инфраструктура, в которую должны быть интегрированы инструменты, данные, знания и программы, используемые для решения прикладных задач.
Повторная используемость (reusability) кода весьма важна для успешной разработки программ, так как позволяет существенно экономить ресурсы при разработке.
Сервисно-ориентированная архитектура ПО отражает тенденцию к явному выделению понятия программного сервиса (преимущественно, Web-сервиса). О ней подробнее см. п. 1.8.
Виртуализация широко применяется в программном обеспечении для моделирования новых аппаратных архитектур, расширения возможностей доступа к данным, памяти и др.
Облачные вычисления (cloud computing) - в настоящее время один из наиболее популярных подходов к разработке и использованию ПО, реализующий метафору "облака" (cloud) – Интернет- или интранет-сети, через которую пользователям доступны ресурсы – приложения, данные, знания. Данный подход подробно рассмотрен в курсе.
Управление знаниями (knowledge management) играет важнейшую роль в современном ПО, так как для решения многих реальных задач недостаточно чисто алгоритмических методов; требуется интеграция методов инженерии программ и
Java (Sun Microsystems, 1995; ныне - Oracle) – платформа для разработки программ на объектно-ориентированном языке Java, программы на котором компилируются в
.NET (2000) – многоязыковая объектно-ориентированная платформа для разработки программ с общим промежуточным языком (CIL), общей инфраструктурой языков (CLI) и единым представлением данных на основе XML (стандарты ISO/ ECMA). Язык C# - наиболее удобный язык программирования для .NET, но не единственный и не обязательный для использования. .NET – открытая платформа, стандартизированная совокупностью стандартов ISO. Microsoft.NET – это лишь одна из реализаций стандартов .NET; из других наиболее известны Mono и DotGNU.
Обе платформы – и Java, и .NET - уделяют особое внимание надежности и безопасности на основе исполнения управляемого кода и динамического контроля типов/
Обе платформы поддерживают разработку Web-сервисов и содержат базовые средства для реализации
Другие современные широко используемые платформы и языки:
Если идет речь о характеристиках, свойствах и качествах ПО, всегда необходимо уточнять, какого рода и с какой точки зрения рассматриваются характеристики программ. Пользовательская и "девелоперская" точки зрения на наиболее важные характеристики программ различаются.
С точки зрения пользователя наиболее важны следующие качества программ:
- Работоспособность, полезность: программа должна прежде всего работать и выполнять то, что от нее требуется;
- Дружественный к пользователю интерфейс (преимущественно – Web-интерфейс): программой должно быть удобно пользоваться, причем, наиболее желательно, - с минимальной нагрузкой на пользовательскую компьютерную систему и минимальными требованиями к пользователю по ресурсам; с данной последней точки зрения как раз и удобны облачные вычисления;
- Надежность, безопасность, защита конфиденциальных данных (соблюдение принципов Trustworthy Computing - TWC): программа должна надежно и стабильно работать и обеспечивать защиту от возможных внешних угроз и атак, как на саму программу, так и на используемые, создаваемые и обрабатываемые ею данные.
С точки зрения разработчика наиболее важными признаются следующие качества программы:
Любая технология программирования состоит из нескольких необходимых элементов, при отсутствии которых говорить о существовании какой-либо технологии бессмысленно. Как показывает многолетний опыт разработки программ, это следующие основные элементы:
Начнем знакомство с платформой Azure с определений основных понятий из области архитектуры программ.
Клиент (client) – это пользователь и (или) компьютер, использующий какие-либо программные сервисы.
Сервер (server) – это компьютер или центр обработки данных, предоставляющий программные сервисы.
Тонкий клиент (thin client) – это клиент Web-сервиса с минимальным пользовательским интерфейсом, не имеющий
Rich client (полнофункциональный клиент) – это клиент Web-сервиса, имеющий полнофункциональный GUI и общающийся с Web-сервисом через слой промежуточного программного интерфейса (middleware), обеспечивающий его функциональность; примеры ПО для поддержки rich clients:
Слой (layer) – это крупная независимая компонента архитектуры ПО. Различают горизонтальные слои (или уровни абстракции), вертикальные слои (срезы) и др.
Уровень абстракции (abstraction layer), или "горизонтальный слой" (номер N) – это совокупность модулей, реализация которых использует только модули уровня N-1 (N > 0). Нулевой уровень абстракции образует аппаратура или базовые библиотеки (API). Концепция принадлежит Э. Дейкстре и сформулирована в конце 1960-х гг. в ходе разработки операционной системы THE (Технического университета Эйндховена).
Вертикальный слой, срез (в некоторых технологиях - аспект) – это совокупность рассредоточенных фрагментов кода, реализующих (сквозную) функциональность, например, проверку безопасности. Авторы концепции: проф. А.Л. Фуксман (Ростовский университет, 1979 – технология вертикального слоения; G. Kiczales (
Промежуточное программное обеспечение (middleware) – совокупность слоев ПО, лежащих между клиентом и сервером и обеспечивающих их взаимодействие, например, поддержку сетевых коммуникационных протоколов
Ярус (tier) – слой программного обеспечения, реализующий какую-либо независимую часть его архитектуры; например: business tier – реализация бизнес-логики; Web tier – реализация взаимодействия с Web. Если используется понятие
Многоярусная архитектура (multi-tier architecture) – архитектура ПО, при которой презентация результатов, обработка и управление данными реализованы как отдельные процессы. Пример: Использование middleware для взаимодействия с сервером и СУБД для взаимодействия с данными.
Многоклиентская архитектура (multi-tenant architecture) – это архитектура клиент-серверного ПО, при которой один экземпляр серверного ПО, исполняемый на сервере, обслуживает несколько клиентов (tenants – букв. клиенты, арендаторы). Пример: Web-сервис.
С точки зрения рассмотренных концепций, облачные вычисления соответствуют принципам multi-tiered и multi-tenant architecture.
Что касается abstraction layers, для современной сложной архитектуры ПО данный термин несколько устарел, так как все модули ПО повторно используемы, и в различных системах различные ярусы (слои) могут иметь разные условные номера. Двумерная модель не в состоянии адекватно описать современное ПО
Пример многоярусной архитектуры ПО представлен на рис. 1.1.
(рис 1.1) Пример многоярусной архитектуры ПО
Сервисно-ориентированная архитектура (SOA) – один из наиболее современных подходов к программированию.
Сервис – это компонента программы, непосредственно доступная пользователю.
Пример сервиса: Получение прогноза погоды через Интернет.
Основной принцип SOA. С точки зрения пользователя, программный продукт представляет собой набор простых в использовании Web-сервисов с удобным графическим Web-интерфейсом.
Сервисно-ориентированная модель должна быть расширяемой: пользователь должен иметь возможность добавить новые сервисы или изменить набор доступных сервисов.
Пользователи также должны иметь возможность обращаться к сервисам через сеть с самых различных по своим возможностям устройств – desktop-машин, мобильных устройств и т.д.
Метод реализации Web-сервисов (.NET, Java и др.) для пользователя несущественен.
Разработчик должен иметь возможность публикации своих Web-сервисов.
Поддержка SOA осуществляется во многих современных программных инструментах, в том числе:
С данной точки зрения, облачные вычисления соответствуют принципам SOA.
Software as a Service (SaaS) – модель разработки программ, основанная на использовании лицензируемых программных сервисов "по требованию" клиентами, получающими (покупающими) лицензии у сервис-провайдеров.
Термин SaaS возник в 1999 г.
Основная идея SaaS - использование ПО по требованию (on demand) по невысокой стоимости, вместо покупки полной лицензии на ПО для всех платформ.
Характеристики SaaS:
С данной точки зрения, облачные вычисления соответствуют принципам SaaS.
Англоязычному термину cloud computing соответствует русский термин "облачные" вычисления.
"Облако" (cloud) – широко используемая метафора для изображения сервисов, предоставляемых через Интернет или другую коммуникационную сеть (например, через ATM-сеть).
Облачные вычисления – модель вычислений, основанная на динамически масштабируемых (scalable) и виртуализованных (virtual) ресурсах - данных, приложениях, ОС и др., - которые доступны и используются как сервисы через Интернет и реализуются с помощью мощных центров обработки данных (data centers).
С точки зрения пользователей, существуют "облака" (общедоступные или частные) , предоставляемые различными компаниями для использования мощных вычислительных ресурсов, которых нет у индивидуального пользователя.
Перспективы облачных вычислений, как будет видно из данного курса, весьма многообещающие.
Недостаток облачных вычислений: пользователь полностью зависит от "облака" и не может управлять даже резервным копированием своих данных и программ.
Наиболее популярная "облачная" платформа – Microsoft Windows Azure (облачная ОС) и Microsoft Azure Services Platform (реализованная на основе Microsoft.NET). О ней и пойдет речь в данном курсе.
В настоящее время все крупные компании (Microsoft, IBM, HP, Dell, Oracle и др.) разрабатывают свои системы облачных вычислений; имеется тенденция к интеграции этих корпоративных систем в единое доступное пользователю "облако". Однако имеются и частные "облака", доступные только служащим определенной компании.
Подход к разработке программного обеспечения в новом тысячелетии принципиально изменился.
Вместо индивидуальных изолированных разработок на собственном компьютере программное обеспечение разрабатывается в виде совокупности сетевых приложений и сервисов, а основная тенденция для пользоватетей - использование (consuming) готовых сервисов через Web.
Будущее – за сетевым и распределенным программным обеспечением, основанным на Web-сервисах, многоклиентских и многоярусных архитектурах -принципах SOA, SaaS, multi-tenancy, multi-tiered architecture.
Всем этим принципам соответствует модель облачных вычислений.
Microsoft – одна из ведущих компаний, поддерживающих и развивающих этот новый подход в своей облачной платформе Windows Azure, реализованной на базе платформы .NET – платформе надежного и безопасного многоязыкового программирования.
Вертикальный слой, срез (в некоторых технологиях - аспект) –совокупность рассредоточенных фрагментов кода, реализующих (сквозную) функциональность, например, проверку безопасности. Авторы концепции: проф. А.Л. Фуксман (Ростовский университет, 1979 – технология вертикального слоения; G. Kiczales (
Клиент (client) – пользователь и (или) компьютер, использующий какие-либо программные сервисы.
Многоклиентская архитектура (multi-tenant architecture) – архитектура клиент-серверного ПО, при которой один экземпляр серверного ПО, исполняемый на сервере, обслуживает несколько клиентов (tenants – букв. клиенты, арендаторы). Пример: Web-сервис.
Многоярусная архитектура (multi-tier architecture) – архитектура ПО, при которой презентация результатов, обработка и управление данными реализованы как отдельные процессы. Пример: Использование middleware для взаимодействия с сервером и СУБД для взаимодействия с данными.
Облачные вычисления (cloud computing) – модель вычислений, основанная на динамически масштабируемых (scalable) и виртуализованных (virtual) ресурсах - данных, приложениях, ОС и др., - которые доступны и используются как сервисы через Интернет и реализуются с помощью мощных центров обработки данных (data centers).
Полнофункциональный клиент (rich client) – клиент Web-сервиса, имеющий полнофункциональный GUI и общающийся с Web-сервисом через слой промежуточного программного интерфейса (middleware), обеспечивающий его функциональность; примеры ПО для поддержки rich clients:
Программное обеспечение как сервис (Software as a Service - SaaS) – модель разработки программ, основанная на использовании лицензируемых программных сервисов "по требованию" клиентами, получающими (покупающими) лицензии у сервис-провайдеров.
Промежуточное программное обеспечение (middleware) – совокупность слоев ПО, лежащих между клиентом и сервером и обеспечивающих их взаимодействие, например, поддержку сетевых коммуникационных протоколов
Сервер (server) – компьютер или центр обработки данных, предоставляющий программные сервисы.
Сервисно-ориентированная архитектура (SOA) – архитектура ПО, при которой программный продукт представляет собой набор простых в использовании Web-сервисов с удобным графическим Web-интерфейсом.
Слой (layer) – крупная независимая компонента архитектуры ПО. Различают горизонтальные слои (или уровни абстракции), вертикальные слои (срезы) и др.
Тонкий клиент (thin client) – клиент Web-сервиса с минимальным пользовательским интерфейсом, не имеющий
Уровень абстракции (abstraction layer) или "горизонтальный слой" (номер N) – совокупность модулей, реализация которых использует только модули уровня N-1 (N > 0). Нулевой уровень абстракции образует аппаратура или базовые библиотеки (API). Концепция принадлежит Э. Дейкстре и сформулирована в конце 1960-х гг. в ходе разработки операционной системы THE (Технического университета Эйндховена).
Ярус (tier) – слой программного обеспечения, реализующий какую-либо независимую часть его архитектуры; например: business tier – реализация бизнес-логики; Web tier – реализация взаимодействия с Web. Если используется понятие
Для данной вводной лекции упражнения не предусмотрены.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.