Тренды в 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-сервисами, Azure SQL, а также сервисом для хранения данных — семейством 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 Quadrants).
По словам 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 на этот случай? Начнем с того, что для сервиса Azure SQL Database существует географическая репликация. Она доступна из коробки, для любой версии сервиса, для любых локаций и уровней цен. Это дает возможность получить репликацию в четыре дополнительных региона. Вы получите 4 копии вашей базы данных, доступных для чтения. Таким образом, с одной стороны, можно разгрузить основную часть системы и дать возможность читать из другого местоположения. С другой стороны, если вы в какой-то момент поняли, что дата-центр, в котором находится основная часть вашей системы, например, перестал быть доступен, вы можете переключить вашу базу данных на режим записи в другом регионе.
Теперь появилась функция (еще в превью) Auto-Failover Groups. Это фактически возможность не заниматься ручным переключением, а дать возможность Azure автоматически переключить основную базу данных на одну из реплик. При этом предыдущая (основная) база данных становится такой же «read only instance», а когда доступность дата-центров восстанавливается, ее можно использовать в дальнейшем. И все это в дополнение к тому, что уже и так гарантируется как минимум четыре девятки (99,99%) доступности базы данных Azure.
Что еще из похожего появилось с тех пор, как мы увидели Azure впервые? Для NoSQL («non relational») базы данных Azure 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 использовали Azure SQL).
- Как базы данных — хранили данные в Storage.
Но это мало отличалось от того, что было доступно до 2010 года. Сама парадигма сильно не изменилась.
Есть ряд новых сервисов, которые дают возможность строить наши системы совсем по-новому — Scale Sets для виртуальных машин, контейнер-сервисы и Azure Service Fabric.
Azure 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) появился как для Azure SQL, так и для Cosmos DB. Также есть сервисы, интересные разработчикам многих систем — например многофакторная аутентификация, которая доступна как сервис. Можно использовать мобильные телефоны, голосовые сервисы и множество иных функций. Шифрование хранилища сейчас уже доступно в превью, а вашему приложению больше не нужно заниматься шифрованием данных перед их сохранением в хранилище.
Соответствие требованиям (compliance) — процесс сложный и непредсказуемый. Если платформа предоставляет множество сервисов, которые уже прошли аудит, для которых гарантируется соответствие большому количеству стандартов, то, во-первых, сервисы позволяют построить систему на проверенных решениях. Во-вторых, процесс прохождения аудита станет более предсказуемым. Сечас Microsoft предоставляет гораздо более обширную информацию, рекомендации, кейсы и готовые сценарии по реализации решений.
В этом случае тренд: платформа в высокой степени помогает обеспечить безопасность и подготовиться к международным аудитам, обеспечить соответствие стандартам и требованиям рынка.
Что с этим всем делать
Знаете, что для меня важно в изменениях? То, что они приходят в нашу жизнь. Какие-то из вышеперечисленных трендов могут показаться немного абстрактными. Но мы начинаем воспринимать изменения, когда мы их видим. Самый главный тренд сегодня в мире, особенно в бизнесе — увеличение скорости, достижение максимального результата в минимальные сроки.
Azure дает возможность не изобретать решения с нуля, а подхватывать и эффективно использовать уже доступные практически универсальные сервисы. Мое участие в проектах GlobalLogic неразрывно связано с использованием новейших технологий Microsoft. Если вам интересно развитие в Cloud-направлении, рекомендую также посмотреть материалы конференции
MS TechTalk #1 в Харькове.
Я буду рад прочитать ваши комментарии и наблюдения из практики работы с Microsoft Azure, пишите на
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
!