Русский
Русский
English
Статистика
Реклама

Облака

Эволюция OnCloud.ru глазами архитектора облака

26.01.2021 10:19:42 | Автор: admin
В 2010 году я начал работать в компании Онланта в должности пресейла. Отечественный рынок облачных услуг на тот момент только развивался, но уже был заряжен большим потенциалом. Недолго думая, в 2011 году мы приняли решение зайти на рынок в качестве облачного провайдера. 2021 юбилейный для облака OnCloud.ru, и, оглядываясь назад, мы понимаем, что за десять лет мы проделали огромный путь в развитии нашего облака. О том, какие уроки мы усвоили, прокачивая облачный сегмент бизнеса компании, я расскажу в этой статье, теперь уже, на правах архитектора OnCloud.ru, имеющего десятилетний стаж работы с нашим облаком.

Освоение рынка мы начинали с проектирования архитектуры и разработки сервисной модели будущего OnCloud.ru. Достаточно долго решали, на чем будем строить и за сколько продавать. Как ни странно, с технической составляющей вопросов возникало меньше, чем с выведением модели расчета себестоимости проекта. Ориентиров было мало, разве что за рубежом. Поэтому создавали велосипед с нуля. Забегая вперед, могу сказать, что получился у нас не велосипед, а целый космический корабль.

Источник

Начинка OnCloud.ru


Выбор серверного оборудования


Подавляющая масса существовавших на тот момент провайдеров по какой-то причине строила свои решения на блейд-серверах. Мы сделали несколько подходов к расчетам, оценили себестоимость такого решения и избрали иной путь. К 2011 году у нас появился кластер на больших четырехпроцессорных серверах (HPE DL580), который в общей сложности прослужил нам восемь лет с учетом апгрейдов. В среднем за это время мы заменяли каждый сервер порядка двух раз. Но благодаря четырехпроцессорным серверам мы не только сэкономили в части себестоимости, но и получили технический профит, имея возможность предоставлять заказчикам большие виртуальные машины.

На блейд-серверах конкуренты могли предложить ограниченное число ядер виртуальных процессоров и объема оперативной памяти как правило, 16 vCPU объемом до 128 Гб RAM (два стандартных XEON по 8 ядер). Мы же могли предоставить сразу 40 vCPU с удвоенным объемом RAM, и долгое время позиционировали это как конкурентное преимущество. Списали свой кластер лишь в 2019 году когда подошел к концу его срок полезного использования. К тому же, VMware, наш постоянный партнер по виртуализации, на тот момент прекратил его поддерживать.

Системы хранения данных


К 2011 году мы реализовали приличное число проектов и предоставляли оборудование в аренду. СХД, в числе которых было несколько систем от IBM: DS 4700 и 3500 на SATA и SAS-дисках, остались в резерве с наших прошлых проектов. То есть, не вкладывая ни рубля, Онланта могла поддерживать два класса хранения SATA и SAS. Но вскоре мы с коллегами пришли к выводу, что оборудование слабовато и апгрейды все же потребуются.

Роль SATA-дисков мы ограничили бэкапами. А модернизация СХД заключалась в покупке Hitachi HUS VM с SAS и SSD-дисками. В 2012 году она давала довольно приличную производительность по сравнению с другими продуктами на рынке, самостоятельно распределяя данные с помощью технологии тиринга по двум классам хранилищ (SAS и SSD). На тот момент это было хорошей инвестицией. В дальнейшем, наращивая классы хранения, мы смогли с помощью масштабирования сервиса сократить стоимость ресурсов для заказчиков примерно вдвое при росте инфляции и курса доллара. Сделали хорошо и себе, и заказчикам.

Сеть


Сеть была еще одним тонким местом в архитектуре облака, которое мы пытались устранить. Сетевое оборудование у нас также осталось с прошлых проектов. Это были простые гигабитные коммутаторы Cisco, с которых мы не раздумывая перешли на Juniper 10 Гбит, как только к нам пошли заказчики. К слову, эти коммутаторы до сих пор используются у нас в сетях Colocation.

С апгрейдом сети проблемы не закончились, и мы столкнулись с DDoS-атаками. У нас был общий для всех заказчиков интернет-канал, который разделялся пропорционально их потребностям. То есть если атака шла на одного заказчика, то страдали все. При возникновении проблемы мы оперативно поменяли провайдера на того, кто использовал Cisco Arbor для защиты от DDoS-атак. Такой своеобразный ход конем одномоментно и навсегда избавил нас от этой проблемы.

Гипервизор


Здесь сомнений практически не было. Мы остановили свой выбор на гипервизоре от VMware, который обладал всего одним небольшим минусом высокой ценой. Но плюсы с лихвой перекрывают этот изъян.

  • Для нас это был абсолютно знакомый продукт, потому что мы неоднократно использовали его в проектах по аутсорсингу соответственно на обучение инженеров дополнительные затраты не требовались.
  • На VMware достаточно просто продавать облако благодаря программе лицензирования для сервис-провайдеров с гибким чеком по модели pay-as-you-go сколько ресурсов мы заказчикам продали, за столько вендору и заплатим.
  • Затраты на эксплуатацию абсолютно прозрачны. Если бы мы строили облако на альтернативном, бесплатном на тот момент ПО, то стоимость техподдержки для нас была бы непредсказуемой. А третьей линии поддержки скорее всего бы не предвиделось. Скорее всего пришлось бы остаться со всеми возможными проблемами один на один.


Интегральный SLA


Сейчас, когда все провайдеры предлагают доступность своего облака, которая закрепляется в SLA на уровне гипервизора, мы свое облако позиционируем в спектре интегральной доступности: на уровне гипервизора, сети и систем хранения данных. За 2020 год была абсолютная доступность по всем трем параметрам на уровне 100%. Никакой секретной формулы расчета SLA нет, но мы отвечаем перед заказчиками финансово не по одному, а сразу по трем параметрам (гипервизор, сеть и СХД) как только один из них проседает, это отражается на общем уровне доступности. Чтобы просадки не происходило, все элементы облака у нас задублированы, и даже если проводятся технические работы, оно остается доступным. Например, не так давно мы практически полностью заменили все сетевое оборудование в кластере виртуализации, и сделали это без остановок работы сервиса и простоев. Заказчики даже не заметили полного апгрейда сетевого оборудования.

2012 год первый большой проект


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

К нам пришел крупный заказчик, и для него мы делали комплексный облачный проект, а не просто выделяли набор ресурсов в аренду, как это было ранее. У заказчика стояла задача перенести вовне среду разработки, чтобы в ней могли работать внешние разработчики без доступа ко внутренней сети заказчика. Мы предоставили виртуальные серверы, весь необходимый стек лицензий Microsoft, лицензию на базу данных Oracle и сервис WebEx для коммуникации удаленных разработчиков. Это был готовый комплект сервисов для удаленной работы распределенной команды. С помощью этого проекта мы научились предоставлять не разрозненные сервисы, а комплексные услуги с фиксированными показателями доступности.


Первые грабли стоимость реализации или все познается в сравнении


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


Одной стороной медали было сравнение с конкурентами. Здесь важно понимать, что нашими конкурентами были не только те, кто предлагал облака. В начале 2010-х годов на рынке было очень много компаний, которые занимались в основном хостингом сайтов, а в довесок собирали непонятные самодельные облака и предлагали виртуальные серверы. По качеству технической реализации такие облака сильно проигрывали решениям от настоящих провайдеров, коими в то время могли называться немногие. Именно из-за таких игроков приходилось работать с возражениями там дешевле. Облачный сегмент рынка тогда еще только формировался, и мы занимались просветительской работой, объясняя, почему дешевое не всегда хорошее, и почему результат от недооблачных провайдеров в конечном итоге их разочарует. С конкурентами нашего уровня мы сравнивали себя комплексно и по цене, и по SLA, и по техническим решениям.

Вторая сторона медали сравнение on premise-инфраструктуры с облачной. Заказчики по какой-то причине считали стоимость облака без учета множества сопутствующих затрат. В их видении инфраструктуру может поддерживать один инженер в штате, работая в режиме 24/7. Мы объясняли, что один инженер не может заменить несколько линий поддержки, Service Desk, группу мониторинга доступности, группу экспертов по каждому направлению и дежурную смену. А без всех этих элементов поддержки качество будет неудовлетворительным. Кроме CAPEX на инфраструктуру есть еще и переменные издержки на электроэнергию и работу охлаждающего оборудования, которое порой потребляет не меньше самих серверов.


Так мы защищали каждую цифру проекта и детально прописывали каждую статью расходов в отдельном документе, который разрабатывался чуть ли ни специально для ИТ-директоров, чтобы те могли предметно защищать бюджет на переезд в облако. В конечном итоге, когда все разбиралось по составляющим, приходило озарение, что от облака есть не только технические или организационные, но и ощутимые финансовые плюсы. Для собственной инфраструктуры оборудование, как правило, закупается впрок. С облаком же прогнозировать потребность в ресурсах не надо, легко можно добавлять их при необходимости и так же легко отказываться от ненужных. Сегодня у всех моих коллег эти слова уже отлетают от зубов.

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

Публичное облако(public cloud) Частное облако(private cloud)
Плюсы
  • Плата только за используемые ресурсы.
  • Никаких капитальных инвестиций в развитие ИТ.
  • Администрирование на стороне поставщика (экономия на специалистах).
  • Высокая скорость развертывания.
  • Снижение управленческой ошибки.

  • Кастомизированная инфраструктура.
  • Повышенный уровень безопасности и конфиденциальности данных.
  • Возможность разместить оборудование как в собственной серверной, так и в дата-центре поставщика.
  • Самостоятельное управление инфраструктурой по желанию.
  • Расширенные возможности интеграции с другими сервисами.

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

  • Инсталляционный платеж.
  • На небольших объемах более ощутимая совокупная стоимость владения (TCO).
  • Масштабирование может быть менее быстрым, чем в публичном облаке.

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

2014 второе плечо


До 2014 года наше облако развивалось в рамках одного дата-центра SAFEDATA. Затем поступил запрос от рынка на географически распределенное облако, и мы приняли решение развернуть второе плечо в дата-центре IXcellerate. Это позволило организовать для заказчиков резервный ЦОД на базе нашего облака. Мы обеспечили качественную сохранность резервных копий, организовав резервное копирование крест-накрест. Обеспечили сетевую связность между площадками, арендовав темную оптику, пущенную двумя разными трассами.

2016 муки выбора резервного копирования


Чтобы выбрать подходящее решение для резервного копирования, мы развернули целый исследовательский проект с чек-листами и проверками вендоров по ним. Первоначально мы использовали IBM Tivoli Storage Management, который нам достался практически бесплатно вместе с ленточной библиотекой. Решение было лишено портала управления, все приходилось делать через заявки, а скорость бэкапирования нас расстраивала. На рынке на тот момент были более интересные решения от Veeam, Commvault, Veritas, Avamar. У двух последних не было провайдерской системы лицензирования с оплатой по факту потребления. Нам бы дорого обошелся перевод всех виртуальных машин на новый софт в виде разовой инвестиции. А между двух оставшихся мы выбрали Veeam, потому что, во-первых, у него есть и искомая система лицензирования, а во-вторых, он обеспечивал максимальную скорость бэкапирования и восстановления из резервных копий. Более того, продукт хорошо зарекомендовал себя на российском рынке, вендор сразу позиционировал его как облачный и предложил понятный RoadMap. Раньше мы брали плату только за объем бэкапов. Теперь появилась дополнительная строка в счетах оплата лицензий.

Только за счет перехода на Veeam мы отказались от ленты, все бэкапы хранили на СХД, в три раза увеличили скорость восстановления из резервных копий и частично передали управление бэкапами в руки заказчиков через портал самоуправления от вендора.

2018 год портал управления облачными ресурсами


