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

Edge

Update Tuesday Microsoft выпустила апрельские обновления безопасности

14.04.2021 14:22:42 | Автор: admin

Microsoft выпустила плановые обновления безопасности, закрывающие 114 уязвимостей, включая 6 уязвимостей в Microsoft Edge и 4 уязвимости в Exchange Server. 19 уязвимостей были классифицированы как Критические и 88 как Важные. Среди закрытых уязвимостей две были обнародованы публично, а эксплуатация одной из этих уязвимостей была зафиксирована в реальных атаках (0-day).

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

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

На следующие уязвимости и обновления безопасности следует обратить особое внимание.

Была закрыта критическая уязвимость удаленного исполнения кода CVE-2021-28329 в компонентах среды исполнения RPC), которой подвержены все поддерживаемые версии Windows и Windows Server. Рейтинг CVSS составил 8.8, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Апрельские обновления также исправляют важную уязвимость повышения привилегий CVE-2021-28313 в компонентах Windows Diagnostics Hub. Данная уязвимость затрагивает последние версии Windows 10 и Windows Server 20H2, 2004, 1909. Рейтинг CVSS составил 7.8, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Также была закрыта важная уязвимость повышения привилегий CVE-2021-28347 в компонентах среды исполнения Windows Speech. Уязвимости подвержены все поддерживаемые версии Windows 10. Рейтинг CVSS составил 7.8, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Устранена важная уязвимость удаленного исполнения кода CVE-2021-27091 в компонентах службы RPC Endpoint Mapper, которая была обнародована публично. Данной уязвимости подвержена только ОС Windows Server 2012. Рейтинг CVSS составил 7.8, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Также обновления закрывают критическую уязвимость удаленного исполнения кода CVE-2021-27095 в видео-декодере Windows Media, которой подвержены все версии Windows. Рейтинг CVSS составил 7.8, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Была закрыта важная уязвимость удаленного исполнения кода CVE-2021-28445 в компонентах Windows Network File System (NFS. Данной уязвимости подвержены все ОС Windows кроме Windows 10 и Windows Server 1803. Рейтинг CVSS составил 8.1, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Устранена важная уязвимость удаленного исполнения кода CVE-2021-28451 в приложении Microsoft Excel. Данной уязвимости подвержены Microsoft Office 2019 for Windows/Mac, Microsoft Excel 2013-2016, Microsoft 365 Apps for Enterprise, Microsoft Office Online Server, Microsoft Office Web Apps Server 2013. Рейтинг CVSS составил 7.8, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Замыкает команду лидеров апрельского выпуска уязвимость нулевого дня, уже использующуюся в атаках это важная уязвимость повышения привилегий CVE-2021-28310 в компонентах Win32k. Данная уязвимость затрагивает версии Windows 10 и Windows Server 20H2, 2004, 1909, 1809, 1803. Рейтинг CVSS составил 7.8.

Отдельного внимание заслуживают ряд уязвимостей в почтовом сервере Microsoft Exchange. На этот раз затронуты все поддерживаемые версии Exchange Server 2013, 2016, 2019.

Примечание: помимо плановых обновлений в марте был внеплановый выпуск обновлений безопасности для локальных версий Microsoft Exchange Server 2010, 2013, 2016, 2019. Подробности об этом выпуске можно получить в нашем блоге.

Все 4 уязвимости в апрельском выпуске CVE-2021-28480, CVE-2021-28481, CVE-2021-28482, CVE-2021-28483 были классифицированы как Критические, и потенциально позволяют злоумышленнику удаленно выполнить произвольный код на почтовом сервере.

Информация о данных уязвимостях не была обнародована публично и на данный момент не было зафиксировано использование рабочих эксплоитов в реальных атаках. Максимальный рейтинг CVSS среди уязвимостей составил 9.8 из 10 (самый низкий рейтинг 8.8) и согласно индексу эксплуатации у атак с использованием этих уязвимостей высокий уровень вероятности.

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

  • Exchange Server 2013 CU23

  • Exchange Server 2016 CU19/CU20

  • Exchange Server 2019 CU8/CU9

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

Остальные уязвимости были исправлены в компонентах Microsoft Edge (на движке Chromium), Microsoft Office (приложения и веб-сервисы), SharePoint Server, Visual Studio, VS Code, Azure DevOps Server, Azure Sphere, GitHub Pull Requests and Issues Extension и Maven Java Extension.

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

Также хочу напомнить, что в марте закончилась поддержка старой версии браузера Microsoft Edge (на движке EdgeHTML). При установке апрельского накопительного пакета старый браузер будет заменен новой версией Microsoft Edge на движке Chromium. Подробности - в нашем блоге.

Обновления стека обслуживания

Обновления Servicing Stack Updates (SSU) были выпущены для всех поддерживаемых ОС: Windows 10 версии 1809, 1909, 2004, 20H2 и Windows Server версии 2019, 1909.

А для версий 2004, 20H2 обновления SSU теперь поставляются в едином накопительном пакете вместе с остальными обновлениями. О том, как установить сразу и SSU, и обновления безопасности ОС в одном накопительном пакете, автоматически, соблюдая правильную последовательность, читайте в нашем блоге.

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

Вы также можете посмотреть запись нашего ежемесячного вебинара "Брифинг по безопасности" с более подробным разбором этого выпуска обновлений безопасности Microsoft.

А для того, чтобы быть в курсе самых актуальных новостей информационной безопасности Microsoft, подписывайтесь на канал https://aka.ms/artsin.


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

Автор: Артём Синицын CISSP, CCSP, MCSE, MC: Azure Security Engineer
старший руководитель программ информационной безопасности в странах Центральной и Восточной Европы
Microsoft

Twitter: https://aka.ms/artsin
YouTube: https://aka.ms/artsinvideo

*Vulnerability Review Report by Flexera

Подробнее..

WebRTC CDN на Google Cloud Platform с балансировкой и автоматическим масштабированием

18.06.2021 10:22:12 | Автор: admin

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

Кратко напомним основные тезисы:

  • В CDN низкая задержка в трансляциях обеспечивается использованием технологии WebRTC для передачи видеопотока от Origin сервера к Edge серверам, которые, в свою очередь, позволяют подключить большое количество зрителей.

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

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

Инфраструктура Google Cloud Platform, как и в случае с AWS, поддерживает автоматическое масштабирование и балансировку распределения нагрузки, поэтому не приходится беспокоиться о лишних расходах на оплату виртуальных серверов вы платите только за то, что используете.

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

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

Разворачиваем WebRTC CDN с балансировщиком и автоматическим масштабированием на Google Cloud Platform

Конфигурация CDN будет следующей:

  • один Origin сервер;

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

Для развертывания потребуется настроить следующие компоненты в консоли Google Cloud Platform:

  • глобальный файрволл на уровне проекта Google Cloud;

  • виртуальные машины WCS CDN Origin и WCS CDN Edge;

  • шаблон развертывания на основе образа диска WCS CDN Edge;

  • группу масштабирования;

  • балансировщик нагрузки.

Итак, приступим.

Настраиваем глобальный файрволл на уровне проекта Google Cloud для прохождения WebRTC трафика

Настройка межсетевого экрана действует на все запущенные в вашем проекте сервера, поэтому начнем развертывание с нее.

В основном меню консоли Google Cloud откройте раздел "VPC networks" и выберите пункт "Firewall":

На открывшейся странице нажмите кнопку "Create Firewall Rule" :

В открывшемся мастере задайте имя правила:

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

Еще ниже в секции "Protocols and ports" укажите порты для работы WCS и нажмите кнопку "Create":

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

Разворачиваем WCS сервер с ролью Origin для WebRTC CDN

В консоли Google Cloud откройте раздел "Compute Engine" и выберите из меню в левой части пункт "VM instances". Нажмите кнопку "Create" в диалоге создания нового экземпляра сервера:

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

Ниже на странице в секции "Boot disk" нажмите кнопку "Change" и выберите образ "CentOS 7":

Разверните секцию "Management, security, disks, networking, sole tenancy":

На вкладке "Security" добавьте публичный ключ для доступа к серверу по SSH:

На вкладке "Networking" в секции "Network interfaces" настройте внешний и внутренний IP адреса для сервера. Для работы в составе CDN серверу нужно назначить статический внутренний IP адрес:

После всех настроек нажмите кнопку "Create" для создания нового экземпляра WCS сервера с ролью CDN Origin:

Спустя пару минут сервер будет создан и запущен. Подключаемся к нему по ssh и устанавливаем WCS. Все действия - установка, изменение настроек, запуск или перезапуск WCS - должны выполняться с root правами, либо через sudo.

1.Установите Wget, Midnight Commander и дополнительные инструменты и библиотеки

sudo yum -y install wget mc tcpdump iperf3 fontconfig

2.Установите JDK. Для работы в условиях больших нагрузок рекомендуется JDK 12 или 14. Удобнее провести установку при помощи скрипта на bash. Текст скрипта:

#!/bin/bashsudo rm -rf jdk*curl -s https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz | tar -zx[ ! -d jdk-12.0.2/bin ] && exit 1sudo mkdir -p /usr/java[ -d /usr/java/jdk-12.0.2 ] && sudo rm -rf /usr/java/jdk-12.0.2sudo mv -f jdk-12.0.2 /usr/java[ ! -d /usr/java/jdk-12.0.2/bin ] && exit 1sudo rm -f /usr/java/defaultsudo ln -sf /usr/java/jdk-12.0.2 /usr/java/defaultsudo update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk-12.0.2/bin/java" 1sudo update-alternatives --install "/usr/bin/jstack" "jstack" "/usr/java/jdk-12.0.2/bin/jstack" 1sudo update-alternatives --install "/usr/bin/jcmd" "jcmd" "/usr/java/jdk-12.0.2/bin/jcmd" 1sudo update-alternatives --install "/usr/bin/jmap" "jmap" "/usr/java/jdk-12.0.2/bin/jmap" 1sudo update-alternatives --set "java" "/usr/java/jdk-12.0.2/bin/java"sudo update-alternatives --set "jstack" "/usr/java/jdk-12.0.2/bin/jstack"sudo update-alternatives --set "jcmd" "/usr/java/jdk-12.0.2/bin/jcmd"sudo update-alternatives --set "jmap" "/usr/java/jdk-12.0.2/bin/jmap"

3.Загрузите архив для установки самой свежей стабильной версии WebCallServer:

sudo wget https://flashphoner.com/download-wcs5.2-server.tar.gz

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

sudo tar -xvzf FlashphonerWebCallServer-5.2.714.tar.gz && cd FlashphonerWebCallServer-5.2.714 && ./install.sh

5.Для активации лицензии запустите скрипт "./activation.sh" из каталога установки WCS. Этот шаг, при желании, можно пропустить и активировать лицензию позже через веб-интерфейс:

sudo cd /usr/local/FlashphonerWebCallServer/bin && sudo ./activation.sh

6.Отключите firewalld и SELinux. Сетевой экран мы ранее настроили на уровне Google Cloud Platform, поэтому нет необходимости закрывать порты в операционной системе:

sudo systemctl stop firewalld && systemctl disable firewalld && setenforce 0

7.Откройте любым удобным редактором файл flashphoner.properties, который можно найти по пути:

/usr/local/FlashphonerWebCallServer/conf/flashphoner.properties

и внесите в него настройки для запуска CDN. В параметре "cdn_ip" укажите внутренний IP адрес вашей виртуальной машины с ролью CDN Origin:

cdn_enabled=truecdn_ip=10.128.0.3 # Local IP address CDN Origincdn_nodes_resolve_ip=falsecdn_role=origin

На скриншоте ниже примерный вид файла flashphoner.properties для WCS с ролью CDN Origin:

После изменения настроек запустите (или перезапустите) Web Call Server:

systemctl start webcallserver

На этом запуск и настройка Origin закончены. Перейдем к настройке балансировщика нагрузки и автоматического масштабирования.

Запускаем балансировщик нагрузки и автоматическое масштабирование в Google Cloud для WebRTC CDN

Для запуска балансировщика и автоматического масштабирования нужны следующие компоненты:

  • образ диска, который будет использоваться в шаблоне при создании нового экземпляра WCS;

  • шаблон, на основе которого будут создаваться новые экземпляры сервера при масштабировании;

  • группа масштабирования;

  • балансировщик нагрузки;

  • настройки контроля активности сервера.

Создаем образ диска WCS сервера с ролью Edge для WebRTC CDN

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

Повторите инструкцию по подготовке сервера Origin до пункта о внесении настроек в файл flashphoner.properties. Для роли Edge внесите в этот файл следующие настройки:

cdn_enabled=truecdn_ip=10.128.0.4cdn_nodes_resolve_ip=falsecdn_point_of_entry=10.128.0.3cdn_role=edgehttp_enable_root_redirect=false

После внесения и сохранения настроек, остановите в консоли Google Cloud виртуальную машину WCS CDN Edge, выберите из меню в левой части пункт "Images" и нажмите кнопку "Create Image":

В открывшемся мастере укажите имя нового образа, выберите в качестве источника диск виртуальной машины WCS CDN Edge и нажмите кнопку "Create":

После того, как образ диска создан переходим к созданию шаблона развертывания Edge сервера на основе созданного образа.

Создаем шаблон развертывания Edge сервера

Выберите из меню в левой части окна консоли Google Cloud пункт "Instance templates" и нажмите кнопку "Create Instance template":

В открывшемся мастере создания шаблона развертывания укажите имя шаблона и выберите конфигурацию виртуальной машины:

Ниже на странице в секции "Boot disk" нажмите кнопку "Change". в Открывшемся окне перейдите на вкладку "Custom Images" и выберите образ диска WCS CDN Edge, который мы создали ранее. Нажмите кнопку "Select":

Разверните секцию "Management, security, disks, networking, sole tenancy". На вкладке "Security" добавьте публичный ключ для доступа к серверу по SSH и нажмите кнопку "Create":

Шаблон развертывания для WCS с ролью CDN Edge создан. Теперь перейдем к созданию группы масштабирования.

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

Из меню в левой части окна консоли Google Cloud выберите пункт "Instance groups" и нажмите кнопку "Create Instance group":

На открывшейся странице выберите регион и зону расположения группы и укажите шаблон развертывания WCS Edge, который мы создали ранее:

В секции "Autoscaling" на этой же странице настройте триггер запуска дополнительных серверов Edge. В качестве триггера будем использовать загрузку процессора более 80% . В поле "Maximum number of instances" укажите максимальное количество виртуальных машин, которые будут запущены при срабатывании триггера:

Затем включите проверку состояния виртуальной машины в секции "Autohealing". Для того, что бы создать настройку проверки сервера выберите из списка в поле "Health check" пункт "Сreate a health check":

В открывшемся мастере создания проверки состояния сервера укажите имя проверки, протокол TCP, порт 8081 и запрос /health-check. Настройте критерии проверки и нажмите кнопку "Save and continue":

Разверните секцию "Advanced creation options" и активируйте чекбокс "Do not retry machine creation". После чего нажмите "Create":

Будет создана группа масштабирования и запущен один WCS с ролью CDN Edge. Последним этапом настройки нашей CDN с балансировщиком нагрузки и автоматическим масштабированием будет настройка балансировщика.

Создаем балансировщик нагрузки

Сначала зарезервируем для балансировщика внешний IP адрес. В главном меню Google Cloud Platform в секции "VPC network" выберите пункт "External IP addresses" и нажмите кнопку "Reserve static address":

На открывшейся странице в поле "Name" задаем имя для зарезервированного IP адреса. Выбираем уровень качества сетевых услуг для адреса и тип распространения. После завершения всех настроек нажимаем кнопку "Reserve":

Затем переходим к настройке балансировщика.

Выбираем пункт "Load balancing" в разделе "Network services" секции "Networking" основного меню Google Cloud Platform:

Нажимаем кнопку "Create load balancer":

Затем выберите тип балансировщика "TCP Load Balancing" и нажмите кнопку "Start configuration":

На открывшейся странице укажите внешний балансировщик "From Internet to my VMs" и регион размещения серверов балансировщика. После выбора настроек нажмите кнопку "Continue":

На следующей странице задайте имя балансировщика, Затем перейдите в раздел настроек "Backend configuration" и укажите в каком регионе будут созданы сервера входящие в состав балансировщика. На вкладке "Select existing instance groups" выберите группу масштабирования Edge серверов, которую мы создали ранее. Затем в поле "Health check"выберите из выпадающего списка пункт "Сreate a health check":

На открывшейся странице укажите параметры для проверки состояния работы балансировщика порт 8081 и запрос /, после чего нажмите кнопку "Save and continue":

Затем перейдите к настройкам раздела "Frontend configuration". В этом разделе нужно создать привязку портов к внешнему IP адресу. Укажите внешний IP адрес для балансировщика, который мы зарезервировали выше и создайте конфигурации для TCP портов 8081, 8080, 8443, 8444 для HTTP(S) и WS(S). После создания необходимых портов нажмите кнопку "Create":

Балансировщик будет запущен. На этом развертывание CDN с балансировщиком и масштабированием можно считать завершенным. Переходим к тестированию.

Тестирование WebRTC CDN с балансировщиком и масштабированием на базе Google Cloud Platform

Методика тестирования

Для проведения нагрузочного тестирования, при создании группы масштабирования мы выставили порог загрузки процессора для срабатывания триггера на 20%. Тестирование будем проводить с использованием браузера Google Chrome и виртуальной вебкамеры для организации трансляции видеопотока. Что бы сымитировать повышение нагрузки на процессор запустим воспроизведение потока с транскодированием с помощью примера "Media Devices".

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

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

В браузере Google Chrome открываем web интерфейс WCS с ролью CDN Origin Авторизуемся, открываем пример "Two-way Streaming", устанавливаем соединение с сервером по WebSocket и публикуем видеопоток.

Затем, запускаем web интерфейс WCS CDN Edge сервера по IP адресу, который был зарезервирован при создании балансировщика.

Авторизуемся, открываем пример "Media Devices" и устанавливаем соединение с балансировщиком по WebSocket. В правом столбце настроек снимаем чек бокс "default" для параметра "Size" и задаем значения для транскодирования видеопотока. Например, если поток на Origin сервере опубликован с размерами 320х240 задаем значение 640х480. Повторите действия в нескольких вкладках браузера, для имитации большого количества зрителей.

В консоли Google Cloud видим, что были запущены две дополнительные виртуальные машины:

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

http://<WCS instance IP address>:8081/?action=stat

Откройте страницу статистики для каждой виртуальной машины, запущенной балансировщиком. Значение "connection_websocket" показывает количество активных WebSocket сессий на каждой виртуальной машине.

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

Хорошего стриминга!

Ссылки

Наш демо сервер

CDN для стриминга WebRTC с низкой задержкой - CDN на базе WCS

Документация по быстрому развертыванию и тестированию WCS сервера

Документация по развертыванию WCS в Google Cloud Platform

Документация по настройке балансировки нагрузки с масштабированием в GCP

Подробнее..

Edge-ик в тумане и другие приключения периферийных вычислений

25.06.2020 10:15:49 | Автор: admin

Edge-ик в тумане и другие приключения периферийных вычислений


Добрый день.


Меня зовут Игорь Хапов. Я руководитель разработки в Научно-техническом центре IBM. И сегодня я хотел бы вам помочь окунуться в мир периферийных вычислений, или edge computing, как его ещё называют. Я расскажу о том, что же такое edge computing и как он может повлиять на наш с вами мир. Также хотелось бы пояснить различия между edge computing и fog computing, какие преимущества даёт этот подход. В статье я также описал референсную архитектуру приложения на edge computing. И под конец немного расскажу о проекте с открытым исходным кодом Open Horizon, который совсем недавно присоединился к Linux Foundation.


edge computing align=center


Что же такое edge computing


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


Что же такое edge устройство? Многие считают, что edge computing это когда приложение работает на Raspberry Pi или других микрокомпьютерах. На самом деле edge computing может быть и на мобильных устройствах, персональных ноутбуках, умных камерах и других устройствах, на которых можно запустить приложение по обработке данных.


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


Edge computing и IoT


Довольно часто звучит вопрос "Чем же отличается edge computing от IoT". IoT можно назвать дедушкой edge computing. IoT это множество устройств, связанных между собой, и способных передавать информацию друг другу. А edge computing это скорее подход к организации вычислений и управлению edge устройствами. Как вы отлично понимаете, любое приложение необходимо обновлять, мониторить и осуществлять прочие обслуживающие функции. В результате edge computing подразумевает использование определенных подходов и фреймворков, о которых я расскажу чуть позже.


edge computing vs fog computing


Когда я однажды рассказал коллеге про edge computing, он ответил так это же fog computing. Давайте попробуем разобраться, в чём же разница. С одной стороны, edge computing и fog computing часто используются как синонимы, однако fog computing, или "туманные вычисления", все-таки немного отличаются.


И edge computing, и fog computing это вычисления, которые находятся в непосредственной близости к получаемым данным. Различие заключается в том, что при туманных вычислениях обработка осуществляется на устройствах, которые постоянно подключены к сети. В edge computing вычисления осуществляются как на сенсорах, умных устройствах без передачи на уровень gateway, так и на уровне gateway и на микрокластерах.


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


Преимущества и недостатки edge computing


При выборе технологий для своего проекта я в первую очередь основываюсь на двух критериях "Что я от этого получу?" и "Какие проблемы я от этого получу?".
Начнём с преимуществ:


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


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


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


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



Хотя, конечно, проектируя систему с edge computing, не стоит забывать, что как и любую другую технологию её стоит использовать в зависимости от требований к системе, которую вам необходимо реализовать.


Среди недостатков edge computing можно выделить следующие:


  • Крайне тяжело обеспечить гарантию отказоусточивости для всех edge-устройств.


  • Устройства могут иметь различные платформы и версии OS, для чего, вероятно, потребуется создавать несколько версий сервисов (например, для x86 и ARM).


  • Для управления большим количеством устройств потребуется платформа, решающая технические задачи edge computing.



С одной стороны, последний пункт является наиболее критичным, но, к счастью, консорциум Linux Foundation Edge (LF EDGE) включает в себя всё больше и больше проектов с открытым исходным кодом, а их зрелость стремительно растет.


Принципы компании IBM при создании платформы edge computing


Компания IBM, являясь одним из лидеров в области гибридных облаков, использует определённые принципы при разработке решений для edge computing:


  • Развивать инновации (Drive Innovation)
  • Обеспечить безопасность данных (Secure data)
  • Управлять в масштабе (Manage at scale)
  • Открытость исходного кода (Open Source)

IBM применяет эти принципы при декомпозиции задачи построения фреймворка edge computing.


edge computing align=center


Как вы можете видеть, всё решение разбито на 4 сегмента использования:


  • Edge-устройства
  • Edge-сервера или шлюзы
  • Edge-облако
  • Гибридное облако в частном или публичном дата центре

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


Референсная архитектура edge computing


edge computing align=center


Edge devices


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


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

Hybrid multicloud


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


Edge server and Edge micro data center


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


Edge framework


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


Именно наличие данного фреймворка раскрывает преимущества edge computing перед разнородными разнесёнными вычислениями.


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


Open Horizon и IBM Edge Application Manager


Именно для решения задач в области edge computing IBM разработала и выложила в open-source проект Open Horizon. Если вы помните, один из принципов, которые IBM заложила в edge computing все компоненты должны быть основаны на open source технологиях. В мае 2020 года проект Open Horizon вошел в Linux Foundation Edge Международный фонд open-source технологий для созданий edge-решений. Также Open Horizon является ядром нового продукта от RedHat и IBM IBM Edge Application Manager, решения для управления приложениями на всех устройствах edge computing: от Raspberry Pi до промежуточных кластеров обработки данных.


edge computing align=center


Несмотря на то, что проект Open Horizon вошел в консорциум только в мае, он уже достаточно давно развивается как open-source проект. И мы в Научно-техническом центре IBM не только успели его попробовать, но и довести свое решение до промышленного использования. О том, как мы разрабатывали проект с использованием edge computing, и что у нас получилось будет отдельная статья, которая выйдет в ближайшие несколько недель.


Сценарии использования


edge computing align=center


С одной стороны, edge computing framework это специализированное решение для определённого круга задач, но оно нашло применение во многих индустриях.
В своё время, когда я изучал работу московских камер Стрелка, я понял, что это в чистом виде edge computing, с вычислениями "прямо на столбе" и промежуточной обработкой данных в раздельных вычислительных кластерах у различных ведомств.
Сценарии нашлись в финансовом секторе, в продажах при самообслуживании, в медицине и секторе страхования, торговле и конечно при производстве. Именно в создании решения для автоматизации и оценки качества произведённого оборудования, основанного на edge computing, мне с коллегами из Научно-технического центра IBM и посчастливилось принять участие. И на своем опыте попробовать, как создаются решения edge computing.


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


Ссылки


Подробнее..

Из песочницы Turing Pi кластерная плата для self-hosted приложений и сервисов

16.10.2020 18:23:47 | Автор: admin
image

Turing Pi это решение для self-hosted приложений построенное по принципу rack стоек в дата центре, только на компактной материнской плате. Решение ориентировано на построение локальной инфраструктуры для локальной разработки и хостинга приложений и сервисов. Вообщем это как AWS EC2 только для edge.

Мы небольшая команда разработчиков решили создать решение для построения bare-metal кластеров в edge и назвали проект Turing Pi. Продукт начался на коленке, однако сейчас для проверок своих концепций его заказали отделы разработок в Red Hat, Rancher (SUSE), Toyota Connected, Sony, Electrolux, Facebook, и набирается аудитория разработчиков под 10К.

Но все началось с открытия.

Открытие продукта


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

В течении последнего десятилетия я наблюдал как набирает обороты любительское движение homelab (ресурс subreddit), self-hosted (ресурсы subreddit и awesome-selfhosted), одноплатные компьютеры, как растет интерес к запуску контейнеров на одноплатных компьютерах типа Raspberry Pi, растет движение собирающее кластеры из одноплатных компьютеров. Постепенно туда тянется и идея Kubernetes. Уже появилась его легкая версия k3s ориентированная на Edge/IoT. Большая сеть ресторанов быстрого питания Chick-fil-A одни из первых в мире разместили кластеры Kubernetes на своих кухнях kubectl make me a sandwich.

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

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

Строительные блоки (Building Blocks)


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

Mini ITX плата объединяет несколько вычислительных модулей с помощью сети на плате, дает периферийные интерфейсы и контроль над модулями
Вычислительный модуль (Compute Module)

Плата в SO-DIMM форм-факторе содержащая процессор и оперативную память, опционально флеш-память для хранения операционной системы
image
Одна из проектируемых конфигураций версии Turing V2
image
Комбинируя кластерную плату и вычислительные модули легко создать инфраструктуру к примеру на 20+ процессоров (примеры ниже), бесшумную и с низким энергопотреблением. Сама кластерная плата увеличивает эффективность используемого объема. Примеры кластеров для сравнения
SBC based*
image
24 CPUs
Автор Afkham Azeez
Turing Pi based
image
21 CPUs
Автор th3st0rmtr00p3r
* SBC Single Board Computer

Со-основателя Rancher Labs и автора k3s такой подход не оставил равнодушным

image

Далее подробнее про строительные блоки.

Вычислительный Модуль (Compute Module)


Для проверки концепции мы выбрали Raspberry Pi Compute Module это идеальная конфигурация для старта. Коммьюнити RPi активно, нет проблем с софтом, сам модуль в формате SO-DIMM (6 x 3 см), доступен по цене, содержит на борту 4-core CPU, 1 GB RAM и опционально флеш-память 8, 16 или 32 GB для ОС и других системных нужд. Подобный форм-фактор часто используют в индустриальных IoT решениях.

Raspberry Pi 1/3/3+ Compute Module

image

Но у модели CM3 есть и серьезные ограничения max. 1 GB RAM и Ethernet через USB HUB с максимальной скоростью до 100 Mbps. Поэтому вторая версия Turing будет поддерживать Raspberry Pi 4 и до 8 GB оперативной памяти на модуль. Ниже пример Nvidia Jetson модулей для Accelerated Computing задач. Возможно, будет их поддержка во второй версии, если мы решим некоторые технические задачи, тогда можно миксовать модули.

Nvidia Jetson Compute Modules

image

В модулях кроется самая главная возможность, которая на первый взгляд не очевидна. Возможность создания других модулей в подобном форм-факторе с разным набором CPU, RAM и eMMC, под разные типы задач от general-computing до machine learning интенсивных вычислений. Это очень похоже на инстансы AWS EC2, но только для edge. При этом кластерная плата остается неизменной или с минорными изменениями.

Кластерная плата (Clusterboard)


Еще ее можно назвать материнской платой или базовой платой, достаточно новое направление и производителей подобных решений сегодня не много и все еще довольно на начальном уровне, среди них Pine64, MiniNodes, Clover Pi, Bitscope Blade, PicoCluster (SBC кластеры). Кластерная плата объединяет модули сетью, обеспечивает питанием и дает шину управления кластером (Cluster Management Bus), по крайней мере мы эту шину решили добавить и она вроде прижилась.
Front
image
Back
image
Backplane Bandwidth 12 Gbps SD слоты для модулей без eMMC, например, можно держать пару модулей с SD для быстрого доступа к данным ноды
В основе кластерной платы лежит микросхема switch для обеспечения сетевого соединения модулей и выхода во внешнюю сеть. В текущей версии мы используем unmanaged switch т.к. не было времени проводить полноценный R&D, но ко второй версии мы выбрали неплохой managed switch. Возможна конфигурация в режиме мастер нода как роутер для раздачи сети на плату, это если требуется более высокий уровень безопасности и изоляции воркеров от доступа извне, в таком случае на мастер ноде необходимо также держать DHCP сервер.

Применение


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

Чтобы начать мы рекомендуем серию от замечательного Джеффа Гирлинга, который прочитал о нас на Y Combinator, он автор бестселлера Ansible for DevOps. Он так вдохновился что сделал 6-ти серийный обзор начиная от идеи кластеризации в целом до практических примеров работы с платой, изучения Kubernetes и какой софт можно устанавливать

Серия про установку k3s на кластер


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

image

Что дальше?


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

И скорее всего там будет реально long read.
Подробнее..

Мини ITX кластер Turing Pi 2 c 32 GB RAM

21.10.2020 12:13:27 | Автор: admin
image

Приветствую сообщество Хабра! Недавно я писал про нашу кластерную плату первой версии [V1]. И сегодня хочу рассказать как мы работали над версией Turing V2 с 32 GB оперативной памяти.

Мы увлекаемся мини серверами которые можно использовать как для локальной разработки так и для хостинга локально. В отличии от настольных компьютеров или лэптопов наши сервера созданы для работы 24/7 их быстро можно соединять в федерацию, например было 4 процессора в кластере, а через 5 минут стало 16 процессоров (без дополнительного сетевого оборудования) и все это в компактном форм-факторе, безшумно и энергоэффективно.

В основе архитектуры наших серверов кластерный принцип построения т.е. мы делаем кластерные платы которые с помощью ethernet сети на плате соединяют несколько вычислительных модулей (процессоров). Для упрощения мы пока не делаем свои вычислительные модули, а используем Raspberry Pi Compute Modules и мы очень надеялись на новый модуль CM4. Но, все пошло вразрез планам с их новым форм-фактором и думаю многие разочарованы.

Под катом как мы шли от V1 к V2 и как нам пришлось выкручиваться с новым форм-фактором Raspberry Pi CM4.

Итак, после создания кластера на 7 нод, вопросы что дальше? Как увеличить ценность продукта? 8, 10 или 16 нод? Какие производители модулей? Думая над продуктом в комплексе мы поняли что основное здесь не количество нод или кто производитель, а сама суть кластеров как строительного блока. Надо искать минимальный строительный блок, которые

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

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

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

Мы начали с определения количества нод.

Количество нод


Простыми логическими суждениями мы поняли что 4 ноды лучший вариант для минимального кластерного блока. 1 нода это не кластер, 2 ноды мало (1 мастер 1 воркер, нет возможности масштабирования в рамках блока, особенно для гетерогенных вариантов), 3 ноды выглядит ок, но не кратно степеням 2 и лимитировано масштабирование в рамках блока, 6 нод выходит по цене почти как 7 нод (из нашего опыта это уже большая себестоимость), 8 много, не умещается в mini ITX форм факторе и еще более дорогое решение для PoC.

Четыре ноды на блок считаем золотой серединой:

  • меньше материалов на кластерную плату, следовательно дешевле производство
  • кратно 4, всего 4 блока дают 16 физических процессоров
  • стабильная схема 1 мастер и 3 воркера
  • больше гетерогенных вариаций, general-compute + accelerated-compute модули
  • мини ITX форм-фактор с SSD дисками и платами расширения

Вычислительные модули


Вторая версия базируется на CM4 мы думали что ее выпустят в SODIMM форм-факторе. Но
Мы приняли решение сделать дочернюю плату SODIMM и собирать CM4 сразу в модули чтобы пользователи не думали о CM4.

image
Turing Pi Compute Module с поддержкой Raspberry Pi CM4

Вообще в поисках модулей был открыт целый рынок вычислительных модулей от небольших модулей на 128 MB RAM до 8 GB RAM. Впереди модули на 16 GB RAM и более. Для edge хостинга приложений базирующихся на cloud native технологиях 1 GB RAM уже мало, а недавнее появление модулей на 2, 4 и даже 8 GB RAM дает хорошее пространство для роста. Даже рассматривали и варианты с FPGA модулями для приложений машинного обучения, но их поддержка отложена потому что не развита софтверная экосистема. Во время изучения рынка модулей пришли к идеи создания универсального интерфейса для модулей и в V2 начинаем унификацию интерфейса вычислительных модулей. Это позволит владельцам версии V2 подключать модули других производителей и смешивать их под конкретные задачи.

V2 поддерживает всю линейку Raspberry Pi 4 Compute Module (CM4), включая Lite версии и модули на 8 GB RAM

image

Периферия


После определения вендора модулей и количества нод мы подошли к PCI шине, на которой находится периферия. PCI шина является стандартом для периферийных устройств и она есть почти во всех вычислительных модулях. У нас несколько нод и в идеале чтобы каждая нода могла шерить PCI устройства в режиме конкурентных запросов. Например, если это диск подключенный к шине, то он доступен всем нодам. Мы начали искать PCI свичи с возможностью поддержки мультихост и обнаружили что ни один из них не подходит под наши требования. Все эти решения в основном ограничивались 1 хостом или мульти хостами, но без режима конкурентных запросов к endpoints. Вторая проблема высокая стоимость от $50 и более за чип. В V2 мы решили отложить эксперименты с PCI свичами (мы вернемся к ним позже по мере развития) и пошли по пути назначения роли для каждой ноды: первые две ноды exposed mini PCI express port per node, третья нода exposed 2-ports 6 Gbps SATA контроллер. Для получения доступа к дискам с других нод можно использовать сетевую файловую систему в рамках кластера. Why not?

Sneakpeek


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

imageimageimage

В результате мы пришли к кластерному блоку с 4-мя нодами 260-pin, 2-мя mini PCIe (Gen 2) портами, 2-мя SATA (Gen 3) портами. На плате установлен Layer-2 Managed Switch с поддержкой VLAN. С первой ноды выведен mini PCIe порт, в который можно установить сетевую карту и получить еще один Ethernet порт или 5G модем и сделать из первой ноды роутер для сети на кластере и Ethernet портов.

image

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

Применение


Edge infrastructure for self-hosted applications & services


Мы проектировали V2 с целью использовать ее как минимальный строительный блок для consumer/commercial-grade edge инфраструктуры. С V2 дешево начать проверку концепции и масштабироваться по мере роста, постепенно перенося приложения, которые экономически и практически целесообразнее хостить в edge. Кластерные блоки можно соединять вместе, строя кластеры большего размера. Это можно делать постепенно без особых рисков для устоявшихся
процессов. Уже сегодня имеется огромное количество приложений для бизнеса, которые можно хостить локально.

ARM Workstation


С оперативной памятью до 32 GB RAM на кластер, первую ноду можно использовать для desktop версии OS (например Ubuntu Desktop 20.04 LTS) и оставшиеся 3 ноды для задач компиляции, тестирования и отладки, разработки cloud native решений для ARM кластеров. Как узел для CI/CD на ARM периферийную инфраструктуру в проде.

Turing V2 кластер с CM4 модулями архитектурно почти идентичен (разница в минорных версиях ARMv8) кластеру на базе инстансов AWS Graviton. В процессоре CM4 модулей используется архитектура ARMv8 вы можете собирать образы и приложения для AWS инстансов Graviton 1 и 2, которые как известно намного дешевле инстансов x86.
Подробнее..

Azure Custom Vision без Azure, или где у них маска. Как мы распознавали маску на лице (и других частях тела)

26.01.2021 14:17:08 | Автор: admin

Среди набора примеров для Azure на GitHub был найден один очень интересный: распознавание образов на Raspberry Pi, в офлайне. Авторами предлагается подготовить модель машинного обучения в одном из облачных сервисов Azure, затем перенести ее на компьютер, у которого большую часть времени нет подключения к Интернет, после чего распознавание образов будет работать автономно. Разработчики подготовили проект для двух платформ: ARM32 (собственно Raspberry Pi) и AMD64 (но без поддержки веб-камеры).


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


Все сложно...


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


В Azure Computer Vision, например, даже не нужно обучать модель перед ее использованием: есть набор облачных API, уже готовый к применению. Для более сложных задач есть Azure Custom Vision, где мы сначала обучаем модель, потом ей пользуемся. Причем знание специфической математики практически не требуется, все делается прямо в браузере мышкой. Знание пары терминов из машинного обучения все-таки понадобится, чтобы понять, насколько качественно работает модель.


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


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

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


  • Для всего придется разрабатывать свой код и настраивать все вручную;
  • Непонятно, как впоследствии масштабировать решение. Что, если таких "турникетов" нужно 100 штук?

Что делать?


Итак, есть вариант "только облако", есть "совсем без облака". Оба варианта крайности. Было бы удобно взять лучшее от облачных сервисов, но "спустить их на землю". Например, однократно обучить модель на Azure Custom Vision, не углубляясь в вопросы математики, а затем использовать эту модель автономно, без подключения к Интернет.


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


  • Будем передавать в облако только необходимую телеметрию;
  • Для обучения модели практически неограниченные объемы хранилища и вычислительной мощности;
  • Быстрый цикл управления, т.к. все решения принимаются локально, а не в облаке;

Azure IoT Edge и с чем его едят


Подробно мы описывали IoT Edge в этой статье. Вкратце, IoT Edge включает среду выполнения демон Linux, "внутри" которого выполняются модули, которые, в свою очередь, являются Docker-совместимыми контейнерами. Поддержка устройств IoT Edge включена в Azure IoT Hub. Среда выполнения IoT Edge единожды устанавливается на устройство, а затем набор модулей конфигурируется через облако, с портала Azure, после чего компьютер с IoT Edge может работать автономно, без подключения.


"Родной" платформой для IoT Edge по архитектурным причинам является Linux, хотя с 2019 года IoT Edge доступен и для Windows 10 Enterprise LTSC ОС для устройств специального назначения.


Модули IoT Edge могут содержать произвольный код, или в модули можно "обернуть" следующие службы Azure:



В нашем случае интерес представляет как раз Custom Vision. В этом сервисе мы подготовим модель распознавания маски и "обернем" ее в модуль.


В IoT Edge заложен механизм обмена сообщениями с между модулями и между модулями и облаком. Сами сообщения передаются в подобии текстового формата, поэтому такой механизм плохо подходит для обмена сырыми двоичными данными (картинками), поэтому в исходном примере от Microsoft для обмена картинками с камеры между модулями используется HTTP, т.е. один из обменивающихся данными модулей является web-сервером, а другой клиентом.


Пример распознавания изображений от Microsoft


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



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


Откуда на этом устройстве возьмется среда IoT Edge? Ее необходимо установить вручную, и после того, как она установит подключение к IoT Hub, ей можно (и нужно) управлять уже с IoT Hub. Под "управлением" я также подразумеваю установку модулей.


Модули устанавливаются по команде с IoT Hub. Причем на IoT Edge "спускается" не сам модуль, а как бы ссылка на его скачивание. Механизм устроен так, что предварительно модули нужно выложить в Container Registry (это специальный репозиторий для хранения модулей).


Модули после установки взаимодействуют, как показано на следующей схеме, взятой из того же примера:



  • Camera: модуль захвата видео с камеры. Видео "нарезается" на картинки (не кадры! Из десятка кадров в обработку может уйти только один) и по HTTP передается в следующий модуль;
  • AI: модуль, содержащий обученную модель машинного обучения. Модель работает с отдельными изображениями, а не с видеопотоком, именно поэтому видео "нарезается" на картинки. Модель машинного обучения предварительно должна быть подготовлена в сервисе Custom Vision;
  • Display: модуль, отображающий результаты распознавания. Конкретно в рассматриваемом примере предлагается отличить банан от яблока, соответственно, на экране будет либо картинка яблока, либо банана (либо ничего).

Помимо всего прочего, телеметрия отсылается непосредственно в IoT Hub.


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


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


Есть еще одна проблема. У компьютера на базе AMD64 нет "экранчика" SenseHat, как в Raspberry Pi, поэтому так элегантно, как на SenseHat, результат распознавания уже не отобразить, и придется придумывать что-то свое.


Обучение модели (Custom Vision)


Заходим на Custom Vision (понадобится подписка Azure) и нажимаем New Project.


  • Name вводим произвольное имя;
  • Description произвольное описание;
  • Resource нажимаем Create new и создаем новый ресурс типа Cognitive Services;
  • Classification Types выбираем Multilabel, так как мы будем определять не только наличие/отсутствие маски, но и где именно она надета на лице или на теле (гуглим "бикини из масок")
  • Domains General (compact).

После создания проекта загружаем предварительно подготовленные картинки следующих типов:


  • Люди в маске на лице, размечаем тегом MaskOnFace;
  • Люди в маске не на лице ("бикини из масок"), размечаем тегом MaskNotOnFace на волне маскобикини-хайпа используем и такой случай, чтобы наша модель машинного обучения не пропускала хитрых фитоняш в маскобикини через турникет (наверное, стоящий на входе в фитнес-клуб, где они качаются);
  • Люди без масок, изображения масок без людей, не размечаем тегами (Negative).

Картинки можно найти в интернете или пофоткать всех знакомых.


Нажимаем кнопку Train, далее Advanced training и ждем, пока модель обучается. После чего на вкладке Performace можно посмотреть параметры качества функционирования модели.


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


Значение Probability Threshold это вероятность назначенного тега, в зависимости от которой рассчитываются параметры качества функционирования модели. Значение Probability Threshold = 90% означает, что правильными предсказаниями будут считаться теги, вероятность которых оказалась выше 90%. Думаю, эта фраза требует пояснения. Вообще, в машинном обучении ответы обычно не дискретные (да/нет), то есть модель не может "ответить" на вопрос "на лице ли у человека маска" просто "да" или "нет". Грубо говоря, будет что-то типа "маска на лице с вероятностью 89%". Проблема в том, что для расчета параметров качества модели нужны как раз те самые дискретные "да" или "нет". И вот если параметр этот самый Probability Threshold установлен 90%, то ответ "маска на лице с вероятностью 89%" превратится в дискретное "нет", а ответ "маска на лице с вероятностью 91%" превратится в дискретное "да".


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


  • Параметр Recall (полнота) означает способность алгоритма обнаруживать заданный класс вообще;
  • Параметр Precision (точность) способность отличать этот класс от других классов.

Чем больше каждое из значений тем лучше.


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


Модель следует опубликовать (Publish), а затем экспортировать (Export Dockerfile Linux). Полученный файл далее будет использоваться в модуле IoT Edge.


Подготовка наземной платформы


Из-за архитектурных особенностей примера нам понадобится платформа (а именно процессор) с поддержкой AVX инструкций (узнать, поддерживает ли платформа AVX инструкции, можно, выполнив команду grep avx /proc/cpuinfo) это потребуется для корректной работы библиотеки tensorflow. Если вы хотите использовать платформу без поддержки AVX, потребуется пересобрать библиотеку, что выходит за рамки данной статьи. Упростим себе жизнь и возьмем платформу с соответствующей поддержкой. Мы использовали Intel NUC на базе Core i5.


В качестве ОС будем использовать Ubuntu 20.04 LTS. Сложность заключается в том, что инструкций для установки IoT Edge для данной версии нет (слишком свежая по мнению Microsoft?), поэтому о процессе настройки расскажем достаточно подробно.


Вначале установите саму ОС с графическим окружением, затем откройте командную строку для установки Edge. По умолчанию все команды выполняются в домашнем каталоге (~).


Установим необходимые утилиты:


sudo apt-get updatesudo apt-get install wget nano

Устанавливаем конфигурацию репозитория:


wget https://packages.microsoft.com/config/ubuntu/20.04/prod.listmv prod.list microsoft-prod.list

Копируем полученный файл в директорию sources.list.d, чтобы ОС "видела" репозитории Microsoft:


sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/

Загружаем и устанавливаем публичный ключ Microsoft GPG:


wget https://packages.microsoft.com/keys/microsoft.asccat microsoft.asc | gpg --dearmor > microsoft.gpgsudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/

Устанавливаем ПО для контейнеризации (обратим внимание на первую команду ее обязательно нужно выполнить, так как мы добавили новые репозитории и apt еще "не в курсе"):


sudo apt-get updatesudo apt-get install moby-engine

Устанавливаем демон IoT Edge:


sudo apt-get install iotedge

И с удивлением обнаруживаем, что такого пакета в добавленных выше репозиториях нет (это касается только нашей Ubuntu 20.04 на момент публикации статьи), поэтому вместо следования документации пойдем своим путем. Можем добавить репозитории от более ранней версии Ubuntu (18.04 что, строго говоря, не очень хорошая идея) или установить пакеты вручную (правда, опять же, от более ранней версии). Пойдем вторым путем и установим нужные пакеты с GitHub. Ищем Latest release и устанавливаем его при помощи dpkg. Нам также понадобится libssl определенной версии:


wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5_amd64.debsudo dpkg -i libssl1.0.0_1.0.2n-1ubuntu5_amd64.debwget https://github.com/Azure/azure-iotedge/releases/download/1.0.10.4/libiothsm-std_1.0.10.4-1_ubuntu16.04_amd64.debsudo dpkg -i libiothsm-std_1.0.10.4-1_ubuntu16.04_amd64.debwget https://github.com/Azure/azure-iotedge/releases/download/1.0.10.4/iotedge_1.0.10.4-1_ubuntu16.04_amd64.debsudo dpkg -i iotedge_1.0.10.4-1_ubuntu16.04_amd64.deb

Среда выполнения IoT Edge установлена, но она пока не подключена к Azure. Чтобы это сделать, наберем команду:


sudo nano /etc/iotedge/config.yaml

И в открывшемся файле увидим, что для подключения к Azure необходимо указать значение device_connection_string в разделе provisioning. Для того, чтобы получить это значение, зарегистрируем наш экземпляр IoT Edge в Azure.


Настройки в Azure


Все экземпляры IoT Edge подключаются к IoT Hub, который мы сейчас и создадим на портале Azure. Если у вас нет подписки создайте пробную.


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



В результате ваше устройство IoT Edge будет подключено к созданному IoT Hub, а также будет подготовлен репозиторий контейнеров.


Разработка


Внутри IoT Edge нашего решения будут исполняться сразу три модуля:


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

Схема коммуникаций между модулями показана ниже:



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


Важно! Последующие действия нужно выполнять на компьютере с Windows 10, а не на устройстве с IoT Edge.

  • Загрузите и установите Visual Studio Code. Разработку также можно вести и в Visual Studio;
  • Установите расширение Azure IoT Edge Extension. После установки на открывшейся странице нажмите Select IoT Hub, пройдите аутентификацию и выберите созданный ранее IoT Hub;
  • Установите расширение Azure IoT Tools;
  • Установите Python 3.8.3. При установке отметьте опцию Add Python to PATH подробнее здесь в секции Task 4;
  • Перейдите в Панель управления, затем Программы и компоненты, и убедитесь, что включена вся группа Hyper-V и Контейнеры. Если нет отметьте их, нажмите OK и при необходимости перезагрузите компьютер;
  • Установите Docker for Windows подробнее там же в секции Task 5;
  • Установите клиент Git для Windows последней доступной версии.

Важно! В случае проблем с виртуализацией Docker выполните команду в командной строке администратора: bcdedit /set {current} hypervisorlaunchtype Auto и перезагрузите компьютер.

Важно! Включение Hyper-V сделает неработоспособной виртуализацию VirtualBox. Для того, чтобы быстро восстановить работоспособность VirtualBox, можно выполнить команду в командной строке администратора: bcdedit /set {current} hypervisorlaunchtype off, но при этом "сломается" Hyper-V и Docker.

Получите исходный код примера, выполнив команду:


git clone https://github.com/Azure-Samples/Custom-vision-service-iot-edge-raspberry-pi.git

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


git checkout 6b3540f9b31121321f9e75d8df0ed86397c9324f

В Visual Studio Code откройте папку с примером (File Open Folder) и ознакомьтесь с его структурой. Вы увидите три модуля, о которых мы говорили выше. Если при открытии среда предложит установить дополнительные расширения, сделайте это.


Модификация примера


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


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


Итак, поехали.


.env


Необходимо установить параметры реестра (репозитория) контейнеров, взятые с портала Azure:


  • CONTAINER_REGISTRY_ADDRESS="имя_реестра_контейнеров.azurecr.io"
  • CONTAINER_REGISTRY_USERNAME="имя_пользователя"
  • CONTAINER_REGISTRY_PASSWORD="пароль"

deployment.template.json


  • modules camera-capture env RESIZE_WIDTH установить 640, RESIZE_HEIGHT установить 480
  • modules camera-capture settings image установить ${MODULES.CameraCapture.amd64}
  • modules sensehat-display env THRESHOLD value установить 0.9
  • modules sensehat-display settings image установить ${MODULES.SenseHatDisplay.amd64}, createOptions удалить содержимое HostConfig и установить "PortBindings": { "8000/tcp": [ { "HostPort": "8000" } ] }
  • modules image settings image установить ${MODULES.ImageClassifierService.amd64}

deployment.template_AMD64


Данный файл следует удалить с файловой системы.


СameraCapture\amd64.Dockerfile


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


CameraCapture.py


Поскольку мы перенесли решение на более мощную платформу (по сравнению с Raspberry Pi), уменьшим временной интервал, за который накапливаются кадры для анализа. Для этого ищем строку time.sleep(1.0) и заменяем 1.0 на 0.1.


ImageClassifierService\amd64.Dockerfile


Здесь потребуется подобрать версии библиотек для AMD64. Модифицированный файл можно найти в приложенном архиве.


labels.txt


Данный файл содержит метки, которые получает каждое изображение. Эти метки должны соответствовать меткам из сервиса Custom Vision, поэтому содержимое файла должно быть следующим:


MaskNotOnFaceMaskOnFace

model.pb


Двоичный файл модели из Custom Vision следует заменить существующий на подготовленный нами ранее.


SenseHatDisplay\amd64.Dockerfile


Такого файла в примере нет, нам нужно его создать.


SenseHatDisplay модуль отображения результата распознавания. Но на нашей платформе AMD64 никакого шилда SenseHat нет, поэтому из данного модуля весь код, взаимодействующий, собственно, с SenseHat, уберем, и будем реализовывать простейший веб-сервер на Python, который сможет прямо в браузере показывать результат распознавания.


Файл можно найти в приложенном архиве.


SenseHatDisplay\module.json


В раздел platform нужно внести изменения, а именно добавить amd64:


"amd64": "./amd64.Dockerfile",

SenseHatDisplay\app (директория)


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


  • custom.js
  • index.htm
  • jquery.js
  • style.css
  • DisplayManager.py
  • MessageParser.py

Веб-сервер достаточно "хитрый". Он отдает клиенту страницу, в которой выполняются сразу две важных вещи:


  • Отображается видеопоток от модуля захвата изображения с камеры: его можно увидеть прямо с компьютера с IoT Edge, зайдя браузером на адрес http://127.0.0.1:5012;
  • Отображается результат распознавания от модуля классификатора по адресу http://127.0.0.1:8000/status.

Подчеркну, что фактически получаются два веб-сервера один с видеопотоком, второй с результатом распознавания. Причем страницу, с которой идет обращение к этим серверам, отдает второй сервер. Сама эта страница доступна по адресу http://127.0.0.1:8000.


Сборка


Для сборки потребуется подключение к Интернет.


  • В VS Code выберите View Command Pallette Azure IoT Edge: Set Default Target Platform for IoT Edge Solution и в появившемся списке выберите amd64;
  • Там же выберите команду Azure IoT Edge: Build and Push IoT Edge Solution. Все должно собраться с первого раза и загрузиться в реестр контейнеров, но этого еще недостаточно для попадания на устройство IoT Edge;
  • Разверните решение на IoT Edge, кликнув правой кнопкой на файл config/deployment.json и выбрав Create Deployment for Single device, затем выберите ваше устройство, указав его имя;
  • На развертывание потребуется некоторое время (не забудьте подключить к платформе веб-камеру!). Можете кликнуть на ваше устройство правой кнопкой мыши в расширении IoT Edge Extension и выбрать Start Monitoring D2C Message, тем самым наблюдать телеметрию.

Момент истины


На нашем IoT Edge устройстве логинимся в UI и прямо браузером заходим на веб-страницу по адресу http://localhost:8000, где наблюдаем веб-страницу, как на картинке. Надеваем маску и смотрим в камеру, система определяет, что маска на нас.



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


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


Если что-то пошло не так...


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


  • Получить список модулей и их статус: iotedge list. В примере на рисунке видно выполняющиеся модули и их аптайм (более недели);
  • Журнал модуля: iotedge logs имя_модуля. Позволяет понять, что конкретно происходит с модулем.

Обновление модулей


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


Что дальше?


Дальше можно отключить компьютер с IoT Edge от Интернета и убедиться, что все работает так же хорошо.


При всем перечисленном мы, конечно, не рассмотрели всех возможностей IoT Edge, например, мы никак не обработали телеметрию на облаке, а могли бы вести, например, журнал "проходов через турникет" и считать какую-нибудь статистику и даже сохранять ее локально при помощи SQL Edge, а затем синхронизировать с облаком.


Мы также совсем не рассмотрели возможности управления устройством IoT Edge с портала Azure, так как это было незначимо для темы данной статьи.


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


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


Если у вас еще остались вопросы по облачным технологиям Microsoft и Интернету вещей обращайтесь к нам в Кварта Технологии.


Файлы к статье можно скачать по ссылке.


Автор статьи Сергей Антонович, ведущий инженер Кварта Технологии. Связаться с ним можно по адресу sergant (at) quarta.ru.

Подробнее..

OpenShift 4.5, лучшие практики edge-разработки и горы полезных книг и ссылок

10.08.2020 10:05:17 | Автор: admin


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

Начни новое:



Качай:


  • Скачай и установи OpenShift Container Platform 4

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

Почитать на досуге:



Пообщаться:


Подробнее..

Из песочницы Ликбез по браузерам для Windows в 2020

12.09.2020 14:11:18 | Автор: admin


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


Браузерные движки


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


Существующие движки отрисовки содержимого


  • Trident (так же известный как MSHTML) движок, ранее разрабатываемый Microsoft для браузера Internet Explorer;
  • EdgeHTML приемник Trident, ранее разрабатываемый Microsoft для браузера Legacy Edge (ранее просто Edge);
  • WebKit движок, разрабатываемый Apple для браузера Safari;
  • Blink приемник WebKit, разрабатываемый Google для браузера Chrome;
  • Gecko движок, разрабатываемый Mozilla для браузера Firefox;
  • Servo исследовательский проект Mozilla, некоторые технологии со временем перетекают в Gecko.

Существующие движки исполнения JavaScript


  • Chakra JScript движок JS, ранее разрабатываемый Microsoft для браузера Internet Explorer;
  • Chakra JavaScript приемник Chakra JScript, ранее разрабатываемый Microsoft для браузера Legacy Edge;
  • Nitro движок JS, разрабатываемый Apple для браузера Safari;
  • V8 движок JS, разрабатываемый Google для браузера Chrome;
  • SpiderMonkey движок JS, разрабатываемый Mozilla для браузера Firefox.

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


Браузеры


Chromium


Chromium это open-source ответвление браузера Chrome. Браузеры на основе Chromium составляют большую часть из всех используемых браузеров на планете Земля.
(картинка)
Обычно, браузеры на базе Chromium между собой отличаются только визуально, ведь у всех под капотом движки Blink и V8, хотя, какие-то компании пытаются привнести больше функционала в браузер, чем имеется.


ИМХО

Это в конечном итоге встанет разработчикам браузеров боком, потому что в любой момент главный разработчик Chromium Google может вставить палки в колёса разработчикам модификаций.


Всех браузеров на основе Chromium подсчитать одному человеку вряд ли под силу, поэтому приведу список только тех, что помню:


  • Chrome в представлении не нуждается, браузер от Google;
  • ChrEdge новый браузер от Microsoft со старым названием. Поговаривают, отличается большей производительностью от Chrome. С некоторых пор предустанавливается в систему;
  • Brave браузер с повышенной безопасностью настолько, что приватный режим использует Tor;
  • Яндекс.Браузер, Opera, Vivaldi, тысячи их.

Firefox


Firefox использует движки Gecko и SpiderMonkey для своей работы. Имеет небольшое количество базирующихся на Firefox браузеров, но самый известный Tor Browser. Является единственным рубежом до полного перехода интернета на браузеры на основе Chromium.


Internet Explorer


Это любимая всеми утилита для скачивания браузеров. Как и Chrome не нуждается в представлении. До 11 версии использовал движки Trident и Chakra JScript. В 11 версии, за исключением режима совместимости, стал использовать движки Trident и Chakra JavaScript. Этот браузер ещё долго будет использоваться для всякого рода систем видеонаблюдения, поскольку имеет, почему-то, популярный в узких кругах API для расширений. В Windows 8 и Windows 8.1 имел особую модификацию движка Trident на базе WinRT для Metro режима.


(Legacy) Edge


Браузер, начавший своё существование с кодовым названием Project Spartan, являлся новым браузером от Microsoft в 2015 году, использующим движки EdgeHTML и Chakra JavaScript. Конечной целью проекта была полная совместимость с сайтами, отлично работающими в Chrome. В итоге получилось нечто своеобразное, но, очевидно, не выжившее под давлением Google.


Safari


Safari? А нет его больше, этого вашего Safari, кончился.


Нецелевое использование браузеров


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


  • Программистов на JS нечем занять;
  • На JS+HTML новичкам проще программировать;
  • Кроссплатформенность;
  • Требуется возможность отображать веб-страницы.

Приведу примеры подобного использования:


Chromium


Нынешние браузеры настолько сложны, что одному человеку создать собственный браузер не под силу (либо это должен быть гений). Они по сложности сравнимы с операционными системами! А, постойте, вот и первый кандидат на нецелевое использование Chrome OS. Да, весь пользовательский интерфейс просто модифицированный Chromium.
Однако, помимо этого, в виде CEF (Chromium Embedded Framework), Chromium используется в:


  • Игровые платформы: Steam, Epic Games Store, Battle.Net и другие;
  • Игры: GTA V, все игры от Blizzard, DOTA 2, CS GO и множество других;
  • Редакторы кода: Atom, VS Code, Visual Studio Installer(???!);
  • Программы для общения: Skype, Viber, WhatsApp, Discord, Slack и множество других;
  • Другие программы: balenaEtcher, draw.io и великое множество других.

Internet Explorer


Почти любое Win32 приложение, умеющее отображать WEB-страницы и при этом в распакованном виде занимающее меньше 60 мегабайт использует внутри Internet Explorer. Кстати, это касается не только маленьких по размеру приложений, например, Visual Studio использует Internet Explorer для отображения WEB-страниц, когда это требуется в работе IDE. Ещё существуют HTA приложения древний предшественник CEF на базе Internet Explorer. И ведь до сих пор работает.


(Legacy) Edge


Новым приложениям новые движки! Любое UWP приложение, использующее внутри отображение WEB-страниц работает на базе Edge. Не то, чтобы Microsoft запрещали использовать что-то другое, но никто просто и не старался. Так же, пока что, в предварительных сборках Windows новая клавиатура с GIF панелью тоже использует Edge для рендеринга. В будущих версиях, полагаю, перейдут на ChrEdge.


Большая картинка с клавиатурой


Производительность


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


Prefetcher


В Windows есть такая штука Prefetcher. Она занимается подгрузкой программ в ОЗУ при старте ОС и на протяжении её работы. Штука эта достаточно умная, и она анализирует чаще всего запускаемые программы, чтобы в дальнейшем их подгружать.


Как это связано с браузерами? Идея в том, что это может смазать первый пользовательский опыт с другим браузером, например, пользуясь постоянно Chrome, имеете установленную версию Firefox. При запуске Firefox будет вести себя крайне медленно медленнее, чем ваш основной браузер. Всё потому что он запылился в глазах Prefetcher. В конечном итоге всё будет работать быстро, но первое впечатление после долгого неиспользования будет ужасным. Особенно это касается пользователей с HDD или малым количеством ОЗУ.


Области распределённой памяти


Да, звучит не очень. Но суть, в данном случае, простая если одна единица исполняемого кода требуется к исполнению больше одного раза, будь то exe или dll, то в память она загрузится лишь один раз. Поясню: если два различных приложения в ходе своей работы загрузят одну и ту же библиотеку, например, edgehtml.dll, то этот файл будет загружен в ОЗУ компьютера на самом деле только один раз, хотя, казалось бы, потребуется два или больше раз. Таким образом ОС экономит нам оперативную память.


Движки нормального человека


К чему это я? А вот дело в том, что в отличии от других браузеров, Internet Explorer и (Legacy) Edge предустановлены в систему, а их движки хранятся в папке System32. Это, в купе с API для разработки приложений, означает, что все приложения в системе, использующие данные движки будут загружать их в память только однажды. И этот принцип распространяется на все приложения.


В дополнение про UWP

У людей часто возникают проблемы с UWP приложениями, а точнее с их скоростью запуска. Всё дело в WinRT огромном наборе библиотек, при помощи которых UWP приложение взаимодействует с ОС. Если не использовать UWP приложения часто, то этот набор библиотек не будет прогружен в памяти полностью, и придётся ожидать окончания этого процесса перед использованием приложения. Но забавный факт используя два и более UWP приложения время их старта и общая производительность резко увеличиваются и часто даже превосходят Win32 программы. Исключением из этого является приложение "Фотографии" тут отдельная история, покрытая туманом.


Движки курильщика


А вот с приложениями (в том числе и браузерами) на основе Chromium это так не работает. Каждое приложение комплектует с собой собственную сборку библиотеки CEF, что, кроме раздувания размера приложения, не позволяет операционной системе иметь только одну копию dll в ОЗУ. Итого это сильно замедляет производительность при использовании множества подобных приложений. Помимо того, сам размер CEF довольно удручающий.


Microsoft Store


У многих возникает вопрос почему в Microsoft Store нет ни одного браузера(не считая нескольких кривых поделок на EdgeHTML)? Ответ, на самом деле, прост все браузеры, включая ChrEdge имеют собственную систему обновления, что прямо запрещено правилами Microsoft Store. В остальном никто никого не ограничивает.


Как удалить новый Microsoft Edge


Это не очень сложно. Для начала требуется найти папку с Microsoft Edge, она расположена по пути:
C:\Program Files (x86)\Microsoft\Edge\Application
Далее заходим в любую версию Edge и переходим в папку Installer. Полный путь может выглядеть следующим образом:
C:\Program Files (x86)\Microsoft\Edge\Application\83.0.478.58\Installer
Далее необходимо открыть командную строку от имени администратора в данной папке и выполнить следующую команду:
setup.exe --uninstall --system-level --verbose-logging --force-uninstall
Готово! Через несколько секунд этот браузер исчезнет из системы. Но при следующем же обновлении он появится снова, будте бдительны.


Заключение


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


P. S.


Администраторы Хабра, пожалуйста, почините HabraStorage в Legacy Edge! Совсем не дело.

Подробнее..
Категории: Браузеры , Chromium , Windows , Edge , Firefox

Перевод Шпион, выйди вон что делают браузеры после установки?

09.04.2021 12:18:12 | Автор: admin

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

В этой статье мы оценивали поведение пяти браузеров: Brave, Chrome, Firefox, Edge и Opera. Все исследования проводились на десктопе под управлением Windows 10 (версия 20H2, билд 19042.804) с подтвержденной учёткой Microsoft.

TLDR: меньше всего запросов делает Brave

В 2020 году профессор Дуглас Лейт из Тринити-колледжа (Дублинский университет) провел исследование браузеров и разделил их по тому, насколько успешно они хранят конфиденциальность пользователя. В первую группу вошел Brave как самый приватный браузер, во вторую Chrome, Firefox и Safari, в третью Edge и Yandex, которые защищали данные пользователя хуже всего. В нашем исследовании не участвовали Safari и Yandex, а в исследовании профессора Лейта Opera, но в целом мы получили похожие результаты.

У Brave сетевых запросов меньше всего, также меньше всего хостов, к которым он обращался. Все соединения были с бэкендами Brave. Множество запросов отправил Firefox, хотя большинство из них были связаны с безопасностью. Запросы отправлялись на узлы Mozilla. Edge был наиболее активен в отношении рекламы, он начинал собирать соответствующие данные раньше всего. Кроме того, браузер от Microsoft блестяще продемонстрировал, как много информации о пользователе можно получить через учетную запись Windows.

Chrome, как и Edge, пытается идентифицировать пользователя как можно раньше. Кроме того, он пересылает больше, чем другие браузеры, информации о том, что пользователь печатал или вставлял. Такую информацию, впрочем, передавали все браузеры, кроме Brave (Firefox ждёт, пока пользователь введёт хотя бы два символа, и только потом начинает передачу). Opera чаще всех отправляет запросы на сторонние хосты и проверяет каждый URL через sitecheck.opera.com.

Методология

Перед каждым анализом мы зачищали папки %appdata% и %localappdata% в Windows, т. е. информацию, относящуюся к профилю пользователя. Все браузеры были обновлены до последней версии. Чтобы отслеживать запросы, мы использовали программу Telerik Fiddler версии 5.0.20204.45441. Она мониторила запросы в течение 10 минут с момента первого запуска каждого браузера.

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

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

Подробные результаты по каждому браузеру

Brave версии 1.21.73

Запросы Brave распределились по следующим категориям.

  1. Запросы, связанные с защитой данных. Браузер скачал набор правил для блокировки рекламы, компонент HTTPS Everywhere, два списка отозванных сертификатов, список потенциально вредоносных URL (Safebrowsing) и набор правил, определяющих, какие плагины можно безопасно использовать.

  2. Запросы, связанные с функциональностью Brave. Например, набор кастомных HTTP-заголовков, а также набор правил для функции SpeedReader.

  3. Скачивание вариаций браузера. Это анонимные A/B-тесты, которые Brave проводит для улучшения своей работы.

  4. Скачивание Sponsored Images для региона пользователя это рекламные NTP. Пользовательские данные при этом никуда не передаются.

  5. Анонимная телеметрия и отчетность браузер отправляет дату установки, платформу, и несколько P3A-метрик.

После первоначальной настройки Brave также обновил некоторые компоненты.

Всего было сделано 70 запросов к 10 различным хостам, все хосты были поддоменами brave.com. Ни в одном запросе не содержалось персональных данных, только информация о версии браузера и некоторые данные об устройстве, на котором был установлен браузер (ОС, язык, объём памяти устройства). Когда пользователь набирал или редактировал символы в адресной строке, никаких запросов не было.

При повторном запуске было сделано 24 запроса, они касались обновлений компонентов браузера, заголовков, A/B-тестов и списков Safebrowsing.

Chrome версии 89.0.4389.72

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

Далее браузер обновил компоненты и скачал набор расширений например, ярлыки Google Docs, Google Drive и YouTube. Запросил списки Safebrowsing и загрузил список проверенных плагинов.

Перед тем, как загрузить новую вкладку, Chrome запросил промо-сообщения, метаданные для дудлов, виджет Google Apps и необходимый для отображения новой вкладки JSON-файл.

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

Что касается ввода/вставки символов каждый символ передавался по адресу google.com/complete/search. Вместе с символами передавалась и другая информация, в основном не имеющая отношения к конкретному пользователю данные об устройстве, положении курсора и т. д. Также с виджетом Google Apps при создании новой вкладки приехала кука размером 180 байт. Этот файл потом отправлялся на google.com в каждом запросе, связанном с вводом символов.

При повторном запуске новых запросов замечено не было. Как и в первый раз, Chrome попытался найти аккаунт пользователя через accounts.google.com/ListAccounts. Поскольку пользователь не был залогинен, браузеру не удалось ничего обнаружить. Затем Chrome запросил обновления для дудлов и прочее, что требовалось для создания новой вкладки. Запросы к accounts.google.com, www.google.com, apis.google.com и ogs.google.com включали в себя всё ту же куку, выставленную при первом запуске.

Firefox версии 86

Первыми запросами Firefox проверял, доступен ли интернет. 21 запрос был отправлен для проверки содержимого удаленного файла success.txt. В 7 запросах не было строки запроса, еще в 7 была строка запроса ?ipv4, в последних 7 строка запроса ?ipv6. Для обновления своих служб безопасности Firefox сделал намного больше запросов, чем остальные браузеры свыше двух с половиной тысяч. Одним из первых ответов был набор списков, связанных с защитой от трекинга и другими аспектами безопасности. Также несколько запросов касались вариаций для A/B-тестов их так или иначе проводят все браузеры.

Затем Firefox установил WebSocket-соединение с сервером автопушей. Это соединение веб-приложения используют, чтобы иметь возможность отправлять пользователям уведомления, даже если они в данный момент не работают в браузере. Во время соединения сервер отправил браузеру идентификатор регистрации нового пользователя пушей Push User Agent Registration ID (UAID).

При запуске в Firefox было открыто две вкладки: одна обычная новая вкладка, вторая Уведомление о конфиденциальности для веб-браузера Firefox. Поскольку для второй нужно было подключение к интернету, отправлялись дополнительные запросы. Их было 22.

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

Что касается телеметрии, диагностические данные обычно содержали информацию о событии, браузере, а также идентификаторы клиента и сессии в браузере. Кроме того, несколько запросов были отправлены через отдельный процесс pingsender.exe. Этот процесс отправлял запросы и после того, как пользователь закрыл браузер, причем информации пересылалось довольно много: идентификатор клиента, данные об устройстве, о браузере, включая список дополнений, плагинов и даже данные о внешнем оформлении браузера, о тестах, в которых был задействован браузер, о количестве мониторов, об установленном антивирусном ПО и так далее. Интересно, что мы нашли ключ, который, судя по названию, должен был отвечать за передачу телеметрических данных: environment.settings.telemetryEnabled. В нем было выставлено false, но по факту данные пересылались, и в огромном объеме.

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

После ввода или вставки символов (не менее двух) Firefox отправлял запросы с этими символами в Google. Отметим здесь, что профессор Лейт не обнаружил подобных запросов, но он вставлял в адресную строку URL возможно, Firefox отправляет данные в поиск, только если они не представляют собой URL.

При повторном запуске браузера обнаружились новые запросы, которые содержали информацию в том числе об идентификаторах пользователя и сессии. Кроме того, поскольку Mozilla приобрела компанию-создателя сервиса Pocket, мы не удивились, увидев в запросах адреса getpocket.cdn.mozilla.net и spocs.getpocket.com. К тому же, похоже, что браузер на этот раз сгенерировал отдельный уникальный идентификатор для Pocket. Завершилась сессия четырьмя запросами двумя от процесса Firefox и двумя от pingsender.

Edge версии 88.0.705.81

Первым делом Edge попытался идентифицировать пользователя. Надо сказать, что возможностей для этого у браузера от Microsoft куда больше, чем у прочих, и пользуется он ими весьма агрессивно, получая данные из аккаунта Windows. Конечно, как и другие браузеры, Edge запрашивал списки безопасных плагинов и потенциально вредоносных URL, но это была лишь часть запросов. Еще часть была связана с рекламой и трекерами таких запросов было намного больше, чем у других браузеров, также больше было и запросов на к посторонним бэкендам.

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

Уже при установке браузер нашел в системе изображение владельца и адрес электронной почты. В запросах к различным хостам отправлялись данные о пользователе, в ответ также приходила всяческая информация например, результатом запроса на bing.com/fd/auth/signin стал набор кук с идентификаторами и именем владельца компьютера. Запрос на substrate.office.com вернул не только эти данные, но и дату рождения пользователя, его полное имя, местонахождение и пол. Еще один на ntp.msn.com вернул JSON-файл с информацией о местонахождении пользователя (с точностью до нескольких десятков километров).

Когда пользователь печатал / вставлял слова в адресную строку, Edge обрабатывал эти символы и предлагал варианты из bing.com/profile/history/data. Чтобы получить эти варианты, браузер использовал наборы кук с всевозможными идентификаторами.

Интересно, что Edge был единственным из браузеров, который отправлял специальные запросы, связанные с редиректами и онлайн-рекламой по технологии real-time bidding. Также Edge транслировал информацию ScorecardResearch, сервису, который специализируется на сборе данных о поведении пользователей в интернете. Этот сервис есть во многих блок-листах.

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

Разумеется, Edge отправлял и телеметрические запросы: в частности, на сайты arc.msn.com, browser.events.data.msn.com, edge.activity.windows.com, config.edge.skype.com, browser.pipe.aria.microsoft.com, target.microsoft.com, web.vortex.data.microsoft.com и clarity.ms. По окончании сессии браузер отправил данные о том, как долго была открыта страница, о ее размерах, о том, как далеко пользователь ее промотал, был ли он авторизован и многое другое. Когда пользователь печатал или вставлял символы, они пересылались на bing.com/qbox. В каждом таком запросе был идентификатор пользователя и имя владельца компьютера.

При повторном запуске Edge сделал еще 70 запросов, аналогичных тем, что были отправлены до этого.

Opera версии 88.0.4324.182

При запуске Opera отправил пользователя на redir.opera.com. Пока страница грузилась, еще два запроса прошли на sitecheck.opera.com, сервис, который проверяет URL на безопасность. Затем были загружены вариации браузера для конкретного региона все те же, которые нужны для A/B-тестов. Три запроса было сделано на exchange.opera.com скорее всего, они связаны с встроенным в браузер криптокошельком. Несколько запросов было сделано по поводу расширений. В конце сессии Opera запросил обновления и получил некоторые скрипты, наборы правил, настройки и информацию для расширения Rich Hints.

Всего было сделано 106 запросов к 30 доменам, из которых только 17 принадлежали или управлялись Opera Software. При первых запросах браузер отправлял данные, полученные из дистрибутива идентификатор установки, последний посещенный URL, откуда был скачан дистрибутив, и так далее. После этой отправки Opera запрашивал редирект на www.opera.com/firstrun/. Затем собирались данные о стране, откуда пользователь зашел, и языке системы, вместе с этой информацией пересылались идентификаторы.

При запуске Opera были замечены соединения с Google Analytics, Twitter и Hotjar. В Google направлялись данные технического характера, включая идентификаторы пользователя. Twitter также выдал нам куку с идентификатором пользователя. В Hotjar, судя по всему, никакие персональные данные не отправлялись. Три запроса ушло на android.clients.google.com, что удивительно ведь браузер установлен на Windows. Мы предполагаем, что браузер таким образом может отправлять какие-то уведомления на устройства пользователя.

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

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

Подробнее..

Видеоаналитика в финансовом секторе

02.06.2021 20:09:34 | Автор: admin

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

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

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

Таким образом происходит переход от парадигмы видеонаблюдения к парадигме персонализированной видеоаналитики. Рынок технологии Edge Computing, обеспечивающей внедрение видеоаналитики, ежегодно растет на 32%.

Варианты видеоаналитики в финансовом секторе

Условно всех их можно разделить на 3 категории:

  1. Повышение лояльности заказчиков;

  2. Предотвращение мошенничества;

  3. Обеспечение безопасности.

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

  • Анализ алгоритма деятельности сотрудников отделения при работе с клиентами;

  • Типологический анализ посетителей (Отслеживание количества и времени пребывания посетителей, распределение посещаемости отделения, классификация по разным фильтрам: пол, возраст и т.д.);

  • Отслеживание VIP-клиентов (мгновенная идентификация с возможностью оперативного предоставления услуг и персонализированных предложений);

  • Управление очередями (отслеживание количества людей в очереди и дистанции между ними с возможностью оповещения ответственного сотрудника);

  • Мониторинг ношения элементов корпоративной униформы (галстук, бейджик и т.д.);

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

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

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

  • Распознавание сотрудников и посетителей с возможностью бесконтактного доступа в помещения;

  • Повышение безопасности за счет распознавания нетипичного поведения (с возможностью автоматического оповещения).

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

  • Обнаружение признаков дыма и пожара (изнутри и снаружи зданий с возможностью оповещения ответственного сотрудника и звонка в противопожарные службы);

  • Детекция попыток взлома банкоматов;

  • Отслеживание нештатных ситуаций (например, неадекватное поведение или человек с оружием);

  • Обеспечение безопасности по периметру (наружное видеонаблюдение с оповещением в случае обнаружения подозрительного поведения или потенциальных правонарушений);

  • Обнаружение оставленных предметов: получение оповещений о потенциально опасных объектах (например, оставленных сумках) и отслеживание оставившего предмет человека с использованием видеокамер;

  • Мониторинг ношения средств индивидуальной защиты (мониторинг ношения СИЗ сотрудниками и посетителями финансовой организации с автоматическим оповещением оператора);

  • Бесконтактная СКУД (идентификация сотрудника по лицу. В случае фиксации лица сотрудника с одобренным доступом подается сигнал на открытие двери или турникета).

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

Проблема

Само понятие видеоаналитика уже содержит в себе слово видео и подразумеват наличие как минимум нескольких камер в рамках организации. Но даже одна камера способна генерировать гигабайты данных ежеминутно. Возникает проблема узкого горлышка, связанная с низкой пропускной способностью каналов передачи данных: отправить весь поток в ЦОД и вернуть результат исполнения алгоритма задача очень непростая для различных протоколов, будь то 4G или, к примеру, Bluetooth.

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

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

Решение Atos подразумевает возможность выбора инструмента управления стеком серверов в зависимости от текущего окружения заказчика.

На выбор предоставляются встроенные возможности управления:

  • OpenBMC - пользовательский интерфейс для настройки на голое железо, доступа к виртуальной консоли и мониторинга оборудования;

  • Redfish - стандарт DMTF, предоставляющий интерфейс RESTful для управления серверами, хранилищами, сетевыми и конвергентными инфраструктурами;

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

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

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

Решение

Решение Atos представляет собой готовый программно-аппаратный комплекс, включающий в себя:

  • Программную часть;

  • ОС и/или виртуализацию;

  • Вычислительные ресурсы;

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

Основные преимущества такого комплекса:

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

B. Возможность масштабирования (в рамках одного сервера можно размещать несколько моделей за счет использования 2 карт Nvidia T4);

C. Поддержка в ходе всего жизненного цикла видеоаналитики (дополнительные сервисы);

D. Поддержка из единого окна.

Что по части видеоаналитики

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

С помощью нейронных сетей LUNA Platform может распознать человека, а также определять его эмоции, пол, возраст, элементы поведения и атрибуты одежды. В основе платформы собственные алгоритмы VisionLabs. Они признаны одними из самых точных и быстрых в мире, это подтверждается лидирующими позициями в международных конкурсах и независимых тестированиях. В этом году VisionLabs стала лучшей из российских компаний в общем зачёте независимого тестирования алгоритмов распознавания лиц Национального института стандартов и технологий США (NIST).

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

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

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

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

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

Распознавание СИЗ

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

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

  • усталость и невнимательность операторов, анализирующих видеопоток;

  • скорость уведомления ответственного служащего зависит от человеческого фактора.

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

Видео с распознаванием СИЗ:

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

Мультикамерный трекинг

Еще одна разработка VisionLabs, востребованная в отраслевых решениях мультикамерный трекинг. All-Targets All-Cameras tracking (ATAC) технология для отслеживания перемещений людей по сети камер видеонаблюдения, которая не требует обязательной идентификации по лицу и тем самым работает с деперсонифицированной информацией. Как пример, появляется возможность отследить время нахождения конкретного человека в отделении банка.

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

  • аналитика клиентских потоков: маркетинг, мерчандайзинг;

  • анализ взаимодействия клиентов и персонала: улучшение клиентского опыта, увеличение продаж;

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

  • отслеживание маршрута выбранного человека: безопасность (поиск преступника, пресечение правонарушений), поиск потерявшихся людей;

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

Что по части вычислительных мощностей

В качестве вычислительной платформы комплекса выступает сервер для перфийных вычислений BullSequana Edge. Главное отличие наших серверов от стандартных стоечных серверов возможность установки вне дата-центра в непосредственной близости от источника данных (на столе / на кронштейны на стену / в DIN-рейку /...).

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

  • Монтаж

    BullSequana Edge создан для работы вдали от ЦОД. Обеспечивает низкий уровень шума: 39 дБа в нормальном режиме, что более чем в два раза ниже чем у rack-серверов

  • Безопасность и защита данных

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

    Физическая защита

    Нет физического консольного порта / порта монитора. Датчик проникновения отключает систему при снятии крышки

    Защита микрокода

    Отдельная прошивка для BIOS и BMC гарантирует, что обновления происходят от Atos, а не от третьей стороны

    Защита загрузки

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

    Шифрование диска

    Ключевой механизм защиты, обеспечивающий надежную защиту данных, хранящихся на диске. Стандартные механизмы шифрования диска требуют, чтобы администратор вводил ключ после перезагрузки/сбоя питания. Поскольку Edge-серверы часто устанавливаются в удаленных местах без физического доступа, сервер BullSequana Edge поддерживает блочное шифрование на основе LUKS с возможностью безопасного хранения ключа в доверенном платформенном модуле, поэтому система может перезагружаться без ручного вмешательства. Также возможно реализовать сетевые механизмы восстановления ключей, такие как Clevis и Tang

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

    Сервер BullSequana Edge оснащен сервисным процессором на базе OpenBMC, который обеспечивает безопасное низкоуровневое управление системой на основе RestAPI. Это позволяет реализовать автоматизированное наблюдение и обеспечение узлов на основе Ansible. Atos предоставляет готовые шаблоны для общих задач, таких как включение/выключение узла, перезагрузка, сборка датчиков, а также обновление прошивки через сайт Atos GitHub. Гораздо менее безопасный протокол IPMI по умолчанию отключен на сервере BullSequana Edge. В случае необходимости администратор может включить и отключить входной и исходящий IPMI

Масштабируемость комплекса

Одним из главных преимуществ комплекса является возможность его масштабирования. Вычислительных мощностей сервера BullSequana Edge с 1 графической картой Nvidia T4 хватает примерно на 25 камер (в зависимости от сложности аналитики). В случае добавления дополнительных моделей и камер, достаточно лишь добавить вторую графическую карту вместо закупки второго полноценного сервера, что помогает заказчику оптимизировать стоимость решения, сократить звуко- и тепловыделение, уменьшить занимаемое решением место. Для обеспечения отказоустойчивости применяется собственное программное решение Evidian SafeKit.

* В зависимости от требований программного обеспечения** ПО для балансировки, репликации данных и отказоустойчивости приложений*** Одна карта Nvidia A100 по производительности примерно равна 5 картам Nvidia T4* В зависимости от требований программного обеспечения** ПО для балансировки, репликации данных и отказоустойчивости приложений*** Одна карта Nvidia A100 по производительности примерно равна 5 картам Nvidia T4
  • Апгрейд комплекса;

  • Обновление версий ПО;

  • Обновление прошивки вычислительных мощностей;

  • Поддержка любого количества камер и площадок.

Вывод:

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

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

Не наблюдать, а действовать (С)

Подробнее..

Категории

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

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