Розробка хмарних застосувань

Навчальний план ПІз-13:

Анотація

Хмарні технології - один з провідних трендів в світі IT протягом вже п'яти років. Незважаючи на свою молодість, хмарні обчислення змусили не тільки архітекторів ПЗ, але і менеджерів компаній глянути по-іншому на моделі розгортання ІТ-інфраструктур, розповсюдження програмного забезпечення, отримання обчислювальних ресурсів.

Хмарні сервіси зараз скрізь: офісні застосування в браузері, сховища на хмарних жорстких дисках, засоби синхронізації інформації користувача на мобільних телефонах. Щодня з'являються нові успішні хмарні стартап-компанії, а такі гіганти як Microsoft і Apple будують по всьому світу дата-центри, призначені для розгортання хмарних сервісів.

Хмарна технологія настільки ж складна всередині, наскільки проста зовні. Основна концепція «хмар» - це надання ресурсів як інтернет-сервісу. На сьогоднішній день ці інтернет-сервіси представлені наступними трьома архитектурами: Infrastructure-as-a-Service (IaaS), Software-as-a-Service (SaaS) і Platform-as-a-Service (PaaS).

Всі ці архітектури об'єднані двома загальними аспектами: вони надають «на вимогу» (on-demand) обчислювальні ресурси ЦП та сховища інформації. З цих двох чинників виходить, що у розробників програмного забезпечення з'явився обмежений тільки можливостями провайдера хмарного хостингу запас масштабованості застосувань і сервісів, які розроблюються. Поряд з майже не обмеженою масштабованістю хмарних програмних продуктів, слідкують як необов'язкові, характеристики хмарних платформ: 100% - доступність, еластичність, мульти-орендність, оплата тільки за використання ресурсів (мережевих, обчислювальних, ресурсів зберігання даних тощо).

Але 99% програмного забезпечення не можуть скористатися перерахованими вище достоїнствами хмарних платформ, тому що далеко не кожне застосування може перейти з класу стаціонарних або мобільних застосувань в застосування, що працює в хмарі. Найближче до міграції в «хмари» застосування, що спроектовані на основі сервіс-оріентірванной архітектури (SOA). Але і в останніх, найчастіше, доводиться переписувати значну частину коду та переглядати архітектурні принципи побудови програми.

Вимоги хмарних інфраструктур до програмних систем, що запускаються в хмарах, безпрецедентно високі. І з цієї точки зору, хмарні сервіси представляють окремий клас розподілених програмних систем, де на перший план виходять: слабка зв'язність між програмними (логічними) пластами системи, мережева взаємодія і безпека зберігання та обміну даними.

З точки зору розробки найбільш гнучкою та інноваційною представляється тип хмарної архітектури «платформа як сервіс» (PaaS). Платформи даного типу дозволяють розробнику «забути» про цілий ланцюжок робіт, слабко пов'язаних безпосередньо з розробкою, але такою, що є невід'ємною частиною її життєвого циклу: встановлення та налаштування апаратних (серверів, мережного обладнання) і програмних засобів, проміжного ПЗ та середовища виконання, адміністрування інфраструктур, що перебувають у володінні (on-premise), поширенням оновлень тощо.

Зняття «відповідальності» з розробників за проведення цих робіт дозволяє істотно прискорити і уніфікувати процес розробки програмного забезпечення.

Конкурентні переваги від використання хмарних технологій очевидні. На сьогоднішній день все більш компаній починають використовувати як свої, так і сторонні програмні продукти, що працюють у «хмарах». Тому важливо знати і розуміти всі переваги і ризики використання хмарних обчислень, архітектурні принципи побудови хмарних платформ, а також програмного забезпечення, що працює під управлінням таких платформ. Крім того, необхідно бути компетентним у таких питаннях, як сертифікація та ліцензування хмарних інфраструктур і хмарних сервісів, розуміти юридичні обмеження на використання таких сервісів.

У даному курсі будуть розглянуті усі аспекти хмарних технологій, детально розібрані основні характеристики «хмарних» технологій та їх відмінності від рішень на основі серверних технологій. Окрему увагу буде приділено хмарним IaaS,PaaS та SaaS - платформам, компонентам Microsoft Azure, принципам проектування та розробки застосувань під Microsoft Azure.