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

Сервисы

Неочевидные уязвимости онлайн сервисов. Часть первая

16.06.2021 16:13:28 | Автор: admin

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

А может быть, вы популярный хостинг? Хотите привлечь пользователей, используя около-тематический трафик создаете онлайн сервис который смог бы заменить целые серверные утилиты nslookup, dig, curl?! Звучит неплохо, но всё ли так хорошо с безопасностью пользователей?

Об интересных и неочевидных уязвимостях онлайн-сервисов поговорим под катом.

Важное отступление


Перед началом путешествия по барханам незащищенности, стоит отметить, что уязвимости рассматриваемых в статье сайтов уже закрыты. Однако, в сети есть еще множество сервисов, которые могут быть подвержены описанным уязвимостям поэтому приведенные в статье примеры нужно расценивать как инструкцию к самостоятельной работе над ошибками.
Некоторые сервисы, которые мы рассмотрим, разрабатывались профессиональными программистами, возможно, с привлечением специалистов по безопасности. Не стоит думать, что профессионалы не могут ошибаться.
Поиск уязвимостей проходил в рамках программы BugBounty. Все сайты, указанные во всех частях статьи, раскрыты с письменного согласия владельцев.
Ой! Прекратите! Чем опасен XSS в 2021??! Да и вообще, XSS не опасен. Не смешите читателей!
Кажется, верное утверждение. С внедрением CORS, X-XSS-Protection современные браузеры научились неплохо фильтровать XSS, вот только не все так гладко.

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

Проверяем DNS записи или опасности утилиты Dig и NSLOOKUP в онлайн сервисах


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

Если кто не знает, серверная утилита Dig (NSLOOKUP работает похожим образом) позволяет получить DNS записи любого домена. В интернете же, можно найти множество онлайн сервисов, которые используют эту утилиту у себя на бэкенде, а своим пользователям показывают результат её работы.

DNS записей существует несколько: A, MX, CNAME, SOA, TXT и другие. Мне стало интересно проверить возможности TXT записи что если здесь написать скрипт? Для проверки атаки нужен собственный домен.



Оказалось, помимо всевозможных символов DKIM и SPF подписей, в TXT запись можно написать обычный скрипт или полноценный html, с небольшими нюансами. Можно было бы подумать, что мой NS провайдер не экранирует спецсимволы, но нет так делать можно у всех.

Оказалось, помимо всевозможных символов DKIM и SPF подписей, в TXT запись можно написать обычный скрипт или полноценный html, с небольшими нюансами. Можно было бы подумать, что мой NS провайдер не экранирует спецсимволы, но нет так делать можно у всех.

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

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

На видео выше видим простую реализацию эксплуатации XSS уязвимости крупного хостинг-провайдера. Здесь пришлось немного изощренно подойти к вопросу реализации и вместо тега script, навесить код на событие onerror тегаimg.

Ребята из ukraine.com.ua закрыли уязвимость через 10 минут, после моего обращения в техподдержку. Быстрее, на моем опыте, пока не делал никто. Адекватная и профессиональная команда на всех этапах переговоров.

А что другие, спросите Вы? Например, ребята из Xtool тоже быстро исправили проблему и разрешили рассказать об этом в статье. Проблема здесь была в блоке DNS INFO:


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

Тем не менее, стоит отметить, что XSS уязвимости через TXT записи домена были (и могут быть) подвергнуты проекты масштабом на любой вкус от 200 тысяч до нескольких миллионов посетителей в месяц (по данным Similarweb), по всему миру.

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

Странные HTTP заголовки в ответе сервера


Продолжим тестировать онлайн-сервисы что если передать скрипт в HTTP заголовке? Сколько сервисов будут экранировать заголовки сервера, выводимые на свой фронтенд из curl -I [host]? Давайте попробуем, назовем заголовок X-Test .


Многие SEO-анализаторы, помимо технической информации о сайте, выводят, в том числе и заголовки ответа сервера. Это проблема не только мелких анализаторов. Здесь, как и в уязвимости из прошлого раздела, не очевидной уязвимости со скриптом в HTTP заголовке были подвержены проекты разных масштабов.

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

Можно справедливо заметить, что для безопасности исполнения скриптов стоит использовать Content Security Policy . Некоторые онлайн-инструменты использовали этот прием и отключали inline скрипты. Однако, это не сильно осложняло задачу эксплуатации уязвимости, ведь большинство сервисов пользуются внешними средствами аналитики трафика.


Перед началом использования счетчиков, на странице необходимо инициализировать их, например так script nonce="analytics". Чтобы этот код заработал, онлайн-сервис добавил в CSP: default-src 'nonce-analytics'.

Но безопаснее не стало ведь мы по прежнему можем передать через XSS over Response Header такую же конструкцию скрипта. Браузер будет считать чужой скрипт местным.

Пишем скрипт в HTML теги


Согласитесь, писать скрипт в тег заголовка страницы неочевидное решение для попытки эксплуатации XSS. Но оно работает. Исследовав небольшую часть онлайн-сервисов, становится понятно, что не все экранируют содержимое HTML тегов: title, h1, description и других.

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

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

Ситуация повторяется в популярном онлайн-сервисе для SEO-аудита PR-CY. Здесь также, в инструменте проверки Open Graph разметки, не экранировались значения полученные с исследуемого ресурса. Для удобства пользователей генерировалась прямая ссылка на результат что конечно на руку атакующему.

Администраторы PR-CY исправили баг в течении часа после обращения в поддержку, за что им спасибо. А еще через некоторое время предложили провести дополнительный аудит других проектов.


Неожиданные уязвимости популярных онлайн-инструментов


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

Нет. Писать текст не придётся. Здесь не будет NFT котиков и рояля на тросах, но будет небольшая головоломка. Предлагаю читателям как можно скорее найти и раскрыть все варианты одной XSS уязвимости онлайн-сервиса от W3C который называется "Unicorn".


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

Решением можно считать найденные, как минимум, 3 разных способа эксплуатации XSS уязвимости Юникорна (должны быть разные варианты скрипта и разные теги страницы). Варианты точно не очевидные, но очень простые и из статьи легко понять направление поиска. Минимально, в валидаторе должен сработать alert с любым текстом из вашего скрипта.

Пока вы решаете головоломку, я подготовлю вторую часть статьи с объявлением лучших решателей и подробным описанием уязвимостей популярного продукта W3C Unicorn и еще нескольких онлайн-сервисов, аудитория которого превышает несколько миллионов посетителей в месяц (по данным SimilarWeb).


Подробнее..

Бесплатный сервис хранения ссылок

04.02.2021 12:07:48 | Автор: admin

Предисловие

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

Цель статьи поделиться удобным бесплатным сервисом хранения ссылок.

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


Вступление

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

Был проект. Построенный на IIS + ASP.NET + MVC. Время шло. Появлялись новые версии MVC. Проект переезжал с версии на версию. Проект использовал достаточно специфическую внутреннюю архитектуру, поэтому MVC обрастал всё новыми костылями.

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

Честно сказать по прошествии времени можно сделать вывод.

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

Так вот. По мере написание своего web-стека встал вопрос о тестировании.

А как тестировать web стек? Разумеется, нужно повесить какой-нибудь тестовый сайт. В результате быстрого мозгового штурма, что бы не писать коня в вакууме, было решено сделать какой-нибудь простенький полезный сервис.

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

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

Было решено написать документацию к нему. Нуднейшее дело я вам скажу. Ну и поделится с другими.

Описание сервиса

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

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

Далее ссылка передаётся на сервер. Там подвергается проверке работоспособности. Проверяется доступ по протоколам http/https. Проверяется редирект ссылки. При необходимости производится промежуточное сохранение и отправка cookies. После всех проверок сохраняется конечный вариант.

Далее сервис загружает вашу ссылку и производит поиск заглавия. При этом производится автоматическое определение правильной кодировки многие сайты возвращают неправильную кодировку. Для некоторых популярных сайтов поиск названия производится в заранее определённых местах. При поиске названия автоматически определяется тип ссылки. Сервис может, например, отличать PDF от html.

В конце всей процедуры сохраняется правильная ссылка и её заглавие. Это информация и заносится в каталог.

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

У каждой добавленной ссылки есть меню настройки. Для вызова меню для ссылки надо нажать на иконку в виде квадрата слева от ссылки. При нажатии появляется меню управления ссылкой. Меню состоит из 5 кнопок

  • Удаление ссылки

  • Добавление иконки

  • Перемещение ссылки в другую группу подгруппу

  • Редактирование заголовка ссылки

  • Редактирование URL ссылки

