Azure для разработчиков
В Azure очень много сервисов, но большинство itpro-dev фокусируют свое внимание на инфраструктурных сервисах типа виртуальных машин, которые им понятны. Для использования многих других сервисов, нужно иметь хотя бы минимальные навыки разработчика.
Цель этой статьи не рассказать детально о каком-то сервиса еще раз, а сделать классификацию сервисов Azure для разработчиков, краткое описание, указать границы применения этих серверов.
Как я вижу Azure для разработчиков (DEV/OPS team):
Developer Services
Visual Studio Online
VSO- это TFS вынесенный из onpremise в cloud. (TFS это наша система по управлению проектом, исходным кодом, ведения задач, тестирование, автоматической сборкой и развертыванием. Т.е. система покрывает весь процесс разработки). Его функционал обновляется быстрее чем TFS (раз в месяц примерно), и кроме этого отличий очень мало.
Application Insights
AI- это система мониторинга приложений(мобильных-веб.) В ваш код вы встраиваете вызовы на подобии ILogger.Write и на выходе получаете на Azure портале кучу красивых графиков. Это может быть посещаемость страниц сайта, или время, проведенное на экране мобильного приложения.
Сам AI достаточно умел, к примеру- если пользователь пользуется вашим мобильным приложениям без интернета, AI будет писать в буфер и при появлении интернета, отправит все массово на сервер. Вам при этом ничего дополнительно написать не нужно.
Web
- Azure Web Apps (бывшие Web Sites).
- Web Role в Cloud Service.
- Virtual machines, в которых можно развернуть и веб сайты.
Virtual Machines — Работы с виртуальными машинами- самая привычная для разработчиков, т.к. они мало чем отличаются от того, что разработчик использует onpremise и знаний Azure по сути не требует.
Web Apps — самый правильный с точки зрения дизайна масштабируемости и простоты вариант. Единственный минус- слабая интеграция с virtual network. Т.е. этот вариант рассчитан на внешний доступ, а не на доступ из корпнета. Писать можно на .net/java/node.js/php.
Web Role — это самый старый вариант хостинга, который появился еще в самой первой публичной версии Azure в далеком 2008 году. В те времена, мы рекомендовали переписывать свои приложения под Web Role. Сейчас такой рекомендации нет. Единственным преимуществом перед веб сайтами является- интеграция с virtual network.
Кроме основных, есть еще и несколько дополнительных сервисов связанных с web.
API Management
(смысл которого мало кто поймет в корпоративном секторе).
Его идея в том, чтобы забрать на себя рутинные функции при написании API и оставить разработчику- только то, что приносит business value.
Сервис на себя берет функции единой точки входа, и перенаправлять запросы к десяткам разных сервисов. В нем можно вести документацию к методам. Можно считать число вызовов, создать тарифные планы, проводить конвертацию форматов, авторизацию и т.п. А разработчику остается писать код сервиса, который и несет основную ценность для пользователя.
Compute
Давайте пойдем методом исключения, нишевых сервисов.
Media Encoding-из названия понятно, что это сервис умеет конвертировать видео, но заодно помогает делать стриминг видео, помогает его шифровать, защищать от не разрешенного распространения. Этот сервис не только про видео, но он прекрасно работает с аудио. Это очень специализированное решение.
Упорядочим оставшиеся сервисы в порядке возрастания сложности.
Virtual Machine – Cloud Server Worker Role – Batch – HDInsight
- Virtual Machine — тут все понятно. Размеры от 1 ядра до 32, различный объем памяти до 448GB, различные интерконннекты (Infiniband – быстрый коннект, который используется в кластера-суперкомпьютерах), и недавно анонсировали графические ускоритель на базе NVidea Cuda.
- Cloud Service Worker Role — Этот вариант проще чем виртуальная машина, легче масштабируется. По мощности (если не учитывать специфичные сценарии типа работа с сетью или наличие графического ускорителя) – не уступает виртуальным машинам. Мы не занимается управлением ОС, просто оборачиваем наш код в Worker Role.
- Batch Это такой более простой чем HDInsight сервис, но при этом потенциально более мощный чем VM и Worker Role. В сервисе Batch уже встроена система журналирования задач, мониторинга ресурсов, очередей задач и т.п.
- HDInsight– реализация на нашей платформе Hadoop (который реализует MapReduce). Родная платформа для Hadoop-это Linux. Этот сервис стоит использовать, когда мы перемалываем действительно Big Data… Это не про гигабайты в день, с ними прекрасно справятся пара виртуальных машин…. Это про регулярную обработку терабайтов и более. Большая часть того, что у нас принято называть Big Data, таким не является. Как ранее было с нанотехнологиями, и многими, другими словами.
Mobile
- Notification HubСервис, который позволяет отправлять нотификации на 3 мобильные платформы. Т.к. сервисы google, ms, apple не совместимы, то notification hub – очень полезное решение, упрощающее работу с нотификациями на всех платформах.
- Mobile Engagement Сервис который умеет собирать статистику использования пользователем различных страниц мобильного приложения, может отправлять таргетированные нотификации (пример-пользователи открывавшие определенную страницу, за последние 5 дней… Отличная штука для рекламы и продаж, получения фидбэека.).
- Mobile Apps Многострадальный сервис, который то в один раздел подтыкали, то в другой, ранее назывался Mobile Services. Разработчики плохо понимают, что это. Под этим сервисом скрывается группа сервисов- массовая рассылка нотификаций (notification hub), online/offline синхронизация данных между, хостинг мобильного бэкенда.
Data & Storage
- Storage — все вроде должны быть понятно. Зачем это разработчикам- для админов (it pro) это просто хранилище vhd дисков, и тут главное подобрать нужные IOPs. Для разработчиков- это еще и система очередей, в хранение больших бинарных объектов(blob) можно вообще что угодно хранить, а не только диски. Таблицы- это вообще NoSQL хранилище.
- Redis Cache — это рекомендованный для всех новых приложений в Azure кэш. Базируется на opensource движке redis, но очень сильно ограничивает его функционал. По факту- это стандарт для кэша, на ряду с MemCache, но уже быстрее его.
- Document DB — написанная в Microsoft документ-ориентированная NoSQL база данных. Прямой конкурент MongoDB, RavenDB и т.п. Но их написали не мы.
- SQL Azure — версия Azure для Cloud. В большинстве случаев совместима с onPremise решением и даже собирается из одной ветки исходного кода.
- Search — предоставление мощного поискового движка из коробки, по вашим данным. Т.е. данные не публикуются для общего доступа тому-же google/bing. Конкурентов из не cloud мира много (Apache Lucene), но этот сервис написали мы.
Надеюсь, статья помогла упорядочить сервисы и Azure перестала быть огромным не понятным черным ящиком, где все есть, но не понятно что конкретно.