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 и смотрите видео в разделе Ссылки. Наши зарубежные коллеги к настоящему моменту уже осветили многие технические вопросы и описали, какие сценарии уже работают и применяются в различных отраслях.


    Ссылки


    IBM
    Компания

    Комментарии 15

      +2

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


      https://open-horizon.github.io/

      Посмотрел. Сайт пустой. Грустно. Ушел печальный.


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


      Касательно платформы IBM Watson IoT — да, крутая штука, но тут еще надо понимать TCO ее владением.

        +1

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

          0

          Очень ждем продолжения, спасибо.

        +1
        “Стрелка”, я понял, что это в чистом виде edge computing

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

        Есть вопрос — какое должно быть аппаратное обеспечение(набор интерфейсов или архитектура), чтобы можно было бы использовать ваше решение, если иметь ввиду удаленное управление?
          0

          В данный момент edge сервисы работают на уровне контейнеров или Pod в кластере. По поводу архитектуры процессов — amd64, большинство arm, ppc64le. Под архитектуру завязан только агент. Его код в Open Source — Anax. Он написан на GoLang, так что портирование достаточно простая задача. Мы в своем решении использовали ARM версию для Jetson TX. Сам Anax использует MQTT для связи с центральным хабом.
          Встраиваемые системы редко управлялись централизованно. Обычно все управление было ручным, по крайне мере те, с которыми я работал.

            0
            большинство arm

            армов минимум два — armhf & arm64 — ну, это мало ли кто столкнется с этим.


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

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


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

              0
              армов минимум два — armhf & arm64 — ну, это мало ли кто столкнется с этим.

              фреймворк работает и с тем и с тем.


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

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

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

              В закрытых контурах управление производится в ручную и не ценролизованно, а других потребителей в этой стране раньше и не было. Не знаю как в «Стрелке», но обновлять все радары в ручную ещё то удовольствие.
                0

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

            0
            Поясните, пожалуйста, чем отличается Edge device от Edge server в вашем понимании?
              0

              Edge device — это устройство, которое может производить обработку данных от сенсоров, камер и прочих устройств. Edge Server, как видно из архитектуры, это кластер Kubernetes или OpenShift, который находится близко к данным, но может обрабатывать например поток с сотни камер.
              В Open Horizon осуществлен единый подход к управлению приложением, как на уровне чистого Docker, так и управлению приложением в кластере. Для интеграции с Edge device используется Anax компонент, а для интеграции с кластером Klusterlet. Хотя для администратора системы — сценарий один — управление приложением на Edge node(s).

                +1
                Аппаратно это может быть одно и тоже устройство?
                  0

                  не вижу смысла размещать edger device и edge server на одном физическом устройстве. Можно обойтись с помощью edge server, подключив к нему датчики и сенсоры.

                    0
                    Я хотел спросить другое. Edge device и Edge server аппаратно могут быть одно и тоже, но программно разные — это имелось ввиду?
                      0

                      теоретически ограничений нет, в этом случае один агент будет работать на уровне Docker, второй на уровне кластера. Главный вопрос в том, что в данном случае приложение на Edge Device можно перенести на Edge Server и отказаться от Edge device, осуществив подключение периферии напрямую в кластер. Хотя могут быть устройства интерфейс которых невозможно пробросить в кластер.

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

            Самое читаемое