Иконки

Для часто используемых сайтов можно сделать иконку быстрого доступа. Иконки подобны ярлыкам программ в Windows. Располагаются в поле иконок область сразу после меню групп. Размер поля иконок можно изменять. Положение и размер иконки так же можно менять.

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

Меню иконок

  • Положение заглавия иконки. Верх, середина, низ, нету заглавия.

  • Редактировать заглавие иконки

  • Меню настройки картинки иконки. Можно загрузить картинку из интернета или с компьютера.

  • Фиксировать иконку. Запретить перетягивание.

Группы

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

Кнопки групп можно двигать. Слева каждой кнопки есть полоса для перетягивания. Самая первая кнопка меню это кнопка открытия вашего каталога ссылок в виде оглавления.

Это список всех групп/подгрупп с активными линками. Щелчок мыши быстрый переход в нужную категорию.

Для управления группами ест отдельная страница. Вход кнопка в виде креста в правой части меню групп.

Подгруппы

Группы делятся на подгруппы. Внутри подгруппы можно установить способ сортировки ссылок.

  • Сортировка ссылок по названию. Сверху-вниз.

  • Сортировка ссылок по названию. Снизу-вверх.

  • Сортировка по дате добавления ссылки. Сверху-вниз.

  • Сортировка по дате добавления ссылки. Снизу-вверх.

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

Подгруппы также имеют страницу настроек. Вход - маленький крест в левой-нижней части поля иконок. Страница настроек повторяет страницу настроек групп.

Backup всех ссылок

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

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

  • Загрузка всех ссылок в текстовом формате

  • Загрузка всех ссылок в виде html страницы. Можно либо сохранить файл, либо сразу открыть в браузере.

  • Загрузка всех ссылок в виде JSON кодировки. Предназначен для автоматизированных систем.

  • Загрузка всех ссылок в виде XML кодировки. Предназначен для автоматизированных систем.

Разделы сайта

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

Список разделов.

Ваши ссылки.

Это первый и основной раздел сайта. Это собственно основной формируемый каталог ссылок. Каталог имеет широчайшие возможности по настройке отображения и управления добавленными ссылками.

Шифрованные ссылки.

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

Раздел по предоставляемым функциям аналогичен разделу Ваши ссылки. Но ссылки хранятся на сервере в зашифрованном виде.

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

Короткие ссылки

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

Друзья

Раздел друзья предоставляет 2 функции:

  • Кинуть ссылку другу. Получить ссылку от друга

  • Открыть другу для просмотра любую группу из раздела Ваши ссылки

Т.е. этот раздел по функциям напоминает почту. Но только для ссылок. Последовательность действий следующая.

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

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

Так же другу можно открыть для просмотра любую группу из раздела "Ваши ссылки".

Боксы ссылок

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

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

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

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

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

Публичные ссылки

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

Лента

Это раздел для просмотра публичных ссылок других пользователей. Раздел состоит из 3 подразделов.

Лента новых публичных ссылок пользователей, на которых вы подписаны

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

Просмотр всех публичных ссылок конкретного пользователя

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

Поиск публичных пользователей

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

Темы, языки

Сайт доступен в 2 языках en/ru и в 2 темах тёменая/светлая.

Ссылка на сервис

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

Подробнее..

Сервис-провайдеры в США и Великобритании хотят больше зарабатывать на безопасности

16.03.2021 16:20:24 | Автор: admin
Привет, Хабр! Поводом для сегодняшнего поста стало недавно проведенное при поддержке компании Acronis исследование Omdia (бывший Ovum) об отношении сервис-провайдеров к предоставлению сервисов защиты данных. Судя по ответам респондентов, MSP разных размеров стремятся решить проблему информационной безопасности за счет перехода на более интегрированные решения, одновременно зарабатывая больше денег на клиентских сервисах. Подробности исследования, а также некоторые наши выводы под катом.

image

В этом году специалисты Omdia провели опрос под названием Знакомство с рынком безопасности и резервного копирования данных для провайдеров управляемых услуг среди представителей 263 MSP из США (большинство) и Великобритании. Под прицел аналитиков попали MSP, которые уже внедрили или планируют развивать средства резервного копирования и обеспечения информационной безопасности в качестве сервисов. В опросе приняли участие компании различного размера работающие на разных рынках.

image
Размер MSP (количество сотрудников)

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

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

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

MSP в США планируют подтянуть уровень сервиса


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


Уже реализованные и запланированные сервисы ИБ для клиентов

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

image
ТОП 3 направлений для повышения уровня безопасности на протяжении ближайших 12 месяцев

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

image
ТОП 3 плановых направлений улучшения резервного копирования на протяжении ближайших 12 месяцев.

Не все так просто препятствия к внедрению новых сервисов


Несмотря на очевидную потребность в улучшении качества сервиса с точки зрения киберзащиты, далеко не все MSP реализовали соответствующие программы для клиентов в полном объеме. Согласно результатам опроса, компании сталкиваются с одними и теми же препятствиями, которые мешать воплощению этих планов.

image

Основным камнем преткновения остается нехватка квалифицированных кадров. Согласно другому исследованию дефицит действительно готовых к работе специалистов ИБ на глобальном уровне достиг уже 4 миллионов. И поэтому не удивительно, что 92% MSP, принявших участие в опросе, отметили этот пункт как самое большое препятствие. По словам представителей сервис-провайдеров, для предоставления соответствующего сервиса необходимы простые в управлении продукты, эксплуатация которых не требует наличия глубоких ИТ-навыков.

Пункт Cannot make a business case означает, что провайдеры не могут подготовить подходящие пакеты услуг. Причина этому в недостаточной гибкости систем защиты, которые используются в сетях MSP на сегодняшний день.

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

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

image

Технические задачи


Учитывая все сказанное выше, сервис-провайдеры ставят перед своими ИТ-отделами целый спектр технических задач. Опрос показал, что среди них можно выделить три наиболее злободневные:

image

Современный ландшафт киберугроз включает в себя значительное количество угроз нулевого дня. Устаревшие системы защиты не могут обеспечить высокий уровень киберзащиты. Для предоставления качественного сервиса своим клиентам сервис-провайдерам (по их словам) необходимо:

  1. Раннее обнаружение атак и изоляция вредоносной активности. Для этого в современных решениях используются технологии искусственного интеллекта для защиты от Ransomware и других угроз. Наличие встроенных систем анализа уязвимостей, а также восстановления работы систем являются большим плюсом.
  2. Повсеместное шифрование Реальное положение дел с современными угрозами требует повсеместного шифрования данных находятся ли они на стороне пользователя, в хранилище или передаются по защищенному каналу. При этом необходимо наличие защиты пользовательским паролем, чтобы каждый клиент мог быть уверен в безопасности своих данных.
  3. Сканирование уязвимостей в реальном времени Заказчики используют разрозненные системы защиты, и это проблема 84% опрошенных подтвердили, что обеспечение различных аспектов безопасности разными вендорами и поставщиками затрудняет работу. Вместо множества инструментов MSP хотят получить единые средства ИБ, которые также включат в себя возможности мониторинга уязвимостей CVEs (Common Vulnerabilities and Exposures), а также контроля установки патчей. В число наиболее популярных систем и приложений входят продукты Microsoft, Adobe, Oracle, Java, все виды браузеров и многие другие приложения.

Старые системы безопасности как чемодан без ручки


Исследование Omdia показало, что в США и Великобритании сервис провайдеры очень хотят выйти на новый уровень предоставления сервисов киберзащиты для своих клиентов. Однако при этом они сталкиваются с большим количеством сложностей, в основном, обусловленных низким уровнем подготовки кадров (и дефицитом высококвалифицированных ИБ-специалистов), а также проблемами построения современных сервисов на базе унаследованных технологий. Согласно исследованию Omdia, экономия средств является для провайдеров управляемых услуг ключевым фактором. 92% респондентов говорят о том, что приобретение навыков и опыта для предоставления услуг безопасности является серьезной бизнес-задачей, поскольку доступные в настоящий момент услуги дороги и их ассортимент невелик.

Решение этой проблемы над которым сегодня работает вся отрасль и компания Acronis в частности создание интегрированных систем, которые позволяли бы реализовать автоматизированное резервное копирование, управление патчами, противодействие вредоносному ПО, распознавание Ransomware, изоляцию угроз и так далее. Внедрение подобных продуктов поможет MSP в построении гибких и адаптивных сервисов ИБ для конечных заказчиков, одновременно с сокращением затрат на поддержку и обслуживание, а также снижением нагрузки на ИТ-персонал.
Подробнее..

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

