Блог

Полезные статьи и новости о жизни WaveAccess

Как работать с Open Source проектами в Azure. Часть 3

В этом блогпосте расскажем о неочевидных способах снижения расходов в отлаженной инфраструктуре, а также о том, как правильно управлять оптимизацией бизнес-процессов и зачем вам Azure Kubernetes Service и мультиоблако.

How to work with Open Source projects_Part 3_en cover

Неочевидные пути снижения расходов в отлаженной инфраструктуре

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

Рассмотрим подход, который поможет избежать подобных ситуаций, на примере кейса тиражирования сервисов машинного обучения. 

Кейс: тиражирование сервисов машинного обучения

Задачей проекта была разработка платформы определения аномалий на спутниковых снимках на базе Open Source технологий. От сервиса требовалось предоставить оператору возможность загрузить изображение и с помощью машинного обучения выявить на нем определенные аномалии, связанные с представленным ландшафтом. В этом процессе заключена большая проблема – объем изображений: вес одного снимка доходил до 14 Гб (tif с информацией о местности, проекции и прочими техническими данными, которые использовались в выполнении расчетов).

Решение нужно было масштабировать на несколько регионов РФ, при этом изолировав его между ними. То есть для каждого оператора требовался свой интерфейс, а загрузка изображений и получение ответа по ним должны были быть реализованы в режиме реального времени.

Держать дорогую виртуальную машину с графическим процессором на каждый регион было бы не ликвидно. Обратившись к документации и калькулятору, предоставляемым Azure, специалисты WaveAccess рассчитали оптимальный вариант потребления, сформировав очередь для операторов, и договорились с бизнес-аналитиками о длительности ответа. В результате снимки обрабатываются через Python на одной большой виртуальной машине, и ответ возвращается в очередь – таким образом обеспечивается асинхронный процесс обработки.

Так достигается непрерывная работа используемых ресурсов в Azure. При большом количестве пользователей и при тиражировании сервисов в регионы получится более эффективное использование виртуальных машин в течение рабочего дня.

Основные возможности решения включали:

  • Загрузку изображений большого объема (6-14 Гб).

  • Непрерывную обработку информации, поступающей из разных регионов (обучение + предсказание).

  • Поддержку Jupyter Notebooks для разработки модели машинного обучения.

В результате разработанная система позволяет обрабатывать информацию из 6 регионов, используя только 2 зарезервированных инстанса. 

При необходимости временно запускаются дополнительные мощности, чтобы выполнить задачи пользователей (например, под обучение). Если вдруг менялась некая специфическая особенность изображения, которая влияла на точность вычислений, то система запускала дополнительное обучение модели машинного обучения. Она корректировала собственные характеристики и показатели, и дальнейшие загруженные снимки в новом формате обрабатывались уже с большей точностью.

В проекте были задействованы технологии и инструменты:  

  • Microsoft Azure;

  • Azure Kubernetes Service;

  • Java Spring Framework;

  • Python, Jupyter Notebooks;

  • Apache Kafka;

  • JavaScript, AngularJS, HTML5;

  • Terraform, Ansible, Docker.

Стратегии снижения расходов

Можно выделить несколько основных вариантов снижения расходов с Microsoft Azure:

  1. Зарезервированные виртуальные машины

  • Резервирование на 1 и 3 года.

  • Снижение расходов на виртуалки до 80%.

  • Возможность оплачивать авансом или помесячно. 

– Важно иметь в виду, что сумма фиксируется в USD – чувствительный аспект при изменении курса.

  1. Разделяемые зарезервированные виртуальные машины

  • Агрегация нагрузки нескольких виртуальных машин “по мере использования” в одну зарезервированную.

  • В открытых источниках есть готовые скрипты расчета уровня потребления и количества постоянно используемых ресурсов в подписке Azure. 

– На основании этого расчета можно сделать вывод о количестве зарезервированных машин. Так вы получите снижение общих издержек до 80%, а управление ресурсами сократится до одной виртуальной машины.

  1. Подключение облака Azure в качестве “песочницы”

  • Разработка новых сервисов на мощностях Azure.

  • Опытная эксплуатация в Azure.

– В данном случае отдельный интерес представляет Azure Kubernetes Service как блок кластера, в котором можно распределять нагрузку в случае необходимости. Сервисы Azure можно использовать как “песочницу” для подрядчика: можно привлечь внешнюю команду, дав доступ к подписке и выделив нужные ресурсы, не осуществляя дополнительных настроек в вашей инфраструктуре и не предоставляя доступ к чувствительной информации внешним сотрудникам.

  • Более точный расчет требований к железу в ЦОД после нагрузочного тестирования.