Третьим серьезным этапом развития нашего облака было создание портала управления облачными ресурсами, где можно вести биллинг, документооборот, заказывать сопутствующие и дополнительные сервисы и общаться с менеджерами облачного проекта. Мы используем платформу как внутри компании, так и с некоторыми заказчиками. Руководители проектов на ней готовят счета, ведут учет потребления ресурсов заказчиков. Сейчас работаем над нашей собственной разработкой Корпоративной Системой МультиОблачных Сервисов (КОСМОС), которая дает возможность управлять не только различными гипервизорами, но и облачными платформами, в числе которых, как вы можете догадаться, будет не только OnCloud.ru. Совсем скоро начнем подключать к ней партнеров по новому направлению, о котором я расскажу чуть позже.

2020 год OnCloud.ru сейчас


Сейчас облако OnCloud.ru географически распределено на два связанных между собой кластера виртуализации в ЦОД IXcellerate и DataSpace TIER III. SAFEDATA мы теперь используем в качестве площадки для пилотов и размещения оборудования заказчиков, требовательных к цене, но не требовательных к сертификатам ЦОД. Кластер в IXcellerate построен на процессорах E5V4 c частотой 2,4 GHz, и в ближайшие полгода мы заменим их на процессоры GOLD второго поколения с частотой 3 GHz. Площадка сертифицирована по 152-ФЗ. DataSpace один из лучших ЦОДов Москвы. У нас там большие четырехпроцессорные серверы с 3 GHz на XEON GOLD. Наш кластер построен на процессорах GOLD первого поколения с частотой 3 GHz.

В обоих ЦОД мы поддерживаем два класса хранения SAS (1 IOPS/GB) и SSD (5 IOPS/GB), для SAS используется СХД INFINIDAT, SSD размещено на NetApp FAS-серии. На первый квартал 2021 года запланирован переход с NetApp FAS-серии на Huawei DORADO V6 на NVME-дисках и последующее внедрение NVMe over Fabric. Бэкапим крест-накрест на базе вендорского решения Veeam Backup & Replication. Резервные копии храним в СХД Lenovo серии DE с SATA-дисками.


Информационная безопасность


В 2020 году в рамках регулярного плана мы переаттестовали облако по 152-ФЗ до второго уровня защищенности включительно. Сертификаты действительны до лета 2023 года. В облаке есть отдельный аттестованный типовой сегмент виртуальных машин. Ежегодно OnCloud.ru успешно проходит экзамен на устойчивость к хакерским атакам Pentest. На страже облака стоят IPS/IDS системы обнаружения и предотвращения вторжений. IPS мониторит и анализирует инциденты информационной безопасности, IDS же блокирует нелегитимные сетевые соединения и доступы. В OnCloud.ru есть Next-Generation Firewall (NGFW) полностью интегрированные межсетевые экраны с ориентацией на защиту от любых угроз. Благодаря этому решению ресурсы в облаке находятся под защитой от угроз независимо от факта проведения атак на него.

Летом 2020 года мы подтвердили партнерство с Lenovo и Huawei, развили направление мультивендорной поддержки оборудования, начали сотрудничать с отечественными и зарубежными гиперскейлерами. Это позволило нам создать новое направление Multicloud, о котором я и хотел рассказать.


Multicloud в партнерстве с гиперскейлерами


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

У нас имеются партнерские соглашения с гиперскейлерами, и мы используем не только ресурсы нашего облака OnCloud.ru, но и ресурсы облачных платформ теперь уже наших партнеров, а не конкурентов, Mail.ru, Yandex, Alibaba, AWS. Мы дорабатываем наш портал управления, чтобы ресурсы партнеров можно было объединить в рамках единой консоли. Сервисы с партнерских платформ доступны по принципу единого окна, а сами партнеры получили дополнительный канал реализации своих сервисов в лице нашей компании.

В мультиоблачной архитектуре конструктор из решений от разных сервис-провайдеров расширяет возможности облака. Развязываются руки не только в техническом плане, но и в финансовом. Появляется возможность кастомно закрывать нетипичные задачи.

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

А еще с помощью решений Mail Cloud Solutions (MCS), нашего партнера, мы можем строить приватные облака полностью в рамках программы импортозамещения, так как платформа входит в реестр российского ПО. Также мы поддерживаем множество разработок, которые созданы исключительно на российском рынке.

Про GPU


Совсем недавно у нас появился тестовый кластер GPU. Кластер развернут на видеокартах NVIDIA Tesla T4, основанных на графических ускорителях последнего поколения. Из него мы можем предоставлять виртуальные серверы с этими видеокартами и со всеми необходимыми лицензиями вендора, чтобы, например, развернуть с ними VDI или виртуальные серверы. Если у компании есть потребность в индивидуальном решении с GPU, мы не отказываем. Теперь наше облако обладает достаточной производительностью, чтобы служить в качестве среды для производства и дистрибуции тяжелого и технически требовательного контента.

В заключение


Оглядываясь назад, самым сложным этапом я бы назвал, наверное, старт облака, когда мы изобретали велосипед с нуля. Мы уже умели рассчитывать финансовую модель облачных услуг, но на выяснение всех нюансов и подводных камней облачных сервисов потребовалось несколько лет. Параллельно мы всегда стремились к индивидуальному кастомному сервису. Небольшими шажками мы осилили путь к лидирующим позициям в облачном сегменте рынка. Сейчас мы с легкостью выводим на рынок новые услуги как в самом облаке OnCloud.ru, так и на смежных платформах, развиваем новые направления и привлекаем все больше партнеров и заказчиков.

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

Подробнее..

NASA взорвало 220 литров воды, чтобы создать таинственные облака

17.05.2021 12:14:39 | Автор: admin

В России начинается сезон серебристых облаков. Примерно с мая по сентябрь вскоре после заката или незадолго до рассвета на небе можно наблюдать красивые яркие тонкие облака, подсвеченные солнцем, когда все другие, более низкие облака, уже или еще в тени. Несмотря на то, что ученые наблюдают эти облака с конца 19 века, до сих пор о них многое предстоит узнать. И, кроме наблюдений в различных диапазонах с поверхности и из космоса, проводятся и активные эксперименты. В начале 2018 года NASA запустило суборбитальную геофизическую ракету, которая распылила на высоте 85 км 220 литров воды, создав условия для формирования серебристых облаков.

Две ракеты с трассерами для наблюдения за ветром на высоте, одна ракета с водой. Зеленый луч - лидар (лазерный радар). Фото NASAs Wallops Flight Facility/Poker Flat Research Range/Zayn RoohiУпоминания о серебристых облаках встречаются с 1880-х. Похожие феномены в атмосфере наблюдали в 1883 после извержения вулкана Кракатау. А первооткрывателем их, скорее всего, является англичанин Роберт Лесли, заметивший странные светлые полосы в ночном небе в июле 1885 и написавший об этом в журнал Nature. Хотя, возможно, это был его соотечественник Томас Ромни Робинсон, наблюдавший некие странные облака 1 мая 1850. Известно, что серебристые, они же полярные мезосферные, облака состоят из частичек льда до 100 нанометров (0.0001 мм) диаметром, неким пока еще не очень хорошо понятным способом оказавшихся на высотах от 76 до 85 км. Они хорошо отражают излучение радара в диапазоне от 50 МГц до 1,3 ГГц, и этот факт пока что также имеет только гипотетические объяснения. Раньше серебристые облака можно было увидеть только выше 50 северной (или ниже южной) широты, но, возможно, они становятся более распространенными, потому что появляются свидетельства об их наблюдении вплоть до территории Турции.

Ричард Коллинз, космический физик Университета Аляски, вместе с коллегами выдвинул гипотезу, что появление серебристых облаков может быть связано с охлаждением атмосферы. Для проверки гипотезы былпоставлен эксперимент, названный Super Soaker (в честь производителей водяных пистолетов): 26 января 2018, в максимально неподходящее для формирования серебристых облаков время, была запущена суборбитальная геофизическая ракета, которая распылила 220 литров воды на высоте 85 км.

Цилиндрический бак длиной 152 см и диаметром 42 см, два заряда из черного пороха по 0,7 кг каждый, и красивый взрыв в мезосфере гарантирован.

Наземные испытания

Отклоняясь немного в сторону, это далеко не самое большое количество воды, распыленной в космосе. В 1962 году в двух испытательных пусках ракеты Saturn I был параллельно осуществлен проект Highwater - оба раза на высоте примерно 167 км выбрасывалось 86 тонн (!) воды.

Наземные съемки проекта Highwater

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

А вот проект Super Soaker, несмотря на гораздо меньший масштаб, оказался успешным. Уже спустя 18 секунд после распыления наземный лидар зафиксировал увеличение отраженного сигнала, говорящее о формировании небольшого серебристого облака, первого, намеренно созданного человеком.

Белая вертикальная линия - время выброса воды. Высота и время формирования облака отмечены белым овалом. Изображение Richard L. Collins et al.

Эксперимент наглядно показал, как охлаждение мезосферы на 26 C привело к появлению облака. Любопытно, что, по словам Коллинза, серебристые облака работают как термостат - охлаждение мезосферы формирует облако, но ледяные кристаллы лучше поглощают тепло, чем вода в форме пара, кристаллы нагреваются, тают и цикл повторяется.

Также Super Soaker подтвердил интуитивно выдвинутую гипотезу о том, что на серебристые облака влияют ракетные пуски. Выхлоп кислородно-водородных двигателей, нередко стоящих на верхних ступенях, - водяной пар, и, например, один пуск спейс шаттла выбрасывал массу воды, составляющую примерно 20% от массы всех серебристых облаков за год.

За серебристыми облаками с 2007 года наблюдает специальный спутник NASA "Аэрономия льда в мезосфере" (AIM).

"Планетарная волна" серебристых облаков в южном полушарии (там их сезон с ноября по февраль)

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

Подробнее..

Почему при Covid-19 увеличилась переподписка, и как это проверить

17.06.2020 10:12:43 | Автор: admin
image
Photo by Victor Rodriguez on Unsplash

Часто мы получаем от клиентов (включая даже крупных) сообщения, в которых сквозит общий мотив: У %provider_name% нам не хватало 192 ядер, а у вас и 120 достаточно. Почему так?. Причем в последнее время из-за пандемии таких запросов стало больше. То ли потому что клиенты вышли в онлайн и почувствовали нехватку ресурсов из-за ажиотажного спроса и у других клиентов тоже, то ли потому что некоторые провайдеры из-за все того же высокого спроса на услуги стали плотнее упаковывать в облаке заказчиков.
Вот эта переподписка, которая обострилась, судя по всему, из-за Covid-19, сейчас волнует очень многих облачных пользователей. Поэтому мы постараемся ответить на наиболее распространенные вопросы и рассказать про инструмент, который позволит проверить наличие переподписки у вашего провайдера.
Может показаться, что эта тема уже не раз поднималась на Хабре и за его пределами, а статья будет полезной только совсем зеленым новичкам. Но мы не писали бы этот материал, если бы предполагаемый уровень осведомленности клиентов об этом явлении совпадал с реальным.

Что такое переподписка


Здесь все достаточно просто. К примеру, заказываете вы у провайдера определенные мощности ядра CPU, оперативную память, дисковое пространство. При этом вы не планируете постоянно использовать его на все 100%, следовательно, утилизация мощностей будет очень невелика. Провайдер тоже человек. Ему хочется зарабатывать, а значит, важно повышать утилизацию оборудования. Поэтому на свой страх и риск некоторые провайдеры перепродают выделенные для вас мощности другим клиентам из расчета, что ваши пиковые моменты никогда не произойдут в одно и то же время. А если и произойдут, то без какого-то сильного ущерба для бизнеса. Иными словами, может оказаться, что вы рассчитываете на конкретные мощности, проводите тесты и живете в уверенности, что в условную Черную пятницу приложение выстоит. А по факту информация от провайдера не соответствует действительности. Что в итоге? Падение, нервы, выяснение отношений?

Не все так однозначно.

Провайдеры: взгляд изнутри