28.11.2020 12:19:52 | Автор: admin

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

Все это делается для того, чтобы увеличивать объемы потребления товаров покупателями. Сломался холодильник? Выбрасывай на свалку и иди за новым. Ремонт? Ну нет, во-первых, его могут осуществлять только авторизованные сервисные центры за сумму, близкую к стоимости нового холодильника. Во-вторых, запчастей нет, извините. Но с 2021 года ситуация меняется, причем не только для бытовой техники, но и для электроники.

Что там с бытовой техникой?


Об этом на Хабре уже писали. С 2021 года производителям бытовой техники придется поставлять запчасти для своих устройств в течение 10 лет после продажи. Новые правила актуальны для стиральных машин, посудомоек, холодильников и осветительных приборов.

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


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

Немалую роль в отстаивании права на ремонт в Европе сыграла организация Schraube locker!? из Германии. Ее активисты собрали 100 тысяч подписей и добились голосования в Брюсселе по поводу изменения законодательства, имеющего отношение к ремонту бытовой техники.

А вот электроника, что с ней?


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

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


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

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

Пару лет назад на Хабре публиковалась новость о том, что сопроцессор Т2 может блокировать DIY-ремонт новых MacBook и MacMini. Пока что случаев блокирования вроде бы не было, но вероятность есть, в любой момент компания может задействовать механизм блокировки.

Не только электроника



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

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


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

Хватит это терпеть


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

25 ноября законодатели проголосовали, голос за отдали 395 человек. Только 94 высказались против.


Еще один интересный момент: ЕС разрабатывает обязательную систему оценки ремонтопригодности устройств, которые продаются в оффлайн- и онлайн-магазинах.

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

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

Представитель iFixit Europe заявил после принятия закона о ремонте: Это огромная победа для потребителей всей Европы. Это голосование стимулирует развитие дружественного к праву на ремонт законодательства, а также даст возможность появиться рейтингу ремонтопригодности продукции и прогнозу продолжительности работы.

Подробнее..

Перевод Оптимизация платежей в Dropbox при помощи машинного обучения

19.06.2021 16:06:42 | Автор: admin

Представьте ситуацию: вам нужно воспользоваться оплаченным (как вы думаете) сервисом и вдруг оказывается, что он отключен за неуплату. Такая неприятность портит впечатление от бренда, снижая поток прибыли, а внезапно отключенный клиент может не вернуться к сервису. К старту курса о глубоком и машинном обучении делимся переводом о том, как эту проблему решили в Dropbox, где обнаружили, что внедрение ML в обработку клиентских платежей помогает пользователям оставаться довольными и работает лучше внедрённых за 14 лет политик биллинга.


Платежи в Dropbox

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

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

Продление подписки и сбои

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

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

Рисунок 1. Недобровольный отток происходит, когда истекает срок действия кредитной карты, или же она аннулирована, или на ней нет средств и т. д.Рисунок 1. Недобровольный отток происходит, когда истекает срок действия кредитной карты, или же она аннулирована, или на ней нет средств и т. д.

Чтобы определить время платежа от клиента, чья подписка не продлевается, наша платёжная платформа использовала статический набор из примерно 10 различных методов. Так сложилось исторически. Например, мы можем взимать плату с клиента каждые четыре дня, пока платёж не завершится успешно, в течение максимум 28 дней. Если платеж клиента к концу этого срока по-прежнему не выполнен, уровень его учётной записи в Dropbox понижается до бесплатной базовой учётной записи. Конечно, для активных пользователей и команд понижение уровня учётной записи создаёт неприятные впечатления, а для Dropbox недобровольный отток может обернуться упущенной выгодой.

Рисунок 2. Попытки обновленияРисунок 2. Попытки обновления

Сбои в оплате могут произойти по ряду причин. Среди них:

  • нехватка средств;

  • карта с истекшим сроком действия;

  • заблокированная карта возможно, сообщается о потере или краже;

  • непредсказуемые сбои обработки.

Некоторые причины могут быть устранены сами по себе, другие для восстановления подписки требуют действий клиента.

Зачем машинное обучение в работе с платежами?

Последние два года, чтобы выяснить, повлияет ли изменение времени оплаты на её успешность, Dropbox проводил A/B-тестирование. Чтобы разработать набор правил о том, когда взимать плату, эти тесты в значительной мере опирались на интуицию и знания людей в предметной области.

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

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

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

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

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

  • устранение ручного вмешательства и сложной логики на основе правил;

  • например, Повторяйте каждые X дней или Избегайте попыток оплаты в выходные;

  • глобальная оптимизация множества параметров для конкретных сегментов клиентов;

  • устойчивость к изменениям клиентов и рынка;

  • увеличение общего числа успешных платежей и сокращение времени сбора платежей.

Говоря коротко, применение ML к платежам сделало счастливее и клиентов, и нас.

Как мы сделали это

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

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

Например, мы взяли окно в 8 дней, разделив его на часовые промежутки, так, в общей сложности получилось 192 отрезка времени. Чтобы найти самый протяжённый отрезок времени для попытки обновления, мы использовали наши модели. А также экспериментировали с дневными окнами по 6 и 4 часа.

Сначала эксперименты проводились с оптимизацией каждой попытки независимо. У нас была модель, оптимизирующая решение о том, когда взимать плату с клиента после неудачной первой оплаты. Если рекомендуемая попытка модели также проваливалась, в оставшейся части окна обновления мы по умолчанию возвращались к логике правил. A/B-тесты этой комбинации проводились на отдельных сегментах пользователей в США. Для таргетинга применялся внутренний сервис развёртывания функциональности Stormcrow. Модель стала работать лучше, и мы развернули её.

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

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

Именно эта модель сегодня проходит A/B-тестирование в производстве при помощи Stormcrow со случайным набором команд участников тестирования Dropbox. Результаты пока положительные.

Predict Service

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

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

Чтобы упростить процесс, мы воспользовались созданным и управляемым командой платформы ML сервисом Predict Service, этот сервис управляет инфраструктурой для быстрого создания, развёртывания и масштабирования процессов машинного обучения в Dropbox. Применение Predict Service помогло сократить время ожидания при генерации прогнозов модели с нескольких минут до менее 300 мс для 99 % моделей. Переход на Predict Service также обеспечил возможность легкого масштабирования и чистое разделение двух систем.

С помощью этой системы машинного обучения платёжная платформа собирает все относящиеся к клиенту сигналы, запрашивает обслуживаемую через сервис Predict модель, чтобы получить лучшее время выставления счета, таким образом устраняя все наши разработанные и закодированные за 14 лет A/B-тестирования неоптимальные политики биллинга. Рабочий процесс этой системы построен следующим образом:

Белый цвет представляет компоненты платёжной платформы. Фиолетовым цветом обозначены компоненты системы машинного обученияБелый цвет представляет компоненты платёжной платформы. Фиолетовым цветом обозначены компоненты системы машинного обучения
  1. Получение прогноза о следующем лучшем времени списания средств. Когда попытка не удалась, платформа платежей, чтобы получить следующее лучшее время, запрашивает модуль Predict. Запрос выполняется с использованием идентификатора клиента и его типа.

  2. Получение сигналов клиентов. Модуль Predict собирает последние сигналы об использовании и о платежах клиентов, а также информацию о предыдущем сбое. Эти данные сохраняются в Edgestore (основной системе хранения метаданных в Dropbox) ежедневным заданием Airflow Job.

  3. Запрос прогноза. Собранные сигналы отправляются в Predict Service через вызов GRPC, который кодирует сигналы во фрейм данных о признаках, а затем отправляет их в модель.

  4. Генерация прогноза. Модель возвращает ранжированное наилучшее время оплаты. Этот прогноз отправляется обратно в модуль Predict, в свою очередь, результаты в биллинговую политику.

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

  6. Расписание следующего платежа. Как только сервис платежей получает наилучшее время списания средств, он учитывает это время при планировании следующей попытки оплаты и сохраняет в Edgestore.

ML-операции

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

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

Бизнес-метрики

  • Коэффициент одобрения счетов. Основная метрика, которую нужно улучшить. При каждом продлении подписки в Dropbox все платежи за продление отслеживаются как часть единого счёта. Эта метрика сообщает нам, было ли обновление подписки успешным.

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