– Размещение нового сервиса в Azure позволит быстро его запустить и определить уровень потребления, который нужен в локальном ЦОДе. Если стоит вопрос о покупке нового оборудования, имеет смысл провести нагрузочное тестирование и опытную эксплуатацию в Azure, посчитать расходы.

  1. Миграция решений Microsoft в облако

  • Самые низкие цены на виртуальные машины Windows и базы данных MS SQL.

– Использование виртуальных машин Windows и баз данных MS SQL в Azure – это более бюджетный вариант по сравнению с другими облаками и локальным ЦОДом. Дело в том, что, кроме необходимости поставить эту БД к себе, нужно обслужить и саму лежащую под ней инфраструктуру. Решением может стать наличие бюджета на готовый ЦОД с этими сервисами “из коробки”, но при этом теряется возможность динамической настройки, управления через Terraform и автоматизированного распределения нагрузки с помощью проверенных сервисов.

  • Расширение инфраструктуры VMWare в облако Azure.

– Можно мигрировать не только решения Microsoft 365 или сервера, но и подключить Azure как кластер VMWare, таким образом расширив виртуальный парк. Что также даст дополнительные мощности.

Менеджмент изменений: как управлять оптимизацией бизнес-процессов

Внедрение изменений – непрерывный процесс, который позволяет постоянно работать над качеством сервиса. Он строится по схеме:

  1. Планирование;

  2. Разработка и тестирование;

  3. Ввод в эксплуатацию;

  4. Мониторинг и телеметрия – новое планирование.

Процесс внедрения изменений

Azure предоставляет все, что нужно для реализации любых проектов: и инструменты разработки, и набор компонентов эксплуатации, позволяющих тонко отслеживать различные метрики и характеристики, а также собирать статистику по сервисам, и инструменты доставки решений – одним из которых является Azure DevOps Services.

По данным отчета Accelerate State of DevOps Report by DORA and Google Cloud DevOps & SRE (2019), благодаря внедрению Azure DevOps компании:

  • В 208 раз чаще выпускают релиз или обновление;

  • В 106 раз быстрее выполняют развертывание после внесения изменений;

  • Быстрее выводят продукт на рынок;

  • Увеличивают прибыль;

  • В 2.6 раза быстрее восстанавливают работоспособность системы после сбоя;

  • В 7 раз сокращают вероятность сбоев в работе приложения (за счет внедрения инструментов мониторинга и отслеживания состояния инфраструктуры в целом).

Azure_pic1

Сегодня Azure DevOps Services (Server) предоставляет пять инструментов:

  1. Azure Boards

Для планирования и управления разработкой. Некий аналог Jira и YouTrack. Предоставляет широкие функции сопровождения проектов по методологии Agile (Scrum, Kanban), возможность настройки кастомных отчетов, dashboard и т.д.

  1. Azure Pipelines

Сервис сборки, тестирования и доставки кода с поддержкой CI/CD (как в сам Azure, так и на удаленные виртуальные сервера) и различных языков, платформ и сред развертывания (Azure, AWS, GCP). Поддержка функций мониторинга и алертов гарантирует выполнение автоматических проверок качества кода и результатов разработки.

  1. Azure Repos

Открытые и закрытые репозитории кода, совместимые с git и TFS. 

  1. Azure Test Plans

Набор инструментов для автоматизированного и ручного тестирования веб-, мобильных и десктоп-приложений. Поддерживает сквозную трассировку, что позволяет с точностью до строчки кода определить, какой функциональный баг отнести к конкретному разработчику. За счет интеграции с Visual Studio и Azure Boards можно в несколько кликов выполнить репорт и передать задачу в работу, эффективно построить работу команды вокруг всей линейки инструментов.

  1. Azure Artifacts

Сервис хранения библиотек и пакетов дистрибутивов (Maven, npm, NuGet и Python) — как собственных, так и upstream репозиториев.

Для погружения в тему рекомендуем изучить:

ЦОД + облако: зачем вам Azure Kubernetes Service и мультиклауд

Есть компании, которые хотят эффективно разрабатывать сервисы, но ограничены бюджетом и сроками. При этом они требуют конкретную функциональность для своих разработок и других проектов, но, увы, не готовы предоставлять исходный код и дистрибутивы в их окружении.

