Александр Уфимцев. Использование Python для управления интернетом вещей

Александр Уфимцев. Использование Python для управления интернетом вещей

Я расскажу о том, как мы использовали Python для создания Fijoport Server — платформы для доступа к удаленным устройствам и управления интернетом вещей. С живой демонстрацией продукта в работе.

49c3bfded3cf5f5100ef423140676288?s=128

Python Community Chelyabinsk

December 05, 2019
Tweet

Transcript

  1. 3.

    Fijowave Ltd Штаб-квартира: Дублин, Ирландия Работает c 2011 года Специализируется

    на разработке платформы для Интернета Вещей (IoT) с умным удаленным управлением. 3
  2. 4.

    Какую проблему решает Fijoport? Установленное у клиентов оборудование, которое нужно

    обслуживать. Этого оборудования много и/или оно находится далеко географически Клиенты затрудняются установить TeamViewer или подобный софт Сисадмины клиентов просят установить свой клиент ВПН Ваши инженеры, ежедневно проводящие 10-12 часов в разъездах: 4
  3. 5.

    Fijoport Server Solution: Overview 5 Internet Bad guys Client Network

    AES256 + PFS Fijoport Server Corporate Firewall M2M API Users and Operators LAN NAT SysAdmin
  4. 7.

    2013 - POC: CLI: Perl, bash 2014 - MVP: CLI:

    C, Python, bash, GUI: Python, web.py, 1.0 релиз 2015 - Переход на Django, 2.0 релиз 2017 - 3.0 Релиз 2019 - Релизы каждый квартал, текущий 3.5, заканчиваем 3.6 спринт 7 История разработки
  5. 9.

    Fijoport + Portal Server Унифицированный удалённый доступ Работает в 95%

    из коробки без модификаций файрвола Интеграция авторизации, права доступа Автоматизация повторяющихся задач (бэкап) Восстановление удаленных систем коммутации и маршрутизации (OOB) 9
  6. 10.

    Fijoport + Portal Server Унифицированное обновление firmware Встраиваемый виртуальный Fijoport

    непосредственно в IoT устройства Мониторинг и оповещения Контроль за функциональностью 10
  7. 11.

    11 Fijoport Products Fijoport Classic Cheap Slow Ethernet Only IP

    access Only Fijoport 3001 Not Cheap POE Fast Ethernet, 3G, 4G IP and Serial Fijoport Virtual Docker or VM-based Fast Ethernet Only IP access Only FijoSat Not Cheap ++ Fast Ethernet, Satellite IP and Serial (In development with ESA)
  8. 12.

    Fijoport Server: Schematics 12 Fijoport 1 Fijoport 2 Fijoport N

    ... Fijoport Server Operators API calls over secure link User sends commands to portal Result Result Automated and scheduled tasks
  9. 13.

    Fijoport Server: Implementation Details 13 Fijoport 1 Fijoport 2 Fijoport

    N ... Fijoport Server Operators C Python (Django) Bits of C (for performance) Little JS Some bash scripts C, sh
  10. 14.

    Fijoport Server: Connectivity 14 Fijoport 1 Fijoport 2 Fijoport N

    ... Fijoport Server Operators Secure link encrypted by AES256 + PFS Local network IPsec OpenVPN
  11. 16.

    16 Server Architecture Hardware Server 1 Hardware Server 2 Hardware

    Server N ... VM 1 VM 2 VM 3 VM N DB cluster File cluster Hardware Platform: Ubuntu Linux LTS Virtual Machines: Ubuntu Linux LTS Virtualisation: KVM DB Cluster: MySQL File Cluster HA: GlusterFS ... Business Logic Layer
  12. 17.

    17 VM Breakdown apps web qmng lb db gluster mon

    Connection logic API calls UI / M2M API Handling Async Queue Manager Load Balancer Monitoring Database File Storage Architecture is horizontally scalable, i.e. we can add more servers as needed
  13. 19.

    Fijoport API 19 License Check Update (Firmware, Configuration, Application) Monitoring

    Remote Devices Backup Remote Device Local Network Configuration Network Health
  14. 20.

    APP API 20 Handle Fijoport connects/disconnects Monitor Fijoport Connectivity Establish

    RAS session (connect/disconnect) Send API calls to Fijoports from web UI and REST API apps
  15. 21.

    Как работает RAS? 21 Выбрать /28 сеть из пула Отмапить

    ее к удаленным устройствам Куча магии iptables NAT Включить интерфейс
  16. 22.

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

    В настоящее время добавлена поддержка 10+ устройств (Access, Backup, Monitoring) Типы устройств: PBXы, коммутаторы 22
  17. 23.

    mon 23 Внутренний мониторинг apps web qmng lb db gluster

    mon Node Exporter Prometheus AlertManager Grafana Rsyslog
  18. 24.

    Трудности разработки и администрирования 24 Firewalls: Неправильно сконфигурированные DPI (слишком

    “умные” файрволлы) Государственные или корпоративные файрволлы Нестабильные сетевые соединения Заброшенные устройства
  19. 25.

    Трудности разработки 25 Вечные дебаты: Стабильность работы, безопасность, новые фичи

    Откуда брать пакеты: Ubuntu, Launchpad, PyPi Рефакторинг и убирание технического долга и новый функционал Как и когда обновлять прошивки на удаленных устройствах Трафик стоит денег vs безопасность
  20. 26.

    Django Roadmap Разбить Django монолит Переход на микросервисы Миграция на

    Django 2.x (3.x?) Django Q -> Celery 26 Helpdesk -> Django Admin -> Grapelli -> Bootstrap Pandas -> Bokeh -> D3?
  21. 27.

    Глобальный Roadmap Оптимизация задержки пакетов на спутниковой связи (ESA проект)

    Переход на UDP связ (QUIC?) Минимизация трафика между Fijoportами и сервером Минимизация ОЗУ для сервера: Текущее решение создает процесс на каждое подключение 27
  22. 28.

    Мы ищем Django разработчиков в Челябинске! Требуется: Python, Django, MySQL,

    bash, git, английский язык Желательно: С, Celery, DRF, Gitlab, Gitlab CI, Docker, Linux (Alpine) Уровень: Senior URL: https://hh.ru/vacancy/34734509 28