Начало см. здесь.
Проблемы Edge и подходы к их решению
В настоящее время, различные решения Edge Computing вызывают всеобщий интерес, как в научных кругах, так и в среде ИТ-специалистов. (В частности, вчерашняя публикация 1-й части статьи вызвала всплеск посещаемости сайта, причём в воскресенье вечером). Однако, достаточно инновационная технология Edge Computing пока не лишена ряда существенных проблем, решения которых разрабатываются как академическими работниками, так и практическими инженерами.
При разработке виртуальных структур Edge возникает рад ключевых проблем
- Высокая степень потребления ресурсов виртуальными машинами. Серверы узлов Edge содержат гораздо меньше оборудования, чем серверы дата-центров. С другой стороны, виртуальным машинам требуется довольно много ресурсов для исполнения приложений. Поэтому, хотя кластер в центральном облаке может поддерживают большое количество виртуальных машин в активном состоянии, в узлах Edge может работать лишь ограниченное количество виртуальных машин. Следовательно, проектирование аппаратной структуры Edge иногда бывает непростым занятием. Поэтому, были разработаны более «лёгкие» технологии виртуализации, например:
- контейнеры Linux (LXC), для запуска нескольких изолированных экземпляров операционной системы Linux на одном узле, которые представляют собой виртуальную среду, где все экземпляры LXC используют один экземпляр ядра операционной системы;
- контейнеры Docker, позволяющие «упаковать» приложение со всеми его внешними параметрами и зависимостями в единый контейнер, который может быть развёрнут на любой Linux-системе, а также предоставляет набор команд для управления такими контейнерами;
- Технологии, которые снижают «ресурсопотребленеие» виртуальных машин, такие как unikernels.

3. Большой объём виртуальных машин. Вследствие мобильности конечных устройств и иногда самих узлов Edge, структуры Edge Computing должны обеспечивать частые миграции виртуальных машин, причем достаточно оперативно. Однако, поскольку виртуальные машины занимают много места, как в оперативной памяти, так и на диске, то это вызывает проблемы производительности и сложности миграции виртуальных машин. Это также частично преодолевается использованием более «лёгких» технологий виртуализации или снижением «ресурсопотребления» самих виртуальных машин. Есть также методы, снижающие размер виртуальной машины при её миграции, такие как дедупликация, а также синтез виртуальных машин.
2. Проблемы безопасности. Даже в крупных дата-центрах, где должен работать высококвалифицированный персонал, встречаются проблемы с безопасностью, не говоря уже о микро-дата-центрах Edge, которых гораздо больше, чем крупных дата-центров, и где решение проблем безопасности часто отдаётся сторонним мелким организациям или частным лицам. Поэтому применяются такие методы, как вычислительный аудит, а также такие решения как Intel Software Guard Extensions (SGX)[1], гомоморфное шифрование (homomorphic-encryption)[2] и пр.

Программные архитектуры виртуализации Edge
На сегодняшний момент, есть несколько проектов по построению единой генеральной структуры Edge Computing.
- OpenStack: открытая (open-source) платформа, разработанная компанией Rackspace Inc. и американским агентством космических исследований NASA. В OpenStack виртуальные серверы доступны пользователям по облачной модели «инфраструктура как услуга» IaaS (Infrastructure-as-a-Service). Хотя изначально OpenStack предназначался для поддержки Cloud Computing в больших дата-центрах, в последнее время сообщество OpenStack заявило о том, что может естественным образом поддерживать и Cloud-Edge Computing (CEC), благодаря своей гибкости и модульности. В настоящее время OpenStack поддерживает более десятка гипервизоров, включая KVM, QEMU, UML, XenServer (и другие варианты Xen на базе XAPI), VMware vSphere, Hyper-V, Virtuozzo, а также PowerVM, LXC, и Docker.
- KubeEdge. Kubernetes – это система оркестрации контейнеров open-source для Cloud Computing, разработанная Google, и поддерживаемая сообществом Cloud Native Computing Foundation, принадлежащем Linux Foundation. Kubernetes предназначена для автоматического развёртывания и управления масштабных облачных приложений, с использованием контейнеров, таких как Docker. Однако, поскольку Kubernetes «заточена», в основном, на облако, у неё нет хорошей системной поддержки Edge. Поэтому в компании Huawei была разработана open-source платформа для взаимодействия Cloud-Edge под названием KubeEdge[3], которая призвана обеспечить хорошее взаимодействие Kubernetes между Cloud и Edge.