Кейс: единая среда разработки ПО

Рассмотрим проект, реализованный для инновационной компании технологического сектора. Используемые сотрудниками компании сервисы находились в ЦОДах, но руководство не готово было пускать в это окружение третьих лиц с точки зрения безопасности. Требовалось создать среду разработки и тестирования ПО, изолированную от среды промышленной эксплуатации (закрытый контур), для реализации чего команда WaveAccess выбрала Azure. 

Основные возможности предложенного решения:

  • Организация работы нескольких подрядчиков в единой среде разработки.

– Есть кластер Azure Kubernetes Service, в котором подняты несколько окружений для разных продуктов и разных команд: они не пересекаются, имеют доступ к ограниченному числу ресурсов в подписке и разрабатывают всю функциональность по условиям контракта. Коммуникация велась через ticket-систему в Jira. Если требуется добавить доступ или расширить кластер по мощностям, это также быстро оформляется через ticket.

  • Предоставление инструментов управления проектами, автоматизации тестирования и поставки результатов работы.

  • Ограниченная интеграция облака с закрытым контуром.

– Это стало важной фичей решения. Мультиклауд установка Kubernetes предоставила возможность переносить сервисы из окружений разработки в предпродакшн-окружение в закрытом контуре. То есть инженеры заказчика могли легко выполнить перенос настроек и воспроизвести окружение у себя, провести проверку на безопасность и качество кода. CI/CD были реализованы на базе Azure Pipelines. Доступ к окружению и размещенные в нем сервисы потребовали дополнительного переноса в связи с политикой безопасности компании.

  • Легкий перенос настроек и результатов работы из среды разработки в промышленную эксплуатацию и обратно.

В результате на базе Microsoft Azure была создана среда разработки, интегрированная с Azure DevOps Server в закрытом контуре. Подрядчики получили доступ к окружению в Azure Kubernetes Service и проектам в Azure DevOps Services.

Kubernetes как связующее звено

Azure Kubernetes Service часто выступает как связующее звено. Мы в нескольких проектах сталкивались с ситуацией, когда компания имеет открытый контур со средой разработки на базе Kubernetes и закрытый контур, куда – после выполнения всех работ – мощности и сервисы переносятся в предпромышленную эксплуатацию.

В заключении отметим ряд преимуществ, которые выделяют Kubernetes и как сервис, и как связующее звено:

  • Сильное комьюнити разработчиков и администраторов. 

– Практически любую проблему можно быстро решить: много компаний занимаются обслуживанием и настройкой кластеров Kubernetes, найти подрядчика для таких задач совсем не сложно.

  • Azure Kubernetes Service – управляемый провайдером кластер Kubernetes с неограниченным масштабированием. 

– Удобно разворачивать целый кластер нажатием нескольких клавиш и прохождением по workflow. Для этого не требуется углубляться в виртуальные машины, настройки сети и связывание серверов в единый кластер. То же касается мультикластерной разработки и установки: подключение внешнего кластера также не представляет никакой сложности.

  • Обширная функциональность разграничения доступа. 

– Можно обеспечить работу нескольких подрядчиков в рамках одного облака, разделить их по окружениям, сервисам и даже деплойментам.

  • Kubernetes де-факто стал стандартом поставки ИТ-продуктов.

  • Высокая степень автоматизации операций управления ресурсами. 

– Можно управлять как самим кластером, так и узлами сети внутри него и нагрузкой на них. Существует большое количество решений, позволяющих обеспечить ввод в эксплуатацию по стратегии Canary Deployment, через Blue Green Deployment или Waterfall – все эти подходы есть в Azure DevOps Pipelines.

  • Популярные Open Source решения предоставляют готовые скрипты для установки в Kubernetes. 

– Как минимум, это Standalone-инсталляция, а в большинстве случаев можно найти и готовые кластерные решения с отказоустойчивостью и восстановлением после сбоев.

  • Готовые решения для подключения нескольких ЦОДов в один кластер.

  • Глобальная сеть партнеров с поддержкой 24/7.

Не пропустите первые две части материала, где представлены стратегии эффективной работы с Open Source проектами в Microsoft Azure с использованием инструментов и практик DevOps: часть 1 и часть 2.

 

Команда WaveAccess создает автоматизированные решения для безопасной работы в облаке. 

Свяжитесь с нами: hello@wave-access.com 

Заказать звонок

Удобное время:

Отменить

Пишите!

Присоединить
Файл не больше 30 Мб.
Отменить