Тренди в Microsoft Azure. Погляд практика
Ця стаття підготовлена на основі доповіді Андрія Гненного на GlobalLogic Kharkiv MS TechTalk .
Гненний андрій — Senior Consultant, лідер Cloud-практики GlobalLogic в Харкові, Google Certified Professional (Cloud Architect), Microsoft Certified Application Developer (MCAD), Microsoft Certified Professional (MCP).
Microsoft Azure — в даний момент найбільш прогресуюча хмарна платформа. Що примітно — вона змінюється не тільки в масштабі, але і в якості. За роки розвитку Cloud-напрямки в Харкові, практичного застосування технологій Microsoft Azure я помітив кілька основних трендів і цікавих напрямків еволюції цієї хмарної платформи. Чому і з чого почався активний розвиток Azure? Що необхідно ринку і з якими рішеннями прийшов Microsoft? Як ці рішення будуть впливати на підходи в розробці надалі? Про все це ви зможете прочитати у моїй статті.
Що було раніше і є зараз
Щоб говорити про тренди, необхідно повернутися до витоків. Платформа (тоді вона називалася «Windows Azure») стала доступною для всіх замовників з 1 лютого 2010 року. До цього можна було ознайомитися з превью-версією. Що в ній було спочатку? Платформа була представлена Cloud-сервісами, SQL Azure, а також сервісом для зберігання даних — сімейством Block & Table Storages. Ця платформа розвивалася досить активно протягом 7 років і значно змінилася за цей час.
Зараз Microsoft Azure має вже понад 40 data centers по всьому світі. Вона надає більше 120 сервісів — інфраструктурні сервіси (IaaS) і, власне, платформу (PaaS), в тому числі дозволяє оптимізувати витрати, мігрувати існуючі рішення в клауд. Можна сказати, що це наступна велика платформа після .NET.
Якщо ви пам'ятаєте, то фактично при появі платформи Microsoft .NET багато речей змінилися. І, напевно, більшість із нас вже не можуть уявити собі, як би зараз можна було програмувати для Windows на Delphi. З тих пір пройшло багато етапів удосконалення, і ось Azure можна вважати повноцінним правонаступником платформи Microsoft .NET.
З ще одного досягнення — аналітична компанія Gartner в 2017 році віднесла Microsoft Azure в топ у своїх знаменитих «магічних» квадрантах (Magic Квадрантах).
За словами Gartner, Azure — велика платформа, яка приваблива для клієнтів різного рівня з різною хмарної зрілістю. Таким чином, консалтингова компанія рекомендує рішення від Microsoft як платформу для обслуговування, підтримки і навчання.
Росте ця платформа дуже швидко. І якщо, за деякими оцінками, ринкова частка в 2016 році була близько 20%, то на перший квартал 2017 року — 34%. Для порівняння — у Amazon частка залишилася колишньою.
Тренд #1 — Зростання кількості сервісів
Тенденції найчастіше не очевидні з самого початку, не всі їх можуть помітити на старті. Знання, розуміння та можливість розпізнати якийсь із трендів в самому початку або хоча б раніше більшості дає певну конкурентну перевагу. Нові тренди зазвичай визначаються потребами ринку і його готовністю до сприйняття новинок. Зміни і розвиток технологій, наукові прориви впливають на ринок і стають каталізатором нових трендів. Один з очевидних трендів, який, напевно, більшість з вас спостерігає — це міграція в Cloud.
Давайте тепер спробуємо подивитися на розвиток подій в деяких областях, пов'язаних з Microsoft Azure, для того щоб визначити, який же тренд ми спостерігаємо.
Подивимося, як виглядав Microsoft Azure у 2010 році:
Як бачите, це було щось скромне, що включає Cloud Services, Storage, найпростіший інструмент для управління всім цим, а також базу даних SQL Azure.
Чого хотів ринок? Він хотів, щоб розробка нових систем не вимагала таких витрат, як фінансових, так і людських. Основне — скорочення витрат на підтримку та інсталяцію нових версій, підвищення швидкості впровадження інновацій. З яким відповіддю вийшов Microsoft? Спочатку з'явилася, як додаток до цього, можливість хостити свої віртуальні машини. Але це нічого нового не додало по суті. Так, це інфраструктура, можливість перенести свою систему зі свого data center в клауд, заощадити на цьому щось, але не більше того. Що було далі?
А далі ми можемо спостерігати, як протягом 7 років компанія Microsoft постійно додавала все нові і нові сервіси. Це сервіси не тільки інфраструктурні, це так звані Platform as a Service (PaaS). Наприклад, для запуску своїх обчислень, крім віртуальних машин, з'явилося ще кілька можливостей.
Мережева інфраструктура стала набагато більш різноманітною. Наприклад, немає необхідності інсталювати свій сервер, налаштовувати, підтримувати, оновлювати, купувати ліцензії — можна отримати відразу сервіс DNS.
З точки зору веб і мобільних застосунків, зберігання даних — можна сказати, що з'явився великий вибір для використання. Тепер не потрібно інсталювати сервер, купувати ліцензію на SQL-сервер або на іншу систему управління базами даних, займатися розгортанням і налаштовувати сек'юріті. Можна отримати це як сервіс. Як ми бачимо, насправді цих сервісів досить багато.
Це дає можливість або будувати нові системи, або трансформувати існуючі і покладатися на готові сервіси, як на надійний фундамент, щоб швидше розробляти і мати можливість використовувати інноваційні технології, заощадити на підтримці. А купивши сервіс, найчастіше отримуєш його вже з робочими попередніми параметрами для більшості потреб. Більш того, обов'язково з можливістю додатково налаштувати під потреби конкретного додатка і конкретної системи.
І як ви думаєте, який тренд ми спостерігаємо в цьому випадку? Тенденція така, що кількість сервісів зростає. Що робить компанія Microsoft і її інженери, дослідники? Вони знаходять ті сервіси, які затребувані, які дадуть можливість побудувати складні системи швидше, дешевше, отримати передбачувану поведінку, гарантувати якісь якості системи вже на етапі планування. Передбачається, що цей тренд буде продовжуватися. Знаючи про нього, я б порекомендував використовувати такі сервіси ширше, тобто якщо ви ще не використовуєте у ваших рішеннях сервіси-платформи, то пора задуматися і почати це робити.
Тренд #2 — Підвищення відмовостійкості і зниження часу відгуку
Багато стикалися з тим фактом, що система, яка працює в дата-центрі, не може бути надійніше, ніж сам дата-центр. Як би ви не старалися, вона все-таки замкнені в його межах. Якщо відбувається збій (нехай навіть якщо це серйозна інфраструктура, як у провідних провайдерів хмарних платформ), ви будете змушені спостерігати відсутність сервісу у вашого додатка. Або ж вам доведеться терміново шукати альтернативні рішення, піднімати якийсь бекап, гасити пожежу.
Які можливості ми отримали в рамках платформи Microsoft Azure на цей випадок? Почнемо з того, що для сервісу SQL Azure Database існує географічна реплікація. Вона доступна з коробки, для будь-якої версії сервісу, для будь-яких локацій і рівнів цін. Це дає можливість отримати реплікацію в чотири додаткових регіону. Ви отримаєте 4 копії вашої бази даних, доступних для читання. Таким чином, з одного боку, можна розвантажити основну частину системи і дати можливість читати з іншого розташування. З іншого боку, якщо ви в якийсь момент зрозуміли, що дата-центр, в якому знаходиться основна частина вашої системи, наприклад, перестав бути доступний, ви можете перемкнути вашу базу даних на режим запису в іншому регіоні.
Тепер з'явилася функція (ще в превью) Auto-Failover Groups. Це фактично можливість не займатися ручним перемиканням, а дати можливість Azure автоматично переключити основну базу даних на одну з реплік. При цьому попередня (основна) база даних стає такою ж «read only instance», а коли доступність дата-центрів відновлюється, її можна використовувати у подальшому. І все це на додаток до того, що вже і так гарантується як мінімум чотири дев'ятки (99,99%) доступності бази даних Azure.
Що ще з схожого з'явилося з тих пір, як ми побачили Azure вперше? Для NoSQL («non relational») бази даних Microsoft Cosmos DB спочатку закладена можливість географічної реплікації. З моменту появи цього сервісу на ринку, реплікація працює вже з коробки. Ця функція дуже зручна — можна налаштувати в кілька кліків доступність копій ваших JSON документів для читання через локальний endpoint. Є можливість налаштувати більш складну систему, яка дозволить записувати дані одразу в декількох регіонах — для цього потрібно буде використовувати різні колекції документів. Це все можна зв'язати разом і отримати таку систему, яка фактично працює з однією базою даних, але не залежить від одного дата-центру. І ця додаткова можливість гарантується поверх SLA 99,99%.
Azure Storage має вбудовану підсистему для локальної реплікації даних: кожен ваш блок зберігається мінімум на трьох носіях, щоб уникнути втрати даних. Але є, як додаткова опція, і географічна реплікація. За замовчуванням вона не дає можливості читати дані з іншого регіону, але це також можливо. Безумовно, у неї є свої мінуси, але реплікація додатково дозволяє розвантажити основний сховище даних програми, перенаправивши запит на читання в допоміжний регіон. У цьому випадку доступність даних на читання гарантується на рівні не менш як 99,99% завдяки Azure Storage.
Azure Traffic Manager дозволяє управляти тим, які endpoints використовує ваше додаток або браузер. Якщо це додаток, коммуницирующее з вашими сервісами, тоді у вас є можливість налаштувати правила, за якими той чи інший запит буде використовувати сервіс, що знаходиться максимально близько до клієнта.
Фактично це працює у зв'язці з DNS (Domain Name System), ніяк не обмежуючи пропускну здатність. Це рішення дає можливість не тільки отримати доступ до примірника сервісу, який знаходиться найближче до клієнта. У разі будь-якого збою і недоступності одного з примірників сервісу для програми, є можливість перенаправити всі запити на інший екземпляр в іншому регіоні. Azure Traffic Manager забезпечує можливість ручного перенаправлення, і автоматичного. Таким чином, сам Traffic Manager вміє моніторити доступність endpoint. Якщо ваш endpoint перестає відповідати, то спрацьовує правило перенаправлення та всі запити починають надходити на інший екземпляр сервісу.
Трохи підсумуємо — ми спостерігаємо тренд підвищення відмовостійкості і зниження часу відгуку в глобальному, світовому масштабі. Бізнес очікує таких рішень, і саме це є рушійною силою цього тренда.
Тренд #3 — Всесвітній охоплення і архітектура микросервисов
Може бути, трохи схематично, але типові системи 2010 року були побудовані на Azure:
- Як системи, які хостятся на віртуальних машинах (міграція існуючої системи на інфраструктуру Azure).
- Як модерні програми, які використовували Cloud-сервісів (Web roles, Worker roles використовували SQL Azure).
- Як бази даних — зберігали дані Storage.
Але це мало відрізнялося від того, що було доступно до 2010 року. Сама парадигма сильно не змінилася.
Є ряд нових сервісів, які дають можливість будувати наші системи зовсім по-новому — Scale Sets для віртуальних машин, контейнер-сервіси і Azure Service Fabric.
Online Service Fabric — движок, на якому ще до його появи в публічному доступі вже працювали всі основні високонавантажених сервіси Azure. Використання Service Fabric дає можливість не тільки використовувати напрацювання Microsoft, перевірені часом, але і йти в ногу з сучасними технологіями — переходити на .Net Core, працювати з дуже популярними зараз Docker Containers.
Крім Reliable Services, Service Fabric містить фреймворк для Actor Lifecycle Management. Архітектор може вибирати будь-яку комбінацію Stateless і Stateful сервісів. Service Fabric, як платформа, дає дуже широкі можливості для реалізації DevOps парадигми — вбудований моніторинг, масштабованість, розвиток для виходу на інші ОС і платформи. Наприклад, вже доступна обмежена версія Service Fabric для Linux, розвивається версія для Azure Stack.
Вже зараз можна вручну зібрати кластер, який працюватиме географічно распределенно, налаштувати Traffic Manager. Можна отримати кластер Service Fabric, який працює як єдине ціле, але при цьому розподілений на три дата-центру.
Швидше за все, в майбутньому таке рішення буде взагалі доступно з коробки. Потрібно буде просто створити екземпляр Service Fabric, вказати, що хочете отримати його в кількох регіонах. Таким чином ви будете мати можливість підвищити відмовостійкість і надіслати запити на найближчий endpoint.
У цьому випадку, на мій погляд, тренд такий, що Microsoft Azure стає повноцінною, всесвітньо охоплює платформою для розробки систем на основі архітектури микросервисов.
Тренд #4 — Безпека та відповідність вимогам
Які можливості по забезпеченню безпеки і відповідність вимогам (compliance) були на момент виходу Azure в 2010 році? Насправді їх було не так вже й багато: інтеграція з Live ID, аутентифікація через сертифікати і, звичайно, SSL. Але в той час не було ніяких можливостей по шифруванню даних безпосередньо движком бази даних (TDE).
Не було ніяких вбудованих можливостей по шифруванню даних у сховищах. Безумовно, якщо розробники володіли Crypto API, вони могли це все реалізувати. Часто, для того щоб пройти якийсь аудит з безпеки, отримати сертифікат відповідності того чи іншого стандарту (особливо це стосується медичних та банківських систем), Microsoft був готовий надати інформацію та порадити, як це можна правильно реалізувати. Основне навантаження була на розробниках. Процес проходив довго, складно, а результат аудиту виходив часто непередбачуваним.
З тих пір пройшло досить багато часу, і на платформі Microsoft Azure з'явилося ціле сімейство сервісів, які забезпечують підтримку безпеки і створюють фундамент для побудови ваших систем.
Наприклад, Azure Key Vault — сховище ключів, що дозволяє безпечно їх зберігати, логировать звернення, управляти доступом до самих ключів. Все це в інтеграції з іншими сервісами. Transparent Data Encryption (TDE) з'явився як для SQL Azure, так і для Cosmos DB. Також є сервіси, цікаві розробникам багатьох систем — наприклад багатофакторна аутентифікація, яка доступна як сервіс. Можна використовувати мобільні телефони, голосові сервіси і безліч інших функцій. Шифрування сховища зараз вже доступний в превью, а вашому додатком більше не потрібно займатися шифрування даних перед їх збереженням у сховище.
Відповідність вимогам (compliance) — процес складний і непередбачуваний. Якщо платформа надає безліч сервісів, які вже пройшли аудит, для яких гарантується відповідність великій кількості стандартів, то, по-перше, сервіси дозволяють побудувати систему на перевірених рішеннях. По-друге, процес проходження аудиту стане більш передбачуваним. Зараз Microsoft надає набагато більш широку інформацію, рекомендації, кейси і готові сценарії по реалізації рішень.
У цьому випадку тренд: платформа високою мірою допомагає забезпечити безпеку і підготуватися до міжнародних аудитів, забезпечити відповідність стандартам і вимогам ринку.
Що з усім цим робити
Знаєте, що для мене важливо змін? Те, що вони приходять в наше життя. Якісь з перерахованих вище трендів можуть здатися дещо абстрактними. Але ми починаємо сприймати зміни, коли ми їх бачимо. Найголовніший тренд сьогодні у світі, особливо в бізнесі — збільшення швидкості, досягнення максимального результату в мінімальні терміни.
Azure дає можливість не винаходити рішення з нуля, а підхоплювати і ефективно використовувати вже доступні практично універсальні сервіси. Моя участь у проектах GlobalLogic нерозривно пов'язане з використанням новітніх технологій Microsoft. Якщо вам цікаво розвиток в Cloud-напрямку, рекомендуємо також переглянути матеріали конференції
MS TechTalk #1 в Харкові.
Я буду радий прочитати ваші коментарі і спостереження з практики роботи з Microsoft Azure, пишіть на [email protected] !
Опубліковано: 10/11/17 @ 11:19
Розділ Різне
Рекомендуємо:
DOU Books: 5 книг, які радить Олексій Колупаєв
Як ми мігрували з заліза на AWS: проблеми та рішення
DOU Проектор: Cards — додаток для обміну цифровими візитівками
Мої думки по фільтру «малополезный контент, спам, надлишок реклами» від Яндекса
Пріоритизація завдань: вища математика або легка розминка перед сніданком?