Внутренний мониторинг модели

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

  • Охват: процент клиентов, получивших рекомендации от модели, в сравнении с подходом фиксированного интервала в 4 дня.

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

  • Задержка прогнозирования: сколько времени потребовалось модели для составления каждой рекомендации.

Мониторинг инфраструктуры

Наряду с мониторингом и оповещением для платёжной платформы и сервиса Predict мы также отслеживаем следующее, чтобы определить, насколько хорошо работает инфраструктура:

  • свежесть и задержки в конвейерах данных признаков;

  • доступность и задержка сервиса Predict;

  • доступность EdgeStore.

Для мониторинга нашей модели и метрик инфраструктуры мы используем дашборды Grafana и Vortex. Для бизнес-метрик мы используем Superset. Все эти живые метрики и дашборды помогают нам проактивно отслеживать ожидаемое поведение модели, позволяя принимать соответствующие меры, когда оно отклоняется.

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

Дальнейшие шаги

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

Наша модель, ориентированная на индивидуальных клиентов, в настоящее время внедрена в производство. Модель оптимизации всего цикла обновления сейчас проходит A/B-тестирование. Компания стремится распространить оптимизацию через ML на всех наших клиентов.

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

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

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы
Подробнее..

Подборка полезных инструментов маркетинга Топ-5 сервисов для аналитики соцмедиа

15.07.2020 16:21:33 | Автор: admin


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

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

Grow.com: аналитика по прибыльности различных социальных каналов


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

Как и в популярных средствах, вроде Google Analytics, в Grow есть данные по локации пользователей, их поведению и трендам во времени. Еще один важный момент возможность экспортировать отчеты и делиться ими, что полезно в ситуации, когда над кампанией трудятся несколько сотрудников или даже отделов.



Mailchimp: email и реклама в соцсетях


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

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


ChatKeeperBot: модерация и аналитика групп в Telegram


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

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



Keyhole: аналитика популярности хештегов


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

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



CoSchedule: планирование публикаций и аналитика


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

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



Заключение


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

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

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 в плане отказоустойчивости, а Яндекс порадовал формулировкой. Их сервис хороший, и это его ключевое отличие от остальных.

Выводы

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

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

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

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

Подробнее..

6 отечественных платформ для проведения онлайн-трансляций и видеоконференций

15.09.2020 20:16:34 | Автор: admin


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

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

DEEP Platform


Российская платформа для проведения онлайн-мероприятий с любым количеством участников.

Среди доступных функций:

  • Виртуальный ведущий и LIVE-комментатор.
  • Онлайн-трансляции и видеовстречи.
  • Лента мероприятия.
  • Чат.
  • Геймификация.


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

Для того, чтобы участники смотрели трансляции, предлагается несколько механик контроля внимания:

  • Вопросы участникам, если речь идет о трансляции.
  • Стоп-вопросы и тесты, если речь идет об учебном курсе.

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

COMDI




COMDI это команда специалистов и собственная платформа вещания для трансляций. СOMDI организуют онлайн-мероприятий любой сложности, включая полностью виртуальные события и телемосты с аудиторией в сотни тысяч зрителей Создатели компании Webinar Group, которые также выступают под брендами Webinar.ru, We.Study, Webinar Meetings.

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

К плееру с трансляцией можно подключить ленту из Twitter с хэштегом мероприятия. Его можно размещать на сайтах, а также сообществах Facebook, Вконтакте и YouTube. Благодаря этой возможности зрители могут общаться не только с организаторами рассылки, но и друг с другом. Плеер работает на любых мобильных устройствах.

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

TrueConf




Компания TrueConf разработчик корпоративного программного обеспечения и оборудования для видеоконференцсвязи, проведения трансляций и вебинаров. ПО компании совместимо с Zoom, Cisco Webex, BlueJeans, Lifesize и другими сервисами.


При необходимости системы TrueConf можно интегрировать с инфраструктурой предприятия. Поддерживается:

  • Каталоги пользователей Active Directory.
  • Сторонние H.323/SIP терминалы видеосвязи.
  • Интеграцию с корпоративной телефонией.
  • Трансляции конференций, вебинары и т.п.

Работает видеосвязь и трансляции на всех платформах, включая Windows, Linux, macOS, iOS и Android. Абонентов неограниченное количество, но лишь в случае покупки платного сервиса.

ZEEN




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


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

  • Текстовая трансляция.
  • Голосования.
  • Опросы.
  • Управление контентом.

Чаще всего ZEEN используется для создания полноценного online-мероприятия в дополнение к оффлайну. Но если офлайн-мероприятия не планируются, то можно использовать лишь online-функции.

Среди прочих особенностей платформы:

  • Организация трансляции мероприятия с возможностью отслеживания хода выступления по основным темам и получения информации о спикере.
  • Возможность добавлять авторские текстовые комментарии для сопровождения трансляции.
  • Голосование во время выступления спикера.
  • Создание опросов для закрепления материала или выяснения уровня удовлетворенности контентом.

VideoMost


image

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

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

Среди прочих возможностей:

  • Полностью готовая подсистема аудио и видео IP-коммуникаций на основе движка SPIRIT.
  • SDK с проработанным программным интерфейсом (API).
  • Гибкая масштабируемая архитектура системы.
  • Поддержка стандартов SIP и XMPP.
  • Платформа используется многими российскими компаниями, включая телекоммуникационного гиганта Ростелеком. Он продает услуги PaaS ВидеоСервер базе VideoMost.

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

Без окон, без дверей как мы распилили монолит на сервисы

04.03.2021 12:16:30 | Автор: admin

Пост написан по мотивам доклада Антона Губарева @antgubarev, бывшего тимлида команды Teachers он готов ответить на ваши вопросы в комментариях.

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

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

Наши продукты

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

Исторически сложилось, что для ведения сделок используется внешний Мегаплан, который интегрирован с нашей TRM (Teachers Relations Management, внутри ее еще ласково зовут Tramway) системой, в которой хранятся данные по конкретным преподавателям и которую мы дополнительно используем при поиске учителя по узкому запросу.

Множество процессов и работа сотен людей зависят от этой связки.Множество процессов и работа сотен людей зависят от этой связки.

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

Так онбординг видят кандидаты в преподаватели. Асессоры выставляют свои слоты (время, когда они доступны для проведения уроков), а преподаватели бронируют уроки на время из слотов.Так онбординг видят кандидаты в преподаватели. Асессоры выставляют свои слоты (время, когда они доступны для проведения уроков), а преподаватели бронируют уроки на время из слотов.

Осенью 2019-го компания активно взялась за развитие этих систем, и за 2,5 месяца нам предстояло:

  • реализовать новые фичи. Школа росла: если раньше требовалось 100 преподавателей в месяц, то теперь 1000, и от нас во многом зависело, захлебнется или же выстоит подбор при масштабировании (кстати, те наработки здорово помогли в период карантина, когда многие педагоги решили попробовать онлайн-преподавание);

  • не утонуть в старом коде а значит, отрефакторить хотя бы те части, где рефакторинг назрел давно;

  • отделить свою работу от другой команды.

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

Какие были варианты

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

+

Точно успеем с фичами

Ничего толком не отрефакторим

Продолжим мешать друг другу с другой командой

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

+

Организуем фичи

Разберемся с легаси

Перестанем толкаться со второй командой

С высокой вероятностью не успеем по срокам

Нужно увеличить ресурсы на инфраструктуру: не факт, что их дадут

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

Мы взяли последнюю на тот момент LTS версию Symfony и принялись за работу.

Детали реализации

Структура папок. Все независимые сервисы-продукты мы стали складывать в папку modules. У нас получились выделить такие сервисы:

  • интеграция с Мегапланом;

  • бэкенд календаря тренировочных уроков преподаватель асессор;

  • бэкенд онбординга;

  • и несколько прикладных проектов: работа с очередями, декораторы, http-клиенты, мониторинг, метрики, логирование.

В папке src практически ничего не было только Kernel.php и некоторые совсем общие инфраструктурные вещи.В папке src практически ничего не было только Kernel.php и некоторые совсем общие инфраструктурные вещи.

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

Во всех сервисах независимая конфигурация и полное отсутствие межмодульных use.Во всех сервисах независимая конфигурация и полное отсутствие межмодульных use.

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

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

Конфигурация всех модулей лежит в самих модулях.Конфигурация всех модулей лежит в самих модулях.

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

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