Бесконечно можно делать три вещи: обновлять ленту инстаграма, скучать по офису на карантине и сравнивать облачных провайдеров.
Допустим, можно зайти с позиции цены. Каждый провайдер обозначает стоимость одного vCPU. Но что собой представляет этот vCPU, как его сопоставить с реальной производительностью? Проблема актуальна и для компаний, живущих у единственного провайдера, и для тех, кто арендует мощности сразу у нескольких. В последнем случае у этой задачки появляется дополнительная звездочка: нужно сопоставить тарифы разных провайдеров и привести их к единой сетке. У кого-то цены пониже, у кого-то процессоры помощнее.
Почему сложно сравнивать провайдеров? Во-первых, разные провайдеры по-разному распределяют ресурсы. Используют разное железо например, те же процессоры могут значительно отличаться. Конечно, надо сверить модель процессоров насколько они свежие. Однако, главное у всех разная переподписка. Она многократно усложняет расчеты: чтобы понять, сколько именно денег вы платите за конкретные мощности, требуется провести несколько замеров о них и поговорим.

Зная реальные цифры, уже можно сравнивать.
В ИТ-среде, особенно у клиентов, которые непосредственно в технической нише не работают, бытует мнение, что переподписка это чистое, рафинированное зло. На самом деле, это не так. Практически все клиенты, закупая мощности, закладывают некоторую их часть на компенсацию возможной переподписки. Если посмотреть на ситуацию со стороны провайдера, выходит, что средняя утилизация даже у очень крупных компаний (торговая сеть, банк) составляет буквально 5-7%. Это ничтожно мало. Как провайдеру бороться с такой низкой утилизацией?

Самое первое, что приходит на ум hyper-threading. Режим многопоточности включен абсолютно у всех провайдеров. В некотором смысле, он уже является переподпиской. Кто-то на этом останавливается, кто-то идет дальше. Здесь все зависит от целевого сегмента провайдера. Заказчики enterprise-уровня тщательно следят за показателями, умеют мониторить загрузку процессоров. Мыслят они приблизительно так: на своем сервере хочется иметь загрузку ЦП на уровне 15-20%. В облаке можно не скромничать и выжимать все 40-50%. И действительно нагружают. Переподписывать в такой ситуации как минимум некультурно. В некоторых случаях имеет смысл разве что перебалансировать нагрузку. Перенести сильно нагруженную машину на хост к менее загруженной, чтобы физический сервер был сбалансирован.
Если целевая аудитория компании частные лица, ситуация меняется. Допустим, Васе Доу (или Джону Пупкину) понадобилась виртуальная машина. Он хочет разместить на ней сайт мистервася.рф. Потенциальное количество его уникальных посетителей 3 с половиной человека в год. То есть сайт должен работать стабильно, но нагрузка у него будет очень скромная. Исходя из этих требований, Вася-Джон не захочет платить за сайт много денег. А крупному провайдеру будет нерентабельно отдавать виртуальную машину за сумму, комфортную для нашего героя. Компания, специализирующаяся на небольших клиентах, с радостью предоставит ему ВМ. Не потому что у нее процессоры намного дешевле или стойки хуже. Дело в переподписке. Enterprise-провайдер на одном физическом хосте может разместить 25-30 виртуальных машин, а компания поменьше 120-130. Чем менее требовательна к ресурсам целевая аудитория, тем большую переподписку можно себе позволить. И тем дешевле будет обходится каждая виртуальная машина для всех действующих лиц.
На самом деле, величина переподписки в чистом виде заказчику не интересна. Для него важно, сколько ресурсов он получит, нагружая систему. Так зачем же, если все устраивает, измерять переподписку своего провайдера?
Объективных причин всего две. Первая если вы чувствуете, что переплачиваете за мощности. Вторая если тормозит то, что тормозить не должно. В обоих случаях действительно имеет смысл замерять переподписку у нескольких провайдеров и переехать туда, где она ниже. Причем настолько ниже, чтобы решить все возникшие проблемы за те же или меньшие деньги.

Инструменты измерения переподписки


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

Итак, поехали.
Нам понадобится две виртуальные машины CentOS 7.x по 1 vCPU, так как мы тестируем производительность одного ядра.
Предварительно скачаем сам скрипт тестирования:

@vm1: curl https://storage.cloud.croc.ru/cloud-tests/perf.sh > perf.sh; chmod +x perf.sh@vm2: curl https://storage.cloud.croc.ru/cloud-tests/iperf.sh > iperf.sh; bash iperf.sh


@VM1 на данной ВМ будем запускать все необходимые нам тесты
@VM2 потребуется нам для тестирования сетевой подсистемы, поэтому установим сюда только необходимые нам утилиты
C помощью утилиты NBench замеряется скорость выполнения различных математических операций. Соответственно, чем она выше, тем лучше.

Запускаем тест на производительность CPU:

@vm1./perf.sh cpu


После первого шага будут созданы следующие файлы:
./testresults/cpuinfo.txt в него будет помещена информация о физическом процессоре, которую можно будет расшифровать на сайте вендора. Если эта информация не идет в разрез с информацией от провайдера, все в порядке.
./testresults/cpu_bench.txt результаты теста производительности процессора утилитой NBench

image

Тут нас интересует сумма этих трех значений. Чем она больше, тем лучше производительность
./testresults/steal.log ежесекундные результаты замера параметра steal time
./testresults/average-steal.log среднее значение steal time

Steal time это процент времени, в течение которого виртуальный процессор (vCPU) ожидает физический CPU, пока гипервизор обслуживает другой vCPU.
В случае когда виртуальная машина совместно использует ресурсы с другими экземплярами на одном хосте в виртуализированной среде, этот параметр определяет потерю времени за счет ожидания выполнения задач других виртуальных машин.
Steal time измеряется в процентах и указывает на то, что процессам внутри ВМ не хватает процессорного времени. Этот показатель напрямую влияет на производительность ваших приложений и по-хорошему должен быть равен нулю. Однако здесь есть нюанс: если провайдер пользуется ПО от VMware, виртуальная машина может показывать ноль из-за того, что гипервизор не отдает ей актуальные данные. Так что, если steal time отсутствует, а ВМ очевидно притормаживает, имеет смысл потребовать объяснений у провайдера. Возможна переподписка, по коням!

Далее обратимся к дискам. Помимо очевидного IOPS и Bandwidth, нас будет интересовать показатель времени отклика. Он отражает время, которое проходит с момента обращения к диску до того, как он начнет передавать данные. В нормальной ситуации должно проходить <5мс.

@vm1./perf.sh disk


Тестирование диска проводится при помощи утилиты fio. Эта утилита симулирует желаемую нагрузку операциями ввода\вывода. Существует несколько основных задаваемых параметров, о которых ниже:
1. I/O type (тип ввода\вывода)
Определяет основной алгоритм проверки. Последовательное или случайное чтение\запись или, возможно, даже смешанный режим. Буферизированный ввод-вывод или прямой (raw).
2.Block size (размер блока)
Очевидно, определяет размер блока (ов), используемого в тестах. Это может быть единственное значение или диапазон.
3. I/O size (размер ввода/вывода)
Определяет количество данных, используемых в тесте.
I/O engine (движок)
Определяет использование технологий, таких как: Memory mapping, splice, async I/O, SG.
I/O depth (глубина)
При использовании операций асинхронного ввода/вывода определяет количество потоков, которые используются в тесте.

После данного шага будут создан следующий файл:
./testresults/fio-results.txt данные о производительности дисков (input/output). Разумеется, чем быстрее, тем лучше, но стоит учесть, что если во время тестирования на ВМ проводились операции чтения/записи, эти показатели могут быть хуже, чем реальные.

image

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

Далее мы замеряем скорость обмена данными между виртуальными машинами. Здесь все точно так же, как и в случае с дисками: чем быстрее, тем лучше. Чтобы понять, насколько ваши параметры близки к нормальным, обратитесь к SLA. Оптимальные результаты выглядят следующим образом:

Скорость между BM (замеряем пропускную способность сети (gbit/sec)):
@vm1:     iperf3 -s -p 5201 @vm2:     iperf3 -c <vm1_ip> -p 5201 -t 300 -V


image

Тут необходимо обратить внимание на следующие показатели:
Bandwidth средняя скорость передачи данных за интервал времени. Чем выше этот показатель, тем больше пропускная способность сети
Retr количество повторно отправленных TCP-сегментов. Чем ниже этот показатель, тем лучше. В идеале он должен равняться нулю.

Разумеется, по итогам этих тестов вы не сможете со 100% гарантией утверждать, что переподписки у вашего провайдера нет совсем или что она душит ваше приложение. По-настоящему важно не то, что происходит на бэкграунде провайдера, а то, как фактически ведут себя ваши приложения в его инфраструктуре. Если вас все устраивает, запускать тесты и тратить уйму времени на сопоставление результатов будет странно. Если что-то не так замеряйте, ищите причины и разговаривайте с провайдером.
Подробнее..

VMworld 2020 щеночки, кубики и Рене Зеллвегер

16.10.2020 20:06:22 | Автор: admin

Но, разумеется, это далеко не все, чем нам запомнилась самая масштабная ИТ-конференция года. Те, кто следит за нашими социальными сетями, наверняка знают о том, что в течение всего события мы освещали его ключевые моменты и брали интервью у экспертов VMware. Под катом короткий список самых примечательных анонсов VMworld 2020.

Год перемен

Вряд ли хоть один спикер обошел вниманием сложность и необычность уходящего года. Множество докладов было сосредоточено вокруг тем здравоохранения, включая разработку вакцины от COVID-19, безопасности, удаленной работы и обучения. Спикеры подчеркнули, что в насыщенном технологиями современном мире именно ИТ позволяет сохранять накопленный опыт и двигаться вперед.

Крис Вольф, вице-президент VMware, ввел новое значение термина выносливость применительно к бизнес-сообществу: теперь это не просто способность справляться с повышенными нагрузками, но и умение адаптироваться к меняющимся условиям, сохраняя свою целостность. Девиз VMworld 2020 Когда мы вместе, все становится возможным (Together, Anything is Possible).

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

Безопасность и сети

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

VMware SASE Platform

Первый продукт, о котором мы сегодня расскажем, VMware SASE Platform. Задача решения обеспечить сотрудников компаний инструментами сетевой безопасности в любом месте, где бы они ни находились. VMware SASE Platform базируется на VMware SD-WAN массиве, состоящем из более чем 2700 облачных узлов в 130 точках входа.

В основе VMware SASE Platform лежат следующие компоненты и принципы:

  • Непосредственно VMware SD-WAN.

  • Cloud Access Service Broker (CASB), Secure Web Gateway (SWG) и удаленная изоляция браузера.

  • VMware NSX Stateful Layer 7 Firewall.

  • Концепция безопасности Zero Trust во главе угла стоит идентификация конечного пользователя и его устройств при каждом подключении.

  • Edge Network Intelligence машинное обучение используется для предиктивного анализа и обеспечения безопасности как конечных пользователей, так и IoT-устройств.

Наряду с VMware SASE Platform стоит поговорить и о других инновациях компании.

VMware Workspace Security Remote

Это интегрированное решение для обеспечения безопасности, администрирования и удаленной ИТ-поддержки конечных устройств. Включает антивирусную защиту, аудит и устранение неполадок, а также функционал Carbon Black Workload по обнаружению и реагированию на угрозы.

VMware NSX Advanced Threat Prevention

Брандмауэр для защиты east-west трафика в многооблачных средах на базе машинного обучения. Служит для распознавания угроз и сокращения числа ложных срабатываний.

Также было анонсировано несколько новых решений из сетевого портфеля VMware:

  • VMware Container Networking with Antrea продукт для управления сетевым взаимодействием контейнеров в виртуальной среде.

  • NSX-T 3.1 расширение возможностей маршрутизации на базе API, автоматизированное развертывание процессов с помощью Terraform Provider.

  • VMware vRealize Network Insight 6.0 проверка и контроль качества сети на базе модели ее работы.

VMware Carbon Black Cloud Workload

Решение было анонсировано в виде планируемой технологии еще в прошлом году. Его задача обеспечение безопасности виртуальных машин на vSphere.

Кроме того, в VMware vCenter теперь будут встроенные инструменты для визуализации рисков, подобные тем, что уже есть в Carbon Black Cloud.

Также в планах компании представление отдельного модуля Carbon Black Cloud для защиты рабочих нагрузок Kubernetes.

VMware Workspace Security VDI

VMware Workspace ONE Horizon и VMware Carbon Black Cloud интегрированы в единое решение. Решение использует поведенческий анализ для защиты от вымогателей и бесфайловых вредоносов. В VMware vSphere оно доступно через VMware Tools. Больше нет необходимости устанавливать и настраивать агенты безопасности отдельно.

Приоритеты в мультиоблачности

Мультиоблачность один из ключевых векторов VMware. Тем не менее, многим компаниям с трудом дается переход даже в одно облако. Возникают сложности с вопросами безопасности и связности различных разрозненных решений. Закономерно, что бизнес боится появления такого хаоса сразу в нескольких облачных средах. Стратегия VMware в ключе мультиоблака призвана помочь заказчикам решить проблемы унификации средств и процессов.

Azure VMware Solution

Компания уже оставила заметный след в таких крупных публичных облаках, как AWS, Azure, Google Cloud, IBM Cloud и Oracle Cloud.

Azure VMware Solution позволит бизнесу сэкономить за счет гибридного использования Azure, интеграции с Microsoft Office 365 и других нативных сервисов Azure.

VMware Cloud on AWS

Новые возможности появились и в VMware Cloud on AWS. Среди них:

  • VMware Cloud Disaster Recovery.

  • Поддержка VMware Tanzu.

  • VMware Transit Connect.

  • Улучшения в области автоматизации: расширение поддержки vRealize Operations, Cloud Automation, Orchestrator, Log Insight and Network Insight support.

  • Расширенные возможности HCX: vMotion с поддержкой репликации, локальная маршрутизация для мигрированных ВМ, а также группировка миграция.

Project Monterey

Без сомнения, это один из самых интересных проектов VMware из числа анонсированных на VMworld 2020. Фактически, Project Monterey логическое продолжение технологии Project Pacific для инфраструктуры VMware Cloud Foundation, только теперь с акцентом на железо.

Миссия проекта состоит в том, чтобы реорганизовать и переработать архитектуру VCF для интеграции новых аппаратных возможностей и компонентов ПО. Сообщается, что благодаря SmartNIC VCF сможет поддерживать исполнение программ и ОС без гипервизора, то есть на чистом железе. Выделим следующие основные моменты:

  • Увеличение пропускной способности и уменьшение задержек за счет переноса сложных сетевых функций на железный уровень.

  • Унифицированные операции для всех типов ПО, включая bare-metal ОС.

  • Возможность изоляции приложений без уменьшения их производительности благодаря применению модели Zero-trust security.

Если проект вас заинтересовал, рекомендуем прочитать (на английском) эту статью.

VMware vRealize AI

Еще в 2018 году сообществу был представлен Project Magna. На минувшей конференции основной функционал проекта стал доступен в качестве VMware vRealize AI. Решение использует обучение с подкреплением для самонастройки производительности приложений. Оптимизация кэша чтения и записи в средах vSAN с помощью vRealize AI позволила на 50% повысить производительность операций ввода-вывода, включающих чтение и запись.

Inside the Tanzu Portfolio

С серьезными новостями покончено, и мы переходим к развлекательному контенту. В рамках сессии Inside the Tanzu Portfolio была продемонстрирована короткая романтическая комедия, включавшая кадры с актрисой Рене Зеллвегер. Эксперты VMware решили, что игровой формат позволит продемонстрировать новые возможности Tanzu и немного развлечет зрителей, подключившихся к конференции онлайн. Разумеется, воспринимать эту трансляцию на 100% серьезно не стоит это не академический материал, а простое объяснение портфеля решений, составляющих Tanzu.

Говоря кратко, Tanzu представляет собой новый бренд, под капотом которого находится целый комплекс ПО для разработчиков, призванный облегчить их труд на всех этапах жизненного цикла приложения. В частности, продукты Tanzu решают ключевые вопросы построения приложений, менеджмента, обеспечения безопасности, отказоустойчивости и сосредоточены вокруг работы с контейнерами Kubernetes. Рекомендуем трансляцию к просмотру продуктологам и менеджерскому составу компаний.

Virtual Data Therapy PuppyFest

Компания Commvault, золотой партнер компании VMware, продемонстрировала полусерьезный ролик о защите данных под слоганом Dont let your data go to the dogs Не допустите, чтобы ваши данные пошли псу под хвост.

Примечательно, что после трансляции основного видеоматериала был открыт живой чат с представителями команды Puppy Love компании, которая занимается передачей спасенных собак в добрые руки. Практически любой зритель из США мог в ходе сессии не только задать интересующие технические вопросы, но и обзавестись четвероногим другом.

Что же в итоге?

VMworld 2020, без преувеличения, знаковое событие на технологической арене. Если бы оно не состоялось, это значило бы, что у нашего мира начались по-настоящему тяжелые дни. Но, как оптимистично заявляет Пэт Гелсингер, CEO VMware, игра продолжается. Новые трудности подстегивают нас на создание новых способов борьбы с ними. Жизнь идет своим чередом пандемия понемногу отступит, а багаж знаний и опыта, накопленный за месяцы изоляции, останется с нами и послужит надежным подспорьем для создания чего-то нового, крутого и интересного.

А что вам больше всего запомнилось из минувшей конференции? Поделитесь своим мнением в комментариях.


По традиции скажем: оставайтесь на связи и обязательно послушайте выпуски нашего подкаста IaaS без прикрас, посвященные VMworld 2020. На Яндекс Музыке, Anchor и YouTube доступны:

  • VMworld 2020: Генеральная сессия, мультиоблака и стратегия VMware

  • VMworld 2020: Стратегия безопасности, SD-WAN, SASE и будущее сетей

  • VMworld 2020: Kubernetes, Tanzu Portfolio и что нового в vSphere 7

Подробнее..

Почему онлайн-митаапы никогда не заменят оффлайн, что с этим делать и почему онлайн всё равно нужен

26.06.2020 16:08:22 | Автор: admin
Мне это надоело.
В прошлом году я был на 50+ митапах, нескольких конференциях и на паре хакатонов.
За последние пару месяцев я сходил на 30 онлайн-мероприятий разных форматов, и хочу рассказать, почему зря потратил это время, в чём проблема с онлайн (и офлайн) митапами и что мы можем сделать чтобы оказаться в чуть лучшем мире. Давайте по порядку.

Зачем приходить на митапы

Знания (доклады, контент)

Мы выбираем мероприятия по направлениям и темам, просим работодателя оплатить участие, мотивируя это получением новых знаний. И звать на митапы можно исходя из позиции прокачки экспертизы и получения знаний. Давайте посмотрим, с кем такие мероприятия конкурируют в онлайне:
  • Pluralsight библиотека на 7.000+ онлайн-курсов по разработке, облакам, МЛ, девопсу, безопасности и данным.
  • Coursera сборник онлайн-курсов, сертификаций и программ лучших университетов и компаний мира, 4.000 курсов.
  • Записи докладов с конференций на Youtube на русском и английском
  • Хабр. Серьезно, доклад это же видеоверсия статьи.

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

Развлечение/награда/отдых

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

Ходить в онлайн за развлечением сложно. Во-первых, есть много других возможностей: компьютерные игры, онлайн-квизы, компьютерные игры, сериалы, компьютерные игры. Во-вторых, в онлайне возможности взаимодействия сильно ограничены. А ещё отношение к митапам немного другое, легко отвлечься или слушать их вполуха параллельно с работой, как подкасты. А дополнительные активности не будут сконцентрированы и их легко пропустить.

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

Нетворкинг


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

Как на счёт онлайн-митапов? Нууу, примерно, никак. Чаще всего общения участников или нет совсем, или оно ограничивается чатом трансляции на ютуб. Нет личного общения, нет элемента знакомства, и даже в зум-афтерпати есть проблема из-за того, что все сидят в одной беседе и нет возможности познакомиться или углубиться в общении тет-а-тет.

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

Похоже, что ходить на онлайн-митапы за нетворкингом не стоит, в твиттере нетворкинга и открытости может быть даже больше.


Всё. Это основные цели для конференций и митапов. И онлайн-митапы проигрывают по каждому из этих направлений. Ну, по крайней мере, в теории. А что на самом деле?

Пруфы

В подсчете статистики нам поможет сайт https://meetups-online.ru/, на котором собраны почти все онлайн-события в ИТ. За первую половину мая прошёл 31 митап и можно по ним посмотреть доступность нетворкинга на мероприятиях. Вторую половину мая я пропустил потому что участвовал в РИТ++ и Podlodka Teamlead Crew, о которых скажу отдельно.

Методика

Сложно сравнивать офлайн и онлайн из-за разных механик, поэтому я просто выбрал те механики, которые связаны с обратной связью (от спикера, от аудитории, к спикеру) и позволяют митапу отличаться от его расшифровки в текст:
  1. Хорошая доступность без сложных регистраций и установки нетипичных для прикладной работы программ.
  2. Чат участников трансляции, в котором идёт беседа во время митапа.
  3. Возможность задать вопрос текстом в чате или на отдельном сайте.
  4. Возможность выйти в эфир и задать вопрос спикеру или обратиться к аудитории голосом.
  5. Обратная связь от аудитории и подстройка сценария разговора под актуальные для собравшихся темы. Это может быть и в голосовом обсуждении, и с помощью чата, если есть отдельный редактор, который мониторит канву обсуждения и скидывает ведущему и участникам актуальную информацию.
  6. Общий созвон всех участников, который убирает границу между спикером и аудиторией, а поучаствовать в обсуждении можно максимально просто.
  7. Техники для развития нетворкинга: BoF-сессии, общие интерактивные голосования.
  8. Приватность и уютность общения: случайный кофе, несколько тематических комнат по интересам в дискорде, привычный мессенджер вроде телеграма, в котором можно быстро перейти в личку.
  9. Оригинальные инструменты/форматы/техники, которые помогают стереть границу между участниками и дают больше возможностей для обмена опытом: единая Miro-доска, VR, стенды партнеров в онлайне.

Итоги

Стандартный набор организатора онлайн-митапа созвон со спикером, трансляция на ютуб и чтение вопросов из чата после доклада. Я видел ужасное: доклад без презентации и без включенного видео. Невообразимые платформы для проведения митапа, которые не оставляют записей. Митапы-призраки, которые не оставляют после себя вообще ничего, кроме анонсов. Ccылка на трансляцию появится незадолго до начала во всех наших информационных каналах без указания этих каналов.

Что делать

Отличные новости! Выход есть. То есть, я попытался его найти.


Поддерживайте оффлайн-организаторов

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

Не организуйте митап ради митапа

Если вы организатор, то посмотрите на инструменты, которые могут улучшить UX вашего митапа. Zoom позволяет хорошо модерировать трансляцию и не разделяет аудиторию. В Discord есть возможность делать много разных тематических комнат и максимально быстро переключаться между ними, даже устанавливать его не понадобиться, можно пользоваться браузером. Miro даст общее пространство для рисования и стикеров участникам. Посмотрите на Slido и Mentimeter.

Одним из самых ярких впечатлений от РИТ++ было афтерпати в Spatial, который эмулирует пространство вечеринки в 2d. Можно запускать сразу несколько трансляций youtube в разных углах и собираться вокруг них, можно объединяться в компании и подходить к другим компаниям. Есть несколько тематических комнат, в каждой из которых собиралось сразу несколько кружков по интересам, перейти между ними можно очень быстро, а помогает ощутить себя в тусовке.

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

Сморите на новые форматы

Приходите и посмотрите, как Скайенг делает новый формат онлайн-холивара. Уже были про TDD и тестовые задания, афтерпати там может быть таким же насыщенным, как и основная часть. Это крутой формат потому что он легко переноситься в оффлайн и сейчас самое время его обкатать.

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

23 мая прошёл онлайн-паб без докладов, только общение за столиками по интересам с экспертами, афтерпати и барные викторины в перерывах.

Podlodka Teamlead Crew это и конференция с контентом, который генерировали сами пользователи, набрасывая свои темы и кейсы для разбора, и профессиональное сообщество по подписке. Slack с десятком тысяч сообщий в разных каналах, шарингом интересных подборок и материалов и разбором болей всеми участниками сообщества. Выглядит как что-то, чему стоит продолжить существовать и после возврата оффлайн-мероприятий.

Давайте много честной обратной связи

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

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

Ещё не поздно рассказать своё мнение в большом опросе Нужны ли онлайны этим летом? И какие, если да.

Оставайтесь дома

Мы скоро встретимся, просто нужно немного подождать :)
Подробнее..

Kubernetes как сервис изучение рынка

24.05.2021 20:06:11 | Автор: admin

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

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

Почитал, одобрил и забыл, да вот только буржуйский Facebook про меня забывать не хотел. И где-то с неделю показывал мне рекламу с самыми наивыгодными предложениями этого самого кубернетиса. В результате я в очередной раз продемонстрировал моральную слабость и решил лично познакомиться с этим зверем.

Дисклеймер

Главное, что я понял, так это что если вы не слышали про Kubernetes и не понимаете, как его использовать в вашей работе, то в 99% случаев он вам и не нужен. Но сама идея сокращения цикла разработки за счёт быстрой доставки пользователю и возможности тестировать версии приложений на узких сегментах аудитории прекрасна. Посмотрел, что получилось, после чего можно распространить версию приложения на всех пользователей или немедленно её откатить.

Но продолжу тему знакомства с этой модной платформой управления контейнерами. Я решил не ограничивать себя одной компанией, наиболее часто мозолившей глаз в Facebook. А выбрать несколько более-менее крупных фирм, у которых есть толковое предложение.

Как выбирал

Вы удивитесь, но поиском. Погуглил Kubernetes в облаке, пролистал пару страниц. Так и нашёл семь компаний, которые наиболее активно продвигают эту услугу: Mail.ru Cloud Solutions, Cloud4Y, CloudMTS, Yandex.Cloud, КРОК, DataLine, Selectel.

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

Про субъективность

Это абсолютно необъективная статья. Было просто интересно, что это за зверь, какой сервис выглядит удобнее и надёжнее остальных, какой проще и понятнее именно для меня. Так что учитывайте, что мой опыт это всего лишь мой опыт. У вас могут быть другие предпочтения и знания. Рассматривайте данный текст просто как информацию, абстрактное общее сравнение, а не прямое руководство к действию.

Ещё момент: я собирал информацию, которая есть в открытом доступе, стараясь не задалбывать менеджеров глупыми частыми вопросами по почте и телефону. Мне было неловко звонить и расспрашивать, если покупать всё равно не планирую. Тратить чужое время из-за неуёмного моего любопытства было как-то стыдно. Ну захотелось мне проверить, будет ли работать их сервис, нравится ли он мне как пользователю. Были некоторые моменты, которые я узнавал по телефону и почте, но в основном все данные брал из документации и маркетинговых материалов.

Здесь возникли первые сложности. Я старался звонить по-минимуму, но тот же Яндекс без звонка хоть что-то сообщать отказывался. Остальные без проблем написали о том, что они предлагают и как всё это работает. Ну и ладно, подумал я. Информации в свободном доступе тоже хватает. Вернусь позднее и пообщаюсь, раз они такие буки. Или не пообщаюсь, если к тому времени уже натестируюсь по самый докер. Это была зима 2020, и у меня было много свободного времени.

Знакомство

Звонить и писать сразу всем компаниям гиблое дело, особенно если не готов покупать, а хочешь лишь проверить, как оно работает. Поэтому я потихоньку запрашивал тестовый доступ у каждой компании по очереди. Быстрее всех ответили Selectel, Cloud4Y и MCS, а вот Крок и DataLine оказались не столь быстрыми. Мне даже пришлось несколько раз ментально их пнуть напоминать о себе, чтобы получить какой-то ответ.

И уже на этом этапе круг подопытных кроликов провайдеров сузился. DataLine вообще никак не захотел со мной общаться. Письма ушли в молоко. Ну и ладно, подумал я. И нечего нас дёргать со всякими глупостями, подумал неизвестный мне менеджер DataLine. КРОК вежливо извинился и сообщил, что мелочь вроде меня им не интересна. Неприятно, но честно. Спасибо за это. Лучше честный отказ, чем игнор или затягивание времени.

Отмечу, что прямо-таки агрессивных продаж не наблюдалось. Понятно, что я не самая крупная рыбка, которая водится в облачном море. Но всё же. Порадовало, что мне не впаривают, а предлагают. Убеждают. Правда, почти все компании сочли своим долгом сделать меня подписчиком полезных корпоративных рассылок. Но к этому я был готов.

Чуть забегая вперёд скажу, что поскольку компаний стало меньше, а я вошёл во вкус, то в процессе тестирования сервисов Kubernetes вспомнил и про Яндекс. А не позвонить ли мне им?, подумалось мне. Как оказалось, не зря у этих ребят оказалось не самое плохое решение из тех, что мне удалось посмотреть.

Тестирование

Теперь давайте посмотрим, чего я натестировал.

Компания

Selectel

Mail.ru Cloud

МТС Cloud

Yandex.Cloud

Cloud4Y

Платформа, на которой построено решение

OpenStack + KVM

OpenStack + KVM

Стек технологий виртуализации VMware vSphere и NSX-T

Собственная разработка

Предоставляется на базе Container Service Extension (CSE) в VMware Cloud Director

В большинстве своём решение строится на OpenStack + KVM. Это часто используемая связка. OpenStack это тот же Kubernetes, но захватывающий уровень виртуальных машин. Он бесплатен, у него большая комьюнити, и есть ответы на многие вопросы. Но иногда поиск этих ответов занимает много времени, а в случае работы с виртуальной инфраструктурой время часто бывает критически малым ресурсом. Кроме того, специалистов, умеющих работать с OpenStack, на рынке не так много.

Также провайдеры используют стек технологий виртуализации VMwarevSphereиNSX-T. NSX-T предназначен для гибридных окружений, как в смысле поддержки разных гипервизоров (ESXi и KVM), так и в плане поддержки облачных инфраструктур (например, AWS). VMware платный, но зато предлагает гарантированную поддержку от вендора с ответами на сложные вопросы и кейсы. И специалистов по VMware найти проще.

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

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

Облачные балансировщики нагрузки

Компания

Selectel

Mail.ru Cloud

МТС Cloud

Yandex.Cloud

Cloud4Y

Балансировщик

Создаётся вместе с кластером

Создаётся автоматически с кластером

По умолчанию открыты только 80 и 443 порты. Балансировщик добавляется автоматически при создании кластера

Создаётся дополнительный балансер

Создаётся дополнительный балансер

Если говорить про балансировщик, распределяющий нагрузку, то в Selectel он создаётся вместе с кластером. Автоматическое создание балансировщика вместе с кластером предлагает Mail.ru, у него возможно автоматическое и быстрое масштабирование до 1000 узлов. А вот МТС удивил. Да, балансировщик создаётся автоматически при создании кластера. Но умолчанию открыты только 80 и 443 порты. Дополнительные порты можно открывать только через поддержку. Яндекс и Cloud4Y тоже предлагают создание дополнительного балансировщика. На этот случай есть специально написанные инструкции, ссылку на которые они мне заботливо прислали.

Управление

Если говорить про управление нашими драгоценными контейнерами и кластерами, то стоит сказать, что компании используют проверенные типовые решения:

Компания

Selectel

Mail.ru Cloud

МТС Cloud

Yandex.Cloud

Cloud4Y

Управление

Web/API

Web/API

API

Web/Console Yandex.Cloud

Web/API

Mail.ru предлагает варианты управления кластером как через Kubernetes Dashboard, так и через kubectl. Web/API возможны в Cloud4Y и Selectel. У МТС только API. К тому же, управление docker-контейнерами из интерфейса не предусмотрено. В интерфейсе происходит управление кластерами Kubernetes. Яндекс пошёл своим путём. У них предлагается Web и Console Yandex.Cloud. Мне показалось не очень удобным и логичным, когда для работы требуется специальная яндексовая консоль. Может, есть и какой-то другой способ, только я его не нашёл.

Хранилища данных

Компания

Selectel

Mail.ru Cloud

МТС Cloud

Yandex.Cloud

Cloud4Y

Persistent Volumes

Поддерживает блочные и сетевые устройства NFS

Блочное устройство накладывает на ограничения по readwritemany

Persistent Volumes идёт через блочное устройство что накладывает на ограничения по readwritemany а можно только одной ноде писать на него

Блочные устройства могут работать только в ReadWriteOnce

Поддерживает блочные и сетевые устройства NFS

Persistent Volumes можно считать аналогом нод в самом кластере Kubernetes. Зачем вообще нужна эта штука? Допустим, у вас есть несколько разных хранилищ. К примеру, одно быстрое на SSD, а другое медленное на HDD. Вы можете создать два Persistent Volumes в соответствии с этим, а затем выделять подам место в этих томах. Kubernetes поддерживает огромное количество подключаемых томов с помощью плагинов.

Вот тут у провайдеров используются разные решения. Cloud4Y и Selectel поддерживают как блочные, так и сетевые устройства NFS. И это хорошо. У Mail.ru блочное устройство накладывается на ограничения по ReadWriteMany(RWX). В документации указано, что механизм Persistent Volume позволяет подключить существующий Cinder Volume, находящийся на кластере Ceph в качестве постоянного хранилища данных к подам. Хранилище на базе Ceph обеспечивает сохранность данных за счёт трёхкратной репликации. У МТС Cloud Persistent Volumes тоже идёт через блочное устройство, что накладывается на ограничения по ReadWriteMany. Можно только одной ноде писать на него. В Yandex.Cloud блочные устройства могут работать только в ReadWriteOnce(RWO).

Контроллеры Ingress

Компания

Selectel

Mail.ru Cloud

МТС Cloud

Yandex.Cloud

Cloud4Y

Ingress

Добавлять нужно самостоятельно

Можно выбрать при установке кластера

Можно добавить убрать при создании кластера

Ingress на базе LoadBalancer

В случае необходимости разворачивается вручную по инструкции

У Selectel в версии Managed Kubernetes Ingress Controller не предустанавливаются в кластеры. Для создания объектов Ingress потребуется самостоятельно установить Ingress Controller. Обратите внимание, что при создании Ingress Controller у вас, вероятнее всего, будет создан Service с типом LoadBalancer помимо самого приложения Ingress Controller. В таком случае в вашем проекте будет автоматически создан дополнительный балансировщик нагрузки, который отобразится в разделе Балансировщики нагрузки.

Mail.ru позволяет выбрать Ingress при создании кластера. Кластеры Kubernetes, устанавливаемые в MCS содержат преднастроенный Ingress Controller на базе балансировщика нагрузки Nginx, который может обеспечить доступ к вашим сервисам, используя один и тот же выделенный балансировщик нагрузки OpenStack. МТС позволяет добавить/убрать Ingress при создании кластера. В документации МТС сразу говорится, что NGINXIngress разворачивается в стандартной настройке при запуске кластера при выборе соответствующего параметра. У Яндекса Ingress построен на базе LoadBalancer. Cloud4Y предлагает разворачивать Ingress в ручном режиме при необходимости.

Масштабирование

Компания

Selectel

Mail.ru Cloud