KubeEdge коммуницирует с облаком Cloud через компонент EdgeHub, который отбирает контейнеры и функции serverless из удалённого репозитория (Container & Serverless Functions Repository) и затем сохраняет их локально на узле Edge Node. Информация о контейнерах и функциях serverless синхронизируется через распределённых модуль хранения ключевых значений etcd. События от конечных устройств собираются компонентом EventHub, который в свою очередь, запускает контейнеры и функции serverless на узле Edge Node для выполнения соответствующих функций обработки данных.
- OpenEdge: это проект open-source компании Baidu[4], цель которого состоит в создании гибкой платформы Edge Computing, которая без проблем расширяла бы функционал Cloud Computing на устройства Edge. OpenEdge предназначена для работы с платформой управления облаком (Cloud Management Suite) Baidu IntelliEdge (BIE) в различных сценариях взаимодействия Cloud-Edge. OpenEdge построена по модульному принципу с использованием контейнерных технологий. Она содержит две части, работающие на границе сети Edge: мастер-процесс, как общая система управления и набор загружаемых модулей-плагинов. Кроме того, OpenEdge может работать в двух режимах: с контейнерами Docker и в режиме собственной обработки, когда приложения выполняются как обычные процессы Linux. На рисунке ниже показаны компоненты OpenEdge, серый цвет – OpenEdge, оранжевый цвет – Cloud. Компонент Engine на мастер-узле Edge (Master Edge Node) принимает данные события IoT от устройства IoT Hub, которое собирает информацию с датчиков Интернета Вещей (IoT), через транспортный модуль очерёдности сообщений телеметрии MQTT (Message Queuing Telemetry Transport). Чтобы обрабатывать эти события, компонент Engine коммуницирует с компонентом EdgeHub, а также с компонентом Docker Repo, чтобы выполнить соответствующие вычисления в контейнерах Docker. Компонент Engine может также коммуницировать с системой управления облаком Cloud Manаgement Suite для того, чтобы синхронизировать Master Edge Node с облаком.

Исследовательские и другие проекты
Ниже приведён список некоторых других проектов по управлению виртуальной инфраструктурой Edge Computing. Список, возможно неполный и будет дополнен в последующих публикациях.
- AT&T Edge Cloud (https://about.att.com/content/dam/innovationdocs/Edge_Compute_ White_Paper%20FINAL2.pdf)
- Verizon Multi-access edge computing (MEC) (https://www.telecompetitor.com/verizon-virtualized-5g-end-to-end-network-will-support-slicing-edge-computing)
- Paradrop (https://paradrop.org/)
- AirBox: (https://ieeexplore.ieee.org/document/7774350)
- FocusStack:(https://github.com/WXWXwqz/EC_RM_Paper/blob/master/%E3%80%903%E3%80%91Amento%20et%20al.%20-%202016%20-%20FocusStack%20Orchestrating%20edge%20clouds%20using%20location-based%20focus%20of%20attention-annotated.pdf)
- Amino: (http://www.cs.wm.edu/~liqun/paper/pieee19.pdf)
- Lightweight Service Replication for Mobile-Edge Computing: (https://www.researchgate.net/publication/317523860_Lightweight_Service_Replication_for_Ultra-Short_Latency_Applications_in_Mobile_Edge_Networks)
- SOUL (https://web.eecs.umich.edu/~hyunjong/pubs/sec16_soul.pdf)
- LAVEA (http://www.cs.wm.edu/~syi/publications/sedgec17_1.pdf)
* * *
Продолжение следует.
[1] https://software.intel.com/content/www/us/en/develop/articles/intel-software-guard-extensions-tutorial-part-1-foundation.html
[2] https://www.cs.cmu.edu/~odonnell/hits09/gentry-homomorphic-encryption.pdf
[4] https://techcrunch.com/2019/01/09/baidu-cloud-launches-its-open-source-edge-computing-platform/
Уведомление: Управление виртуализацией в среде Edge Computing | Telecom & IT