Например, преподаватель записался на тренировочный урок и нам нужно записать это в карточку (она же сделка) в CRM. Модуль онбординга, используя пакет megaplan-client, положит в очередь сообщение, что нужно изменить конкретное поле. Модуль Мегаплана содержит в себе консьюмеры, которые разгребают эту очередь. Работает и в обратную сторону. Мегаплан пошлет нам веб-хук, когда что-то изменилось, мы положим его в сыром виде в очередь, а онбординг эту очередь вычитает и что-то поменяет. Да, тут есть задержка, но она не критична, а данные точно сохранны.

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

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

Также мониторим все http-запросы: пишем в Elasticsearch, смотрим в Kibana.Также мониторим все http-запросы: пишем в Elasticsearch, смотрим в Kibana.

У нас в компании есть общий request-id бандл, разработанный специально для таких целей. Его довольно просто использовать в контексте Symfony: можно либо handler вручную добавить, либо через контейнер сконфигурировать.

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

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

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

Что получилось в итоге

Уже больше года мы живем на продакшене. При этом вышли за сроки буквально на пару недель, но смогли реализовать все фичи (так что у бизнеса претензий не было) и вынесли 2 из 4 сервисов.

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

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

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

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

P. S. На старте казалось, что будет проще, что возьмем больше и кинем дальше. Но ни я, ни кто-то еще из команды не жалеет, что мы пошли таким путем. Самое главное, что мы смогли отделить свою работу от другой команды, потому что это прям было очень болезненно. И по этому критерию все у нас получилось.

Подробнее..

Сколько методов должно быть в классе?

15.06.2020 14:21:28 | Автор: admin

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

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



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

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

Каждый раз, начиная писать сервис, я долго думаю над названием Бессмысленное AnotherEntityService снова и снова. А что если не должно быть тут никакого существительного? Как название сервиса отражает собранную внутри солянку запросов? Кто вообще пользуется этими методами одним разом?

Меня долго не отпускает пример рефакторинга от дядюшки Боба [Чистый Код, стр. 177]:

class Sql {    constructor(private table: string, private columns: Column[]) {}    public create(): string;    public insert(fields: object[]): string;    public selectAll(): string;    public select(criteria: Criteria): string;    // ...}


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


Вот результат преобразования.

abstract class Sql {    constructor(private table: string, private columns: Column[]) {}    public abstract generate(): string;}class CreateSql extends Sql {    public generate(): string;}class SelectSql extends Sql {    public generate(): string;}// ...


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

Что не менее важно, когда придёт время добавления команды Update, вам не придётся изменять ни один из существующих классов!


В ЧК не раз упоминается, что классы должны быть компактными. Но этот пример радует своей конкретикой, и он просто потрясный!

Я задумался, поскольку от разбиения столько плюсов, почему в реальности преобладают раздутые классы? Потому что мы раздробим классы до уровня функций и станет сложнее понимать общую картину? (А ФПшники по этому поводу комплексуют?) Или потому что из наших толстяков-сервисов инкапсуляция посыплется наружу? Мне кажется, существует темная сторона, которая хранит тайну больших классов.

Что даёт класс в плане программной языковой конструкции, если отбросить романтику? У класса есть светлая сторона публичные методы, которые автоматически формируют интерфейс объекта. Интерфейс образует собой абстракцию, которая должна упрощать программу. Это романтика.

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

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

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

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

Давайте рассмотрим пример из официальной документации Angular.

@Injectable({ providedIn: 'root' })export class HeroService { private heroesUrl = 'api/heroes'; private httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };  constructor(private http: HttpClient, private messageService: MessageService) {}  getHero(id: number): Observable<Hero> {   const url = `${this.heroesUrl}/${id}`;   return this.http.get<Hero>(url).pipe(     tap((_) => this.log(`fetched hero id=${id}`)),     catchError(this.handleError<Hero>(`getHero id=${id}`)),   ); }  addHero(hero: Hero): Observable<Hero> {   return this.http.post<Hero>(this.heroesUrl, hero, this.httpOptions).pipe(     tap((newHero: Hero) => this.log(`added hero w/ id=${newHero.id}`)),     catchError(this.handleError<Hero>('addHero')),   ); }  // ...  private handleError<T>(operation = 'operation', result?: T) {   return (error: any): Observable<T> => {     // TODO: send the error to remote logging infrastructure     console.error(error); // log to console instead     // TODO: better job of transforming error for user consumption     this.log(`${operation} failed: ${error.message}`);     return of(result as T);   }; }}


HeroService полностью
@Injectable({ providedIn: 'root' })export class HeroService {  private heroesUrl = 'api/heroes';  // URL to web api  httpOptions = {   headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };  constructor(   private http: HttpClient,   private messageService: MessageService) { }  /** GET heroes from the server */ getHeroes(): Observable<Hero[]> {   return this.http.get<Hero[]>(this.heroesUrl)     .pipe(       tap(_ => this.log('fetched heroes')),       catchError(this.handleError<Hero[]>('getHeroes', []))     ); }  /** GET hero by id. Will 404 if id not found */ getHero(id: number): Observable<Hero> {   const url = `${this.heroesUrl}/${id}`;   return this.http.get<Hero>(url).pipe(     tap(_ => this.log(`fetched hero id=${id}`)),     catchError(this.handleError<Hero>(`getHero id=${id}`))   ); }  /* GET heroes whose name contains search term */ searchHeroes(term: string): Observable<Hero[]> {   if (!term.trim()) {     // if not search term, return empty hero array.     return of([]);   }   return this.http.get<Hero[]>(`${this.heroesUrl}/?name=${term}`).pipe(     tap(x => x.length ?        this.log(`found heroes matching "${term}"`) :        this.log(`no heroes matching "${term}"`)),     catchError(this.handleError<Hero[]>('searchHeroes', []))   ); }  //////// Save methods //////////  /** POST: add a new hero to the server */ addHero(hero: Hero): Observable<Hero> {   return this.http.post<Hero>(this.heroesUrl, hero, this.httpOptions).pipe(     tap((newHero: Hero) => this.log(`added hero w/ id=${newHero.id}`)),     catchError(this.handleError<Hero>('addHero'))   ); }  /** DELETE: delete the hero from the server */ deleteHero(hero: Hero | number): Observable<Hero> {   const id = typeof hero === 'number' ? hero : hero.id;   const url = `${this.heroesUrl}/${id}`;    return this.http.delete<Hero>(url, this.httpOptions).pipe(     tap(_ => this.log(`deleted hero id=${id}`)),     catchError(this.handleError<Hero>('deleteHero'))   ); }  /** PUT: update the hero on the server */ updateHero(hero: Hero): Observable<any> {   return this.http.put(this.heroesUrl, hero, this.httpOptions).pipe(     tap(_ => this.log(`updated hero id=${hero.id}`)),     catchError(this.handleError<any>('updateHero'))   ); }  /**  * Handle Http operation that failed.  * Let the app continue.  * @param operation - name of the operation that failed  * @param result - optional value to return as the observable result  */ private handleError<T>(operation = 'operation', result?: T) {   return (error: any): Observable<T> => {      // TODO: send the error to remote logging infrastructure     console.error(error); // log to console instead      // TODO: better job of transforming error for user consumption     this.log(`${operation} failed: ${error.message}`);      // Let the app keep running by returning an empty result.     return of(result as T);   }; }  /** Log a HeroService message with the MessageService */ private log(message: string) {   this.messageService.add(`HeroService: ${message}`); }}



Перед нами типичный сервис. (Я бы даже сказал бест практикс). И на первый взгляд всё с ним нормально. HeroService работает с Hero сущностями, ничего лишнего. Много лишнего! Ни один клиент не использует интерфейс согласовано только частями.

Что делать, когда появится новый АПИ метод для Hero? Когда нужно остановиться складывать всё в одно, и разбить класс? Уверен, что каждый задавался этими вопросами. Но само наличие этого сервиса в проекте только смущает разработчиков, подталкивая их к написанию кода через изменение, а не расширение.

Давайте разберёмся, что делает похожими методы, собранные в HeroService, и как это разбивается.

  • Все методы пользуются общим url решается вынесением в константу BASE_HERO_API_URL.
  • Часть методов пользуется одинаковыми http-заголовками решается вынесением в интерсептор. Или можно выделить специальный HttpClient, который обернёт методы get, post, put, delete необходимыми опциями.
  • handleError решается вынесением в отдельный класс, который отлично выступит на роли ответственного по обработке ошибок.


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

Покажи мне код!
@Injectable({ providedIn: 'root' })export class GetHeroesOperation { constructor(   private http: HeroHttpClient,   private messageService: MessageService,   private errorHandler: ErrorHandler, ) {}  execute(): Observable<Hero[]> {   return this.http.get<Hero[]>().pipe(     tap((_) => this.messageService.add('fetched heroes')),     catchError(this.errorHandler.handleError<Hero[]>('getHeroes', [])),   ); }} @Injectable({ providedIn: 'root' })export class AddHeroOperation { constructor(   private http: HeroHttpClient,   private messageService: MessageService,   private errorHandler: ErrorHandler, ) {}  execute(hero: Hero): Observable<Hero> {   return this.http.post<Hero>('', hero).pipe(     tap((newHero: Hero) => this.logAddedHero(newHero)),     catchError(this.errorHandler.handleError<Hero>('addHero')),   ); }  private logAddedHero(newHero: Hero): void {   return this.messageService.add(`AddHeroOperation: added hero w/ id=${newHero.id}`); }} @Injectable({ providedIn: 'root' })export class ErrorHandler { constructor(private messageService: MessageService) {}  handleError<T>(operation: string, result?: T) {   return (error: any): Observable<T> => {     // TODO: send the error to remote logging infrastructure     console.error(error); // log to console instead      // TODO: better job of transforming error for user consumption     this.messageService.add(`${operation} failed: ${error.message}`);      // Let the app keep running by returning an empty result.     return of(result as T);   }; }} @Injectable({ providedIn: 'root' })export class HeroHttpClient { private httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };  constructor(@Inject(BASE_HERO_API_URL) private baseUrl: string, private http: HttpClient) {}  get<T>(endpoint = ''): Observable<T> {   return this.http.get<T>(this.getUrl(endpoint)); }  private getUrl(endpoint: string): string {   return Location.joinWithSlash(this.baseUrl, endpoint); }  post<T>(endpoint = '', data: unknown): Observable<T> {   return this.http.post<T>(this.getUrl(endpoint), data, this.httpOptions); }  put<T>(endpoint = '', data: unknown): Observable<T> {   return this.http.put<T>(this.getUrl(endpoint), data, this.httpOptions); }  delete<T>(endpoint = ''): Observable<T> {   return this.http.delete<T>(this.getUrl(endpoint), this.httpOptions); }} 



Я не пытаюсь (и не хочу) делать заявлений, типа: У класса не может быть больше 1-го метода!. Конечно может, когда у объекта есть состояние, в силу вступают другие правила. Так же я не против включения в класс методов, которые должны использоваться согласованно: isExecutable, validateParams, execute.

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

Класс не должен содержать в себе набор методов только по причине их схожей реализации.

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

Надеюсь, вам понравилось. Спасибо! Пока!
Подробнее..

Перевод Сервисы с подпиской должны давать своим пользователям уйти

09.06.2021 14:20:05 | Автор: admin
Никто не любит, когда человек бросает все и уходит. Я говорю не (только) о ситуации, когда тренер школьной команды норовит пристыдить спортсмена, который решает её покинуть. Я имею в виду момент, когда пользователь решает перестать пользоваться услугой или сервисом и хочет отменить свою подписку эта модель бизнеса в настоящее время является наиболее популярной. Ее использует многие компании, начиная от таких гигантов как Spotify и заканчивая мелкими стартапами, такими как Stitch Fix.


Картинка: Tom Guilmard

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

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

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

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

Возможно, такое мнение Мэриана объясняется его личной заинтересованностью в вопросе и не является полностью объективным, но в его точке зрения определенно есть смысл. Он отмечает примеры, когда компании (важно: не являющиеся его клиентами) весьма творчески подошли к процессу отмены подписки. Например, ему понравилось, как компания Audible, предоставляющая подписку на аудиокниги, выяснила, что у нее есть целая прослойка клиентов (студенты университетов) которые не хотят платить за подписку летом. Компания предложила своим клиентам новую опцию Заморозка абонемента. Компания Netflix, стремясь предложить своим пользователям альтернативный вариант вместо стандартных продолжить использование или отписаться, стала предлагать желающим отписаться опцию перейти на более дешевый тариф вместо того, чтобы просто потерять клиента. Эти опции предлагаются в очень простой и понятной манере, в отличие от запутанных и сложных условий использования пакетов интернет + ТВ, и это то, что может заставить клиента передумать отписываться.

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

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

Мэрион любит приводить аналогию, что клиент, которого удержали это новый клиент, и, очевидно, не он один разделяет эту точку зрения. Сохранение существующих клиентов всегда имело значение, но сейчас этому уделяется еще больше внимания, так как инвесторы устали от "статистики тщеславия" впечатляющих цифр, которые призваны шокировать всех и показывать быстрый рост компании, но при этом не отражающих действительно важные показатели того, сколько у компании клиентов, которые продолжают пользоваться сервисом. Сейчас, когда большой популярностью пользуются сервисы, акцентирующие все свое внимание на доходе, такие как Blue Apron и Uber, хорошо иметь свежую концепцию положительной юнит-экономики. Вот что означает этот красивый термин, если перевести его на простой язык: посмотрим, переходит ли интерес и внимание в стабильный и процветающий бизнес. Для этого измеряется прибыль от каждой транзакции клиента. При такой модели подсчета статистики уменьшение количества отписок будет играть решающую роль.

Каждой IT-компании известно, как дорого обходится каждый новый лид, и эта стоимость растет. Согласно исследованию компании по анализу маркетинга AdStage, в 2017 цена за клик в рекламе на Facebook выросла на 136% за 6 месяцев.

Так что идея о том, чтобы направить больше усилий на сохранение (а не замену) клиентов, которых вы уже привлекли, становится весьма актуальной. Главный маркетолог компании CleverTap Карник заявляет, что приоритеты клиентов и их инвесторов полностью поменялись. Крупнейшие диджитал-компании кардинально пересмотрели распределение бюджета и направили больше ресурсов на сохранение существующих клиентов, а не на привлечение новых, сообщает Карник. Отток клиентов обходится компании очень дорого. Дело не только в том, что вы тратите ресурсы на привлечение нового клиента, но и в том, что вы теряете потенциальную пожизненную ценность этого клиента.

Когда в CleverTap обратился индийский сервис мобильных платежей MobiKwik, CleverTap провела исследования и обнаружила, что 30% новых клиентов удаляло приложение в течение первой недели использования. Когда MobiKwik добавили различные акции и выгодные предложения для новых пользователей в первые три-четыре дня после скачивания приложения, количество удалений сократилось на 10%. Затем были разработаны стратегии, направленные на удержание клиентов, которые решили перестать пользоваться сервисом. По данным CleverTap, в результате этих изменений компания отвоевала 23%25% пользователей, которые раньше просто удаляли приложение.

Рассмотрим, как устроена работа сервисов подписок на коробки с неким содержимым так называемые subscription box. В настоящее время насчитывается более 3500 компаний, предоставляющих помесячную подписку на нечто-в-коробке (это может быть одежда, бьюти-продукты и т.д.). Большинство из них вначале делают какое-то заманчивое предложение, чтобы заинтересовать новых клиентов и побудить их попробовать сервис. Это могут быть скидки, бесплатный пробный период, ограниченные предложения то, что в идеале приведет к долгосрочным отношениям с клиентом. Я общался со многими подобными компаниями, говорит Мэрион, и часто отток составляет у них от 50% до 60% клиентов в течение первых трех месяцев использования сервиса.

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

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

Мэрион цитирует результаты исследования примеров из его практики, куда входит кейс одного из его первых его клиентов компании веб-аналитики Crazy Egg. (Следует отметить, что чаще всего клиенты Brightback занимаются B2B, но они также работают с двумя стартапами B2C в качестве пробного проекта). Используя программное обеспечение Brightback для анализа процедуры отмены подписки, компания Crazy Egg обнаружила, что значительное число клиентов отменяют подписку не обязательно по причине того, что они не удовлетворены качеством сервиса. Клиентам просто не хватило времени, чтобы разобраться в том, как пользоваться продуктом, или получить желаемые результаты. До этих клиентов еще можно дотянуться, чтобы сохранить их.

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

RAIFHACK История про хакатон, который смог

08.12.2020 16:17:05 | Автор: admin


Если помните, недавно мы публиковали анонс хакатона RAIFHACK, который прошел онлайн 14-15 ноября совместно с командой Russian Hackers. Казалось бы, это обычный хакатон. Но на нем было все: отрицание, гнев, торг, депрессия, принятие, шутки и, конечно же, мемасы.

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

  • Знай клиента и конкурента это об использовании данных. Участники разрабатывали продукт в парадигме Data as a Service на основе анонимизированных клиентских данных.
  • Платить легко это об использовании API системы быстрых платежей. Здесь предлагали полезные для бизнес-клиентов решения на основе API СБП от Райффайзенбанка, которые упростят работу с покупателями.

Про темы и сам хакатон


Обслуживание малого и среднего бизнеса приоритетное направление для нашего банка.

Мы отслеживаем запросы клиентов в этой сфере и стараемся тут же внедрять для них новые услуги. Речь как о стандартизированных, так и о гибких ИТ-решениях. Например, мы стали лидером внедрения системы быстрых платежей (СБП) в свои продукты. Это одно из первых решений на российском рынке, которое позволяет выставлять счета покупателям прямо со смартфона продавца.

Если говорить о продуктах в парадигме Data as a Service, то предыстория такая: в 2019 году после многочисленных кастдевов с партнерами программ лояльности, мы получили следующую картину: бизнес остро ощущает нехватку объективной информации о своих клиентах в реальном конкурентном окружении.

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

Формат, регистрации, таймлайн


В организации RAIFHACK мы решили не идти путем классического хакатона, когда команды получают задачу и 24-48-72 часа на ее выполнение. Нам хотелось, чтобы участники изначально погрузились в сам продукт. Поэтому CJM был таким:

  • зарегистрироваться командой;
  • ознакомиться с задачей трека и прислать свою идею продукта;
  • пройти отбор на финал;
  • получить на финале датасет и доступ к API, допилить продукт и представить демо.

Тема хакатона вышла узкой, но мы получили 900+ индивидуальных регистраций, 100+ командных решений на этапе отбора, а в финал вышло 28 команд.

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

Получив на отборе 60 идей в треке DaaS и 51 в СБП, мы приступили к оценке заявок. Решения смотрели менторы треков: как минимум продуктовый и технический + дополнительные. Уже на этапе отбора мы оценивали, насколько реализуемо решение например, в треке DaaS огромный вес имела DS-составляющая, отчего многие команды получили в этой части очень низкий балл. Эти оценки вызвали много гнева. Как и то, что некоторые проекты были просмотрены бОльшим количеством менторов, другие меньшим, и те, что вызвали более живой интерес, получили и рейтинг повыше. В целом это соответствует реальной ситуации, когда стартап презентует идею инвестору.


Не обошлось без эмоциональных реакций :)

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

По поводу системы оценок готовых решений дискутировать можно вовсе бесконечно. У нас одно видение, у некоторых участников другое. Гнев породил собой гневные комментарии, мемасы и демотиваторы (sic!).



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



Несмотря на все, финал все же состоялся и прошел 14-15 ноября. Расписание было крайне плотным, и мы ожидали, что от одной до трёх команд просто не дойдут до конца это нормально для подобных хакатонов. Удивительно, но у нас до конца дошли все!

Хакатон, кодинг и хардкор


Расписание хакатона жесткое, датасет огромный, пилить приходилось немерено, а еще целых 3 точки контроля менторами и не протестированный командами API. Участникам приходилось подключаться и сдавать, что есть, иначе команда снимается с дистанции.

Все чек-поинты мы разбили на 3 этапа:

  • идея и план реализации;
  • черновая версия прототипа;
  • правки прототипа + обсуждение презентации.

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

Сетка чек-поинтов со стороны менторов выглядела примерно так:



Фактически, менторы совершили подвиг и отработали в таком ритме все выходные. Они подбадривали команды и оставались с ними всегда на связи. Сами участники отмечали это уже по итогам хакатона: Отлично! Менторы смотрели со стороны и реально помогли нам сделать проект лучше. Очень подробные и дружелюбные ответы.

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

Демо и питчи


До демо добрались все. В этот раз мы решили не делить выступления и слушали все команды в едином потоке. Это был эксперимент, и он оказался не самым удачным, это правда. Сами признаем: 28 презентаций подряд это перебор. Мы получили пять предложений все же делить выступления на этапы, но большинству смотреть чужие проекты было довольно интересно.

Не все выступления прошли гладко. Тайминг был очень жесткий: ровно 5 минут на выступление и 2 минуты на вопросы. У одной из команд в ответственный момент вообще отвалился интернет. Но все справились, и это было действительно круто и интересно! Одна команда даже арендовала вендинговую хватайку специально для презентации в финале!

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

Кто же выиграл? Далее мы расскажем о проектах, которые одержали победу в рамках своих направлений.

Победитель DaaS команда DS29




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

Задача проекта: разработать продукт в парадигме Data as a Service на основе данных о клиентах и их транзакциях.

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



Здесь можно скачать презентацию проекта.

Я ожидала получить фидбек на первоначальную идею, проработать ее и, получить мерч и поесть :) Конечно, мы хотели выиграть и сделали все, чтобы этого достичь. Здорово, что нам удалось Анастасия Кишкун, тимлид и аналитик команды.

Очень понравилась гибкость в работе с менторами: на чек-поинтах можно было подвинуть время звонка, на наши вопросы оперативно отвечали в чате, и это очень помогало в работе, Алиса Аленичева, Data Scientist.

Победитель СБП команда LIFE Laboratory




Суть проекта: приложение, которое дает возможность бизнесу использовать телефон в качестве терминала, обрабатывая заказы клиентов через веб-интерфейс.

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

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



Как решили задачу: реализовали приложение NFC for SFP, которое получает от оператора QR-код с вшитыми для платежа данными. Клиент получает по NFC данные, которые позволяют выбрать свой банк-приложение, после чего остается лишь нажать кнопку подтвердить оплату. В обычной ситуации курьеру приходится брать с собой платежный терминал; большинство моделей таких устройств достаточно тяжелые и неудобные, плюс дорогие. Гораздо проще использовать смартфон с модулем NFC.

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



Здесь можно скачать презентацию проекта.

От хакатона ожидали купончики по 500 рублей на еду в Яндексе, нудные и долгие чекпоинты, и сомневались в менторах. Но получилось, что организация хакатона была на том уровне, которого я ещё не видел, и менторы очень сильно нам помогли, весь период хакатона готовы были с нами общаться, за что им отдельная благодарность, Роман Николенко, backend-разработчик.

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

Общий призовой фонд составлял 500 000 рублей. В каждом треке за первое место был выплачен денежный приз в размере 150 000 рублей на команду, а также подарен расширенный пак фирменного мерча нашего банка. За второе место выплачивалось по 100 000 рублей. За третье место каждый участник получил airpods и мерч. Все остальные команды получили мерч и нашу безграничную благодарность за участие, а создателю петиции на change.org мы презентовали фирменные тапочки, которым он был очень рад :)



Увидимся на следующем RAIFHACK!
Подробнее..

Apache Software Foundation опубликовала релиз платформы Apache Hadoop 3.3.0

03.08.2020 18:13:27 | Автор: admin


Apache Software Foundation выпустила свежий релиз своей платформы Apache Hadoop 3.3.0. С момента последнего обновления прошло полтора года. Сама платформа представляет собой инструмент для организации распределенной обработки больших объемов данных с использованием MapReduce. Hadoop включает в себя набор утилит, библиотек и фреймворков для разработки и выполнения распределенных программ, которые способны работать на кластерах из тысяч узлов.

Для Hadoop создана специализированная файловая система Hadoop Distributed File System (HDFS), которая обеспечивает резервирование данных и оптимизацию работы MapReduce-приложений. HDFS предназначена для хранения файлов больших размеров, распределенных между отдельными узлами вычислительного кластера. Благодаря своим возможностям Hadoop используется крупнейшими компаниями и организациями. Google даже предоставила Hadoop право на использование технологий, которые затрагивают патенты, связанные с методом MapReduce.

В общем, встречаем Apache Hadoop 3.3.0.



Вот список самых важных изменений в новой версии:
  • Поддержка платформ на основе ARM-архитектуры (кстати, у Selectel есть ARM-серверы; вот ссылка, если захотите попробовать).
  • Версия формата Protobuf (Protocol buffers) обновлена до 3.7.1. Protobuf используется для сериализации структурированных данных.
  • Для коннектора S3A добавлена функция Delegation Token (аутентификация), улучшена поддержка кэширования ответов с кодом 404, плюс увеличена производительность S3guard и общая надежность работы.
  • Разработчики заявили о решении проблем с автоматическим тюнингом в файловой системе ABFS.
  • Добавлена поддержка Java 11.
  • Появилась поддержка файловой системы Tencent Cloud COS, что необходимо для доступа к объектному хранилищу COS.
  • Добавлен сервис DNS Resolution, что дает возможность клиентам определять серверы через DNS по именам узлов. Соответственно, в настройках нет необходимости добавлять все хосты.
  • Появился каталог приложений YARN (Yet Another Resource Negotiator) с возможностью поиска.
  • Добавлена поддержка планирования запуска OPPORTUNISTIC-контейнеров через Resource Manager.

Благодаря тому, что Hadoop активно развивается, рынок решений на его основе быстро растет. Если в 2019 году объем рынка составлял около $1,7 млрд, то, по прогнозам экспертов, к 2024 году он достигнет $9,4 млрд.

Сейчас Hadoop занимает первое место среди репозиториев Apache по числу вносимых изменений. Размер кодовой базы платформы составляет около 4 млн строк. Наиболее крупные хранилища Netflix, Twitter, Facebook.
Подробнее..

Из песочницы Увольнять или оставить есть ли альтернатива бенчу, если грянул кризис

16.07.2020 18:14:38 | Автор: admin
В 2018 году мировой IT-отрасли предсказывали активный рост, а количество работников в ней к 2030-му году должно было вырасти почти вдвое. Но сейчас, в 2020-м, этот прогноз можно назвать чересчур оптимистичным. Пандемия расстроила планы бизнеса и заставила всех играть по новым правилам.

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

При этом ситуацию нельзя назвать кризисом. Скорее, это неопределенность, в которой непонятно, что делать. Закрываться или расти? Расширять сферу влияния или держаться за то, что есть, и не высовываться? Увольнять сотрудников или нанимать новых? Какой путь самый выгодный для компании на данный момент?

Увольнения не выход


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

Часто можно встретить мнения, что, мол, увольнения коснулись технического персонала и рекрутеров, которым некого было нанимать в сложные времена. Программисты же остались не у дел, потому как хорошего специалиста на рынке найти непросто. Но официальная статистика США рисует другую картину: с марта под сокращение в IT-компаниях попали 117 000 человек, в число которых входят все виды профессий. Ей вторит опрос на Хабре, в котором под сокращение так или иначе попали все ветви it-отрасли, кроме разве что геймдева, телекома и контентщиков. Перед кризисом равны оказались все.

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

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

Как насчет отпусков и зарплат?


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

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

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

Все на бенч


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

  • Заняться техподдержкой для основных клиентов
  • Кодить мелкие проекты на пару месяцев
  • Осваивать новые навыки
  • Разрабатывать внутренние проекты компании
  • Участвовать в opensource и хакатонах для престижа
  • Выполнять интересные задания с низким рейтом

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

Где искать задачи для сотрудников на бенче


В чатах и соцсетях


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

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

Примеры: Веб-студии и ИТ-разработчики, IT Outsourcing, чаты и паблики в телеграме it_outsource, BoardOutsource, серия закрытых чатов от softsource и т. д.

На фриланс-платформах


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

  1. У компании должен быть добротно оформленный профиль, чтобы ей доверяли (причем на каждой платформе на него надо тратить отдельное время).
  2. Даже на отбор предложений уйдет масса времени.
  3. Реакция на конкретный заказ отбирает довольно много времени: надо изучить само предложение, по возможности собрать информацию о заказчике, и написать достойный ответ, чтобы на вас обратили внимание.

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

Примеры (тысячи их): Freelancehunt.com, Fl.ru, Weblancer.net, Upwork, Freelancer.com, Guru

Кстати, у StackOverflow и GitHub тоже есть подразделения для поиска исполнителей для проектов.

На платформах для команд на бенче


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

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

Примеры платформ для поиска команд (и разработчиков) на бенче: белорусская Vobla, немецкая Onbench, украинские AOG и Lemon.io, прибалтийская Aciety, американские SourceSeek, VenturePact и Cider, индийская Offshorewebdeveloper.
Подробнее..

Что стоит облачный гейминг построить тренды ближайшего будущего

23.09.2020 16:18:12 | Автор: admin
image
Компьютерные и видеоигры неуклонно развиваются. Согласно прогнозам Newzoo, к 2023 году количество геймеров составит 3 млрд.

Растет и доля рынка облачных игр по оценкам экспертов совокупный среднегодовой темп роста (GAGR) этой сферы вплоть до 2025 года составит более 30%. Если говорить про финансовые показатели, то объем рынка к 2025-2026 году достигнет около $3-6 млрд. Пандемия при этом не замедляет, а ускоряет развитие всей отрасли. Сейчас в сфере облачных игр сформировалось несколько устойчивых трендов, которые усилятся в ближайшем будущем. Подробнее о них под катом.

5G и облачные игры


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

Благодаря проникновению 5G облачные игры становятся доступнее. Сети пятого поколения позволяют запускать сервисы вроде Google Stadia и Playkey не только на ПК и ноутбуках, но и на мобильных устройствах в любом регионе, где есть 5G покрытие. У геймеров появляется возможность играть в тайтлы класса ААА по дороге в аэропорт, в кафе, да и просто на лавочке в парке, если возникнет такое желание. Фактически, на руках у пользователей мобильных девайсов миллионы игровых гаджетов. Уже сейчас количество мобильных геймеров превышает 2 млрд, а с течением времени их количество будет только расти.

image

Коммерческая 5G связь уже работает в Южной Корее, некоторых регионах Китая, в Японии. Другие страны активно развивают инфраструктуру мобильных сетей пятого поколения. Все это способствует активному развитию cloud gaming.

Приход крупных игроков


Облачными играми заинтересовались крупнейшие компании мира, включая Microsoft, Google, Amazon, Nvidia, Sony, Tencent, NetEase. Участников рынка становится все больше. Например, компания Amazon пообещала в этом году запустить собственную игровую платформу Project Tempo.

Активно расширяется ниша облачных игр в Азии. Так, в марте 2020 года компании Sanqi Interactive Entertainment и Huawei Cloud договорились совместно развивать платформу облачного гейминга.

Не отстает и Россия. Сейчас в стране доступны:
  • GeForceNow.
  • Playkey.
  • Loudplay.
  • Megadrom.
  • Power Cloud Game.
  • Drova.

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

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

Облака, консоли и дорогое железо


Стоимость игровых ПК и консолей последних поколений весьма высока>. Так, стоимость low-end игровых систем составляет $300-400. Стоимость топовых моделей, которые способны справиться даже с самой тяжелой игрой, выше на порядок.

Конечно, приобрести систему за $4000-$5000 может себе позволить далеко не каждый геймер. В среднем на приобретение или модификацию игровой системы игрок тратит $800-1000. Но и это много. Высокие цены на игровое оборудование отпугивают миллионы геймеров. По оценкам специалистов, около 70% потенциальных покупателей игровых компьютеров или ноутбуков не имеют желания или возможности приобрести то, что им хотелось бы получить. В итоге характеристики 60% пользовательских ПК не дотягивают до ресурсных требований игр ААА-класса. Если бы стоимость мощных игровых систем снизилась, рынок сразу бы получил миллионы новых игроков.

image

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

Игры как сервис


Благодаря отказу от железа у облачного гейминга практически нет порога входа. Формируется новая модель потребления игрового контента. Кроме того, развивается новый класс игр, сloud-native, которые изначально создаются под облачные платформы и у которых нет требований к железу. Яркий представитель этой ниши Fortnite.

Сервисы облачных игр делают все возможное, чтобы упростить игрокам доступ к контенту. Например, Google совмещает YouTube и Google Stadia. Так, YouTube демонстрирует трансляцию игры. Для того, чтобы присоединиться к процессу, нужно просто кликнуть на кнопку. Не нужно ничего загружать, покупать кликаешь на кнопку присоединиться и играешь. Такая модель получила собственное название click to keep play.


Пример интеграции в демоверсии Google Stadia с лайвстримом NBA 2K

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

Расширение аудитории облачного гейминга


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

Аудитория облачного гейминга постепенно расширяется, увеличивается доля молодой аудитории. Так, в январе 2020 года доля игроков до 20 лет была близкой к 25%. Уже в конце мая начале июня этот показатель увеличился вдвое. Возможно, на это повлиял переход студентов и школьников на дистанционную форму обучения. Свободного времени стало больше, и учащиеся стали тратить его на игры. По данным Telecom Italia, после введения режима самоизоляции игровой трафик вырос на 70% по сравнению с аналогичным периодом прошлого года. В России количество игроков во время карантина увеличилось в 1,5 раза, а вот выручка провайдеров облачных сервисов выросла сразу на 300%.

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

Категории

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

  • Имя: Макс
    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