МТС Cloud

Yandex.Cloud

Cloud4Y

Масштабирование

Нет

Есть autoscaling, по определенным параметрам загрузки нод, добавляет и убавляется автоматически

Нет

Есть autoscaling, по определенным параметрам загрузки нод, добавляет и убавляется автоматически

AutoScaling на уровне pod определяется на основании конфигурации k8s. Autoscaling на уровне воркеров\нод реализован через vCloud или вручную прописываемые скрипты

У Селектела и МТС нет автоматического масштабирования. Работайте ручками, господа! Надо уточнить, что в МТС автоскейлинг будет добавлен в этом (2021)году. Яндекс и Майл предлагают более удобные условия. У них есть autoscaling по определенным параметрам загрузки нод, добавляется и убавляется автоматически. Cloud4Y предлагает автоскейлинг на уровне pod который определяется на основании конфигурации k8s. Autoscaling на уровне воркеров\нод на лету отсутствует, но можно зайти в vCloud и докинуть ноду или написать скрипты, которые делают то же самое, только запрограммированно

Автоскейлинг удобен, потому что он выполняет мониторинг приложений и автоматически настраивает ресурсы для поддержания стабильной прогнозируемой производительности при минимально возможных затратах. То есть приложения получают нужный объём ресурсов в нужное время. Это важный параметр. И отсутствие автоскейлинга несколько напрягает.

Мониторинг

Компания

Selectel

Mail.ru Cloud

МТС Cloud

Yandex.Cloud

Cloud4Y

Мониторинг

Добавлять нужно самостоятельно

При создании кластера можно добавить Prometheus, Grafana

По стандарту ничего нет, нужно добавлять самостоятельно

Автоматически ничего нет, самому нужно все ставить

Добавлять нужно самостоятельно

Мониторинг это неотъемлемая часть любой инфраструктуры. Правильно настроенный мониторинг четко отражает здоровье ИТ-системы и про активно диагностирует её состояние. В данном случае все используют стандартное решение для VMware в виде плагина. У него есть свои ограничения, 1 мастер нода и 5 воркеров.

Cloud4Y по запросу прислал инструкции, как сделать 3 мастер ноды и добавить балансировщик. Ссылками и вложенными файлами с руководством поделились и другие провайдеры. Правда, Selectel и МТС очень долго раскачивались. Видимо, искали, где у них это всё написано.

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

Персональные данные

Компания

Selectel

Mail.ru Cloud

МТС Cloud

Yandex.Cloud

Cloud4Y

ПоддержкаФЗ-152

Для самой Облачной платформы проведена оценка, для УЗ 3-4. Для остальных сервисов на её базе, в том числе Kubernetes такая оценка возможна позднее

Полное соответствие в ФЗ 152 О защите персональных данных, сервера находятся на территории России;

Поддержки 152-фз нет. Kubernetes планируется развернуть в защищенном сегменте в 2021 году.

Не получил внятного ответа

В ФЗ облаке оно присутствует и полностью соответствует ФЗ.

ФЗ-152 сейчас в тренде, и провайдеры активно развивают это направление. Selectel, Mail.ru Cloud, Cloud4Y обещают, что их решения соответствуют требованиям закона о персональных данных. С Yandex.Cloud я не понял, есть ли такая штука. Похоже, что нет, ведь иначе об этом где-нибудь, да говорилось бы. МТС Cloud пока лишь дорабатывает свою систему.

Так или иначе, работать с персональными данными в кластерах Kubernetes можно у большинства облачных провайдеров.

Оплата

Компания

Selectel

Mail.ru Cloud

МТС Cloud

Yandex.Cloud

Cloud4Y

Какой биллинг

Биллинг почасовой

Pay-as-you-Go почасовой биллинг

Биллинг помесячный

Есть разные варианты, включая помесячный биллинг

Биллинг помесячный

Тут, наверное, и говорить нечего. Особых нововведений в плане оплаты нет.

Отличия от конкурентов

Компания

Selectel

Mail.ru Cloud

МТС Cloud

Yandex.Cloud

Cloud4Y

Отличия решения от конкурентов

Адаптировали Kubernetes в Облачной платформе, чтобы пользователи могли получить стандартный Kubernetes с поддержкой от Selectel.

Тройная репликация и отказоустойчивость (все копии хранятся в трёх томах на разных серверах); пропускная способность (канал трафика 1ГБ/сек); мощный процессор Intel Xeon E5-2660v4.

Принципиально отличается более отказоустойчивой системой виртуализации VMware

Просто хороший сервис.

Квалифицированная поддержка по данному продукту, а также необходимая инфа в КБ.

Самый интересный пункт, на который я рассчитывал. Но увы. Все провайдеры говорили примерно одно и то же. Каких-то особых плюшек не придумано. Это не в укор провайдерам. Это скорее вопрос к их рекламщикам почему решения так сильно похожи друг на друга?

Mail.ru делает упор на тройную репликацию данных и отказоустойчивость, Selectel на привычный типовой формат работы с Kubernetes, Cloud4Y обещает мощную техническую поддержку и развитую документацию в базе знаний. МТС подчёркивает преимущества VMware в плане отказоустойчивости, а Яндекс порадовал формулировкой. Их сервис хороший, и это его ключевое отличие от остальных.

Выводы

Возможно, вы ждёте, что я сейчас скажу, что какой-то сервис хороший, а остальные плохие. А вот и нет! Чисто субъективно мне понравились две компании, но у вас могут быть совершенно другое мнение. Поэтому рекомендовать никого не буду. На вкус и цвет все фломастеры разные.

Отмечу, что техническая поддержка у некоторых компаний оставляет желать лучшего. Чтобы завести кластер или решить проблему, приходилось долго общаться с инженерами. А менеджеры радостно шлют ссылки на видео, где рассказывается совсем не про то, что мне нужно. Возможно, это из-за того, что я был на тестовом периоде, и денег с меня получить было нельзя.

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

Надеюсь, что всё вышенаписанное хоть как-то поможет вам, если вдруг понадобится Кубернетис. Хотя здесь всё очень быстро меняется.

Подробнее..

Переход с Azure на GCP, с ASP.NET MVC на ASP.NET Core 3.1

26.01.2021 20:09:19 | Автор: admin

Автор: Андрей Жуков, .NET Team Leader, DataArt

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

Задача, поставленная заказчиком: Azure -> GCP

Заказчик решил перейти из одного облака (Azure) в другое (Google Cloud Platform). В некотором отдаленном будущем вообще планировалось перевести серверную часть на Node.js и развивать систему силами команды full-stack typescript-разработчиков. На момент моего входа в проект там существовала пара ASP.NET MVC приложений, которым решили продлить жизнь. Их мне и предстояло перенести в GCP.

Начальная состояние, факторы, мешающие сразу перейти на GCP

Первоначально имелось два ASP.NET MVC-приложения, которые взаимодействовали с одной общей MS SQL базой данных. Они были развернуты на Azure App Services.

Первое приложение назовем его Web Portal имело пользовательский интерфейс, построенный на базе Razor, TypeScript, JavaScript, Knockout и Bootstrap. С этими клиентскими технологиями никаких проблем не предвиделось. Зато серверная часть приложения использовала несколько сервисов, специфичных для Azure: Azure Service Bus, Azure Blobs, Azure Tables storage, Azure Queue storage. С ними предстояло что-то делать, т. к. в GCP ни один из них не поддерживается. Кроме того, приложение использовало Azure Cache for Redis. Для обработки длительных запросов была задействована служба Azure WebJob, задачи которой передавались через Azure Service Bus. По словам программиста, занимавшегося поддержкой, фоновые задачи могли выполняться до получаса.

Изначально архитектура Web Portal в нашем проекте выглядела такИзначально архитектура Web Portal в нашем проекте выглядела так

Azure WebJobs тоже предстояло чем-то заменить. Архитектура с очередью заданий для длительных вычислений не единственное среди возможных решений можно использовать специализированные библиотеки для фоновых задач, например, Hangfire, или обратиться к IHostedService от Microsoft.

Второе приложение назовем его Web API представляло собой ASP.NET WEB API. Оно использовало только MS SQL базы данных. Вернее, в конфигурационном файле были ссылки на несколько баз данных, в реальности же приложение обращалось только к одной их них. Но об этом нюансе мне только предстояло узнать.

Оба приложения были в работающем, но плохом состоянии: отсутствовала архитектура как таковая, было много старого неиспользуемого кода, не соблюдались принципы построения ASP.NET MVC приложений и т. д. Заказчик и сам признавал низкое качество кода, а человек, изначально написавший приложения, уже несколько лет не работал в компании. Был дан зеленый свет любым изменениям и новым решениям.

Итак, нужно было перевести ASP.NET MVC приложения на ASP.NET Core 3.1, перевести WebJob c .NET Framework на .NET Core, чтобы можно было разворачивать их под Linux. Использовать Windows на GCP возможно, но не целесообразно. Надо было избавиться от сервисов, специфичных для Azure, заменить чем-то Azure WebJob, решить, как будем развертывать приложения в GCP, т. е. выбрать альтернативу Azure App Services. Требовалось добавить поддержку Docker. При этом неплохо было бы внести хоть какую-то архитектуру и поправить качество кода.

Общие принципы и соображения

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

В конце каждого этапа приложение должно находиться в стабильном состоянии, т. е. пройти хотя бы Smoke tests.

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

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

При замене сервисов Azure можно либо подобрать альтернативный GCP-сервис, либо выбрать cloud-agnostic-решение. Выбор сервисов в этом проекте и его обоснование в каждом случае мы рассмотрим отдельно.

План работ

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

  1. Web Portal c ASP.NET MVC на ASP.NET Core

    1.1. Анализ кода и зависимостей Web Portal от сервисов Azure и сторонних библиотек, оценка необходимого времени.

    1.2. Перевод Web Portal на .NET Core.

    1.3. Рефакторинг с целью устранения основных проблем.

    1.4. Merge изменений Web Portal из основной ветки репозитория, сделанных параллельно другими разработчиками.

    1.5. Докеризация Web Portal.

    1.6. Тестирование Web Portal, устранение ошибок и развертывание новой версии на Azure.

  2. Web API c ASP.NET MVC на ASP.NET Core

    2.1. Написание E2E автоматических тестов для Web API.

    2.2. Анализ кода и зависимостей Web API от сервисов Azure и сторонних библиотек, оценка необходимого времени.

    2.3. Удаление неиспользуемого исходного кода из Web API.

    2.4. Перевод Web API на .NET Core.

    2.5. Рефакторинг Web API с целью устранения основных проблем.

    2.6. Merge изменений Web API из основной ветки репозитория, сделанных параллельно другими разработчиками.

    2.7. Докеризация Web API.

    2.8. Тестирование Web API, устранение ошибок и развертывание новой версии на Azure.

  3. Устранение зависимостей от Azure

    3.1. Устранение зависимостей Web Portal от Azure.

  4. Развертывание в GCP

    4.1. Развертывание Web Portal в тестовой среде в GCP.

    4.2. Тестирование Web Portal и устранение возможных ошибок.

    4.3. Миграция базы данных для тестовой среды.

    4.4. Развертывание Web API в тестовой среде в GCP.

    4.5. Тестирование Web API и устранение возможных ошибок.

    4.6. Миграция базы данных для prod-среды.

    4.7. Развертывание Web Portal и Web API в prod GCP.

Целиком план представлен лишь в ознакомительных целях, далее в статье я постараюсь подробно раскрыть лишь наиболее интересные, с моей точки зрения, вопросы.

.NET Framework -> .NET Core

Перед началом переноса кода я нашел статью о миграции .Net Framework на .Net Core от Microsoft и далее ссылку на миграцию ASP.NET на ASP.NET Core.

С миграцией не-Web-проектов все обстояло относительно просто:

  • преобразование формата хранения NuGet-пакетов с помощью Visual Studio 2019;

  • адаптирование списка этих пакетов и их версий;

  • переход с App.config в XML на settings.json и замена всех имеющихся обращений к конфигурационным значениям на новый синтаксис.

Некоторые версии NuGet-пакетов Azure SDK претерпели изменения, повлекшие несовместимость. В большинстве случаев удалось найти не всегда самую новую, зато поддерживаемую кодом .NET Core версию, которая не требовала бы изменений в логике старого программного кода. Исключением стали пакеты для работы с Azure Service Bus и WebJobs SDK. Пришлось с Azure Service Bus перейти на бинарную сериализацию, а WebJob перевести на новую, обратно несовместимую версию SDK.

C миграцией ASP.NET MVC на ASP.NET Core дело обстояло намного сложнее. Все перечисленные выше действия нужно было проделать и для Web-проектов. Но начинать пришлось с нового ASP.NET Core проекта, куда мы перенесли код старого проекта. Структура ASP.NET Core проекта сильно отличается от предшественника, многие стандартные классы ASP.NET MVC претерпели изменения. Ниже я привожу список того, что изменили мы, и большая его часть будет актуальна для любого перехода с ASP.NET MVC на ASP.NET Core.

  1. Создание нового проекта ASP.NET Core и перенос в него основного кода из старого ASP.NET MVC проекта.

  2. Корректировка зависимостей проекта от внешних библиотек (в нашем случае это были только NuGet-пакеты, соображения по поводу версий библиотек см. выше).

  3. Замена Web.config на appsettings.json и все связанные с этим изменения в коде.

  4. Внедрение стандартного механизма Dependency injection от .NET Core вместо любой его альтернативы, использовавшейся в Asp.NET MVC проекте.

  5. Использование StaticFiles middleware для всех корневых папок статических файлов: изображений, шрифтов, JavaScript-скриптов, CSS-стилей и т. д.

app.UseStaticFiles(); // wwwrootapp.UseStaticFiles(new StaticFileOptions   {     FileProvider = new PhysicalFileProvider(         Path.Combine(Directory.GetCurrentDirectory(), "Scripts")),     RequestPath = "/Scripts"});

Можно перенести все статические файлы в wwwroot.

6. Переход к использованию bundleconfig.json для всех JavaScript и CSS-бандлов вместо старых механизмов. Изменение синтаксиса подключения JavaScript и CSS:

<link rel="stylesheet" href="~/bundles/Content.css" asp-append-version="true" /><script src="~/bundles/modernizr.js" asp-append-version="true"></script>

Чтобы директива asp-append-version="true" работала корректно, бандлы (bundles) должны находиться в корне, т. е. в папке wwwroot (смотри здесь).

Для отладки бандлов я использовал адаптированную версию хелпера отсюда.

7. Изменение механизма обработки UnhadledExceptions: в ASP.NET Core реализована его поддержка, остается с ней разобраться и использовать вместо того, что применялось в проекте раньше.

8. Логирование: я адаптировал старые механизмы логирования для использования стандартных в ASP.NET Core и внедрил Serilog. Последнее опционально, но, по-моему, сделать это стоит для получения гибкого structured logging c огромным количеством вариантов хранения логов.

9. Session если в старом проекте использовалась сессия, то код обращения к ней надо будем немного адаптировать и написать хелпер для сохранения любого объекта, поскольку изначально поддерживается только строка.

10. Routing: в старом проекте использовался механизм, основанный на templates, его надо было чуть-чуть подправить.

11. JSON-сериализация: В ASP.NET Core по умолчанию используется библиотека System.Text.Json вместо Newtonsoft.Json. Microsoft утверждает, что она работает быстрее предшественницы, однако, в отличие от последней, она не поддерживает многое из того, что Newtonsoft.Json умела делать из коробки безо всякого участия программиста. Хорошо, что есть возможность переключиться обратно на Newtonsoft.Json. Именно это я и сделал, когда выяснил, что большая часть сериализации в Web API была сломана, и вернуть ее в рабочее состояние с помощью новой библиотеки, если и возможно, очень непросто. Подробнее об использовании Newtonsoft.Json можно прочитать здесь.

12. В старом проекте использовался Typescript 2.3. С его подключением пришлось повозиться, потребовалось установить Node.js, подобрать правильную версию пакета Microsoft.TypeScript.MSBuild, добавить и настроить tsconfig.json, поправить файл определений (Definitions) для библиотеки Knockout, кое-где добавить директивы //@ts-ignore.

13. Код для принудительной поддержки HTTPS включается автоматически при включении этой опции в визарде проекта. Старый код, использующий пользовательский атрибут HttpsOnly, был при этом убран.

14. Все низкоуровневые действия, такие как получение параметров из body запроса, URL запроса, HTTP Headers и HttpContext потребовали изменений, т. к. API для доступа к ним претерпел изменения по сравнению с ASP.NET MVC. Работы было бы заметно меньше, если бы в старом проекте чаще использовались стандартные binding механизмы через параметры экшенов (Actions) и контроллеров (Controllers).

15. Был добавлен Swagger c помощью библиотеки Swashbuckle.AspNetCore.Swagger.

16. Нестандартный механизм Authentication потребовал рефакторинга для приведения его к стандартному виду.

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

Что делать со специфичными сервисами Azure?

После перехода на ASP.NET Core предстояло избавиться от Azure-сервисов. Можно было либо подобрать решения, которые не зависят от облачной платформы, либо найти что-то подходящее из списка GCP. Благо у многих сервисов есть прямые альтернативы у других облачных провайдеров.

Azure Service Bus мы по настоятельной рекомендации заказчика решили заменить на Redis Pub/Sub. Это достаточно простой инструмент, не настолько мощный и гибкий как, например, RabbitMQ. Но для нашего простого сценария его хватало, а в пользу такого выбора говорило то, что Redis в проекте уже использовался. Время подтвердило решение было правильным. Логика работы с очередью была абстрагирована и выделена в два класса, один из которых реализует отправку произвольного объекта, другой получает сообщения и передает их на обработку. На выделение этих объектов ушло всего несколько часов, а если сам Redis Pub/Sub вдруг потребуется заменить, то и это будет очень просто.

Azure Blobs были заменены на GCP Blobs. Решение очевидное, но все-таки различие в функциональности сервисов нашлось: GCP Blobs не поддерживает добавление данных в конец существующего блоба. В нашем проекте такой блоб использовался для создания подобия логов в формате CSV. На платформе Google мы решили записывать эту информацию в Google Cloud operations suite, ранее известный как Stackdriver.

Хранилище Azure Table Storage использовалось для записи логов приложения и доступа к ним из Web Portal. Для этого существовал логгер, написанный самостоятельно. Мы решили привести этот процесс в соответствие с практиками от Microsoft, т. е. использовать их интерфейс ILogger. Кроме того, была внедрена библиотека для структурного логирования Serilog. В GCP логирование настроили в Stackdriver.

Какое-то время проект должен был параллельно работать и на GCP, и на Azure. Поэтому вся функциональность, зависящая от платформы, была выделена в отдельные классы, реализующие общие интерфейсы: IBlobService, IRequestLogger, ILogReader. Абстрагирование логирования было достигнуто автоматически за счет использования библиотеки Serilog. Но для того, чтобы показывать логи в Web Portal, как это делалось в старом приложении, понадобилось адаптировать порядок записей в Azure Table Storage, реализуя свой Serilog.Sinks.AzureTableStorage.KeyGenerator.IKeyGenerator. В GCP для чтения логов изGoogle Cloud operations были созданы Log Router Sinks, передающие данные в BigQuery, откуда приложение и получало их.

Что делать с Azure WebJobs?

Сервис Azure WebJobs доступен только для Azure App Services on Windows. По сути он представляет собой консольное приложение, использующее специальный Azure WebJobs SDK. Зависимость от этого SDK я убрал. Приложение осталось постоянно работающим консольным и следует похожей логике:

static async Task Main(string[] args){.   var builder = new HostBuilder();  ...              var host = builder.Build();  using (host)  {     await host.RunAsync();  }...}

За всю работу отвечает зарегистрированный с помощью Dependency Injection класс

public class RedisPubSubMessageProcessor : Microsoft.Extensions.Hosting.IHostedService{...public async Task StartAsync(CancellationToken cancellationToken)...public async Task StopAsync(CancellationToken cancellationToken)...}

Это стандартный для .NET Core механизм. Несмотря на отсутствие зависимости от Azure WebJob SDK, это консольное приложение успешно работает как Azure WebJob. Оно также без проблем работает в Linux Docker-контейнере под управлением Kubernetes, о чем речь в статье пойдет позже.

Рефакторинг по дороге

Архитектура и код приложения были далеки от идеала. В ходе многих шагов постепенно производились небольшие изменения кода, который они затрагивали. Были и специально запланированные этапы рефакторинга, согласованные и оцененные вместе с заказчиком. На этих этапах мы устраняли проблемы с аутентификацией и авторизацией, переводили их на практики от Microsoft. Был отдельный этап по внесению некой архитектуры, выделению слоев, устранению ненужных зависимостей. Работа с Web API началась с этапа удаления неиспользуемого кода. При замене многих Azure-сервисов на первом этапе производилось определение интерфейсов, выделение данных зависимостей в отдельные классы.

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

Docker

С поддержкой Docker все сложилось довольно гладко. Dockerfile можно легко добавить с помощью Visual Studio. Я добавил их для всех проектов, соответствующих приложениям, для Web Portal, Web API, WebJob (который в дальнейшем превратился просто в консольное приложение). Эти стандартные Dockerfile от Microsoft не претерпели особенных изменений и заработали из коробки за единственным исключением пришлось в Dockerfile для Web Portal добавить команды для установки Node.js. Этого требует build контейнер для работы с TypeScript.

RUN apt-get update && \apt-get -y install curl gnupg && \curl -sL https://deb.nodesource.com/setup_12.x  | bash - && \apt-get -y install nodejs

Azure App Services -> GKE

Нет единственно правильного решения для развертывания .NET Core-приложений в GCP, вы всегда можете выбрать из нескольких опций:

  • App Engine Flex.

  • Kubernetes Engine.

  • Compute Engine.

В нашем случае я остановился на Google Kubernetes Engine (GKE). Причем к этому моменту у нас уже были контейнеризованные приложения (Linux). GKE, оказалось, пожалуй, наиболее гибким из трех представленных выше решений. Оно позволяет разделять ресурсы кластера между несколькими приложениями, как в нашем случае. В принципе для выбора одного из трех вариантов можно воспользоваться блок-схемой по этой сслыке.

Выше описаны все решения по используемым сервисам GCP, кроме MS SQL Server, который мы заменили на Cloud SQL от Google.

Архитектура нашей системы после миграции в GCPАрхитектура нашей системы после миграции в GCP

Тестирование

Web Portal тестировался вручную, после каждого этапа я сам проводил простенький Smoke-тест. Это было обусловлено наличием пользовательского интерфейса. Если по завершении очередного этапа, новый кусок кода выпускался в Prod, к его тестированию подключались другие пользователи, в частности, Product Owner. Но выделенных QA-специалистов, в проекте, к сожалению, не было. Разумеется, все выявленные ошибки исправлялись до начала очередного этапа. Позднее был добавлен простой Puppeteer-тест, который исполнял сценарий загрузки одного из двух типов отчетов с какими-то параметрами и сравнивал полученный отчет с эталонным. Тест был интегрирован в CICD. Добавить какие-то юнит-тесты было проблематично по причине отсутствия какой-либо архитектуры.

Первым этапом миграции Web API, наоборот, было написание тестов. Для это использовался Postman, затем эти тесты вызывались в CICD с помощью Newman. Еще раньше к старому коду была добавлена интеграция со Swagger, который помог сформировать начальный список адресов методов и попробовать многие из них. Одним из следующих шагов было определение актуального перечня операций. Для этого использовались логи IIS (Internet Information Services), которые были доступны за полтора месяца. Для многих актуальных методов перечня было создано несколько тестов с разными параметрами. Тесты, приводящие к изменению данных в базе, были выделены в отдельную Postman-коллекцию и не запускались на общих средах выполнения. Разумеется, все это было параметризовано, чтобы можно было запускать и на Staging, и на Prod, и на Dev.

Тестирование позволило нам убедиться, что продукт после миграции сохранил стабильность. Конечно, идеальным вариантов было бы покрыть всю функциональность автоматизированными тестами. Поэтому в случае с Web API несмотря на гораздо большие усилия, затраченные в самом начале, миграция, поиск и исправление ошибок затем проходили гораздо легче.

Azure MS SQL -> GCP Managed MS SQL

Миграция MS SQL из Managed Azure в GCP Cloud SQL оказалась не такой простой задачей, как представлялось вначале. Основных причин тому оказался несколько:

  • Очень большой размер базы данных (Azure портал показал: Database data storage /

    Used space 181GB).

  • Наличие зависимостей от внешних таблиц.

  • Отсутствие общего формата для экспорта из Azure и импорта в GCP Cloud SQL.

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

Перед началом миграции нужно удалить все ссылки на внешние таблицы и базы данных, иначе миграция будет неудачной. Azure SQL поддерживает экспорт только в формат bacpac, более компактный по сравнению со стандартным backup форматом. В нашем случае вышло 6 Гб в bacpac против 154 Гб в backup. Но GCP Cloud позволят импортировать только backup, поэтому нам потребовалась конвертация, сделать которую удалось лишь посредством восстановления в локальную MS SQL из bacpac и создания backup уже из нее. Для этих операций потребовалось установить последнюю версию Microsoft SQL Server Management Studio, причем локальный сервер MS SQL Server был версией ниже. Немало операций заняли по многу часов, некоторые и вовсе длились по несколько дней. Рекомендую увеличить квоту Azure SQL перед импортом и сделать копию prod базы, чтобы импортировать из нее. Где-то нам потребовалось передавать файл между облаками, чтобы ускорить загрузку на локальную машину. Мы также добавили SSD-диск на 1 Тб специально под файлы базы данных.

Задачи на будущее

При переходе с Azure App Services на GCP Kubernetes мы потеряли CICD, Feature Branch deployments, Blue/Green deployment. На Kubernetes все это несколько сложнее и требует иной реализации, но наверняка делается посредством все тех же Github Actions. В новом облаке следуем концепции Iac (Infrastructure-as-Code) вместе с Pulumi.

От старого приложения нам достались низкая производительность и слишком продолжительное время запросов к базе данных. Устранение этих проблем среди приоритетов на ближайшее будущее.

Подробнее..

Как построить прогнозную модель для маркетолога в SAP Analytics Cloud без привлечения датасайнтистов

17.12.2020 14:07:58 | Автор: admin

Сегодня популярность проектов data science очень высока и бизнес понимает их важность и значимость. Рынок наполнен специалистами в этой области, которые умеют добиваться впечатляющих результатов. Но такие проекты нередко бывают дорогостоящими, и не всегда для простых задач нужно привлекать профессионалов в этой области. Создание некоторых прогнозов вполне по силам самим бизнес-пользователям. Например, специалисты из отдела маркетинга могут прогнозировать отклик на маркетинговые кампании. Это становится возможным при наличии инструмента, позволяющего за несколько минут построить прогноз и легко интерпретировать результаты с точки зрения бизнес-смысла.

SAP Analytics Cloud (SAC) облачный инструмент, совмещающий в себе функции BI, планирования и прогнозирования, он также оснащен множеством функций расширенной аналитики: интеллектуальными подсказками, автоматизированным анализом данных и возможностями автоматического прогнозирования.

В этой статье мы расскажем о том, как построено прогнозирование в SAP Analytics Cloud, какие сценарии доступны на сегодняшний день, а также как этот процесс может быть интегрирован с планированием.

Функциональность Smart Predict ориентирована на бизнес-пользователя и позволяет строить прогнозы высокой точности без привлечения специалистов Data Science. Со стороны пользователя системы прогноз происходит в черном ящике, но в реальности это, конечно же, не так. Алгоритмы прогнозирования в SAC идентичны алгоритмам модуляAutomated Analytics инструмента SAP Predictive Analytics. Об алгоритмах, лежащих в основе этого продукта, есть множество материалов, мы предлагаем прочитать эту статью. На вопрос: Получается, Automated Analytics переехал в SAP Analytics Cloud? - мы отвечаем - Да, но пока только частично. Вот какая разница и сходство в функциональных возможностях инструментов (рис.1)

SAP Analytic Cloud в настоящее время предлагает 3 прогнозных сценария:

Классификация. В данном случае предполагается бинарная классификация: предсказываются значения целевой переменной, которая может иметь только два значения -да и нет или 0 и 1. Примерами сценария классификации могут быть:

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

Прогноз склонности клиента к покупке с целевой переменной, прогнозирующей будет ли клиент покупать предложенный ему товар или нет.

Выявление мошенничества с целевой переменной, указывающей, была ли транзакция или требование мошенническим, или нет.

Регрессия. Предсказывает числовое значение целевой переменной в зависимости от переменных, описывающих ее. Примеры регрессионных сценариев:

Количество клиентов, посещающих магазин в обеденное время.

Выручка от каждого клиента в следующем квартале.

Цена продажи подержанных автомобилей.

Прогнозирование временного ряда. Предсказывает значение переменной с течением времени с учетом дополнительных описательных переменных. Примеры сценария прогнозирования временных рядов:

Выручка по каждой продуктовой линейке в течение следующих нескольких кварталов.

Количество велосипедов, арендованных в городе в течение следующих нескольких дней.

Командировочные расходы в ближайшие несколько месяцев.

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

Процесс прогнозирования в SAP Analytics Cloud осуществляется в несколько простых этапов. Мы рассмотрим его на примере прогнозирования оттока клиентов интернет-магазина. Для начала нам необходимо загрузить в систему тренировочный датасет из системы-источника или excel файла. Также SAP Analytics Cloud позволяет прогнозировать в режиме Live (избегая загрузки данных в облако) на таблицах SAP HANA. В этом случае для пользователя SAC процесс остается неизменным, но построение прогноза происходит на стороне SAP HANA с использованием библиотеки Automated Predictive Library (APL).

Наш тренировочный датасет имеет следующие поля:

Customer ID

Уникальный ID каждого клиента

Usage Category (Month)

Количество времени, проведенное клиентом на портале в текущем месяце

Average Usage (Year)

Среднее количество времени, проведенное клиентом на портале за прошедший год

Usage Category (previous Month)

Количество времени, проведенное клиентом на портале за прошедший месяц

Service Type

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

Product Category

Категория продукта интернет-магазина, наиболее часто заказываемая клиентом

Message Allowance

Флаговая переменная, указывающая, давал ли клиент согласие на получение сообщений

Average Marketing Activity (Bi-yearly)

Среднее число маркетинговых предложений для клиента за последние 2 года

Average Visit Time (min)

Среднее количество времени, проведенное клиентом на портале за каждый визит

Pages per Visit

Среднее число страниц интернет-магазина, посещаемых клиентом за один визит

Delta Revenue (Previous Month)

Разница между выручкой от данного клиента за предыдущий и текущий месяц

Revenue (Current Month)

Выручка от данного клиента в текущем месяце

Service Failure Rate (%)

Доля случаев, когда пользователь сталкивался с ошибками в работе портала

Customer Lifetime (days)

Количество дней с момента регистрации

Product Abandonment

Число продуктов, которые были помещены клиентом в корзину, но не оплачены за последний квартал

Contract Activity

Флаговая переменная, указывающая, отказался ли данный пользователь от услуг интернет-магазина. Целевая переменная, которую мы будем прогнозировать.

Следующим шагом построение прогноза будет выбор сценария прогнозирования.

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

После этого мы создаем прогнозную модель и выбираем заранее подготовленный датасет, как источник данных для обучения. У пользователя также есть возможность редактировать метаданные. Далее мы выбираем целевую переменную, ее мы будем прогнозировать. В нашем случае это переменная Contract Activity, идентифицирующая отток клиентов. Также мы можем исключить некоторые переменные, если понимаем, что они никак не повлияют на формирование прогноза. Например, в нашем случае точно можно исключить Customer ID. Это может ускорить процесс выполнения прогноза, но их сохранение не мешает процессу моделирования.

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

Во время обучения инструмент автоматически протестирует и попытается уменьшить количество переменных в модели, в зависимости от критериев качества, которые мы опишем ниже. Этот выбор выполняется последовательными итерациями, и сохраняются только те переменные, которые влияют на цель.

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

Прогностическая сила (KI) указывает на долю информации в целевой переменной, которую могут описать другие переменные модели (объясняющие переменные). Гипотетическая модель с прогностической силой 1,0 является идеальной, поскольку позволяет объяснить 100% информации целевой переменной, а модель с прогностической силой 0 является чисто случайной.

Достоверность прогноза (KR) показывает способность модели достичь той же производительности, когда она применяется к новому набору данных, имеющему те же характеристики, что и обучающий набор данных. Приемлемой считается достоверность прогноза не менее 95%.

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

Кроме этого, на рисунке ниже мы видим кривую производительности AUC ROC. Ось X показывает, какой процент от общей выборки составляют положительные цели; ось Y представляет их верно идентифицированный процент, который обнаружил алгоритм. Здесь необходимо пояснить, что положительными целями в данном случае считается целевая группа, а именно клиенты, отказавшиеся от услуг интернет-магазина.

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

Красная кривая показывает минимальный процент обнаруженной цели, полученный случайной моделью. То есть случайно взяв 10% населения, вы бы определили 10% клиентов.

Синяя кривая показывает процент обнаруженной цели с использованием нашей модели. Например, если 10% выборки составляют ушедшие клиенты, мы обнаруживаем примерно 75%. Чем ближе синяя линия подходит к зеленой, тем лучше модель. Чем больше расстояние между красной и синей линиями, тем больше лифт модели.

Кроме того, SAC предоставляет возможность увидеть, как именно ключевые факторы влияют на целевую переменную.

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

Мы видим, что клиенты, проводившие на страницах интернет-магазина от 10 до 22 и от 1 до 3 минут, имеют наибольшую склонность отказаться от услуг. Напротив, покупатели, находящиеся на портале от 3 до 7 и от 7 до 10 минут, показывают наименьшую вероятность уйти. Результаты выглядят волне логично: уходят те, кто проводили на сайте или слишком мало, или слишком много времени. Подобный анализ можно провести по всем ключевым предикторам.

Также для оценки качества получившейся модели SAC предлагает проанализировать матрицы неточностей, различные графики, иллюстрирующие эффективность модели (лифт, чувствительность, кривая Лоренца и плотность) и смоделировать возможные выигрыши и проигрыши от использования данного прогноза.

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

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

Таким образом, прогнозирование легко вписывается в процесс анализа данных в SAC. С недавних пор функционал прогнозирования в решении также может быть легко интегрирован в процесс планирования.

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

Кроме того, в процессе создания отчетов пользователи также могут использовать прогностические функции, например, автоматический прогноз. Он позволяет продлить график временного ряда.

Алгоритм выполнения такого прогноза описан здесь, линейная регрессия или тройное экспоненциальное сглаживание. Результаты прогноза видны ниже, рядом с графиком факта появляется пунктирная линия прогноза и доверительный интервал.

Также прогноз можно добавлять в таблицы и использовать оттуда данные, например, как базу для будущего плана.

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

Данный инструмент является stand-alone решением и может стать частью мультивендорной архитектуры. Интеграция SAP Analytics Cloud с решениями SAP нативна. Кроме того, существует стандартный бизнес контент для различных индустрий и линий бизнеса. Отчеты могут быть дополнены прогнозными и плановыми данными, а также обогащены функциями расширенной аналитики.

Автор Анастасия Николаичева, архитектор бизнес-решений SAP CIS

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru