Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

Python Community Chelyabinsk

December 05, 2019
Tweet

More Decks by Python Community Chelyabinsk

Other Decks in Programming

Transcript

  1. Использование Python для
    управления интернетом вещей (IoT)
    Александр Уфимцев
    Senior Developer
    Fijowave Ltd
    [email protected]fijowave.com
    2019-12-05

    View Slide

  2. Содержание
    ● Fijoport Server
    ● Демо!
    ● Архитектура
    ● Вопросы-ответы
    2

    View Slide

  3. Fijowave Ltd
    Штаб-квартира: Дублин, Ирландия
    Работает c 2011 года
    Специализируется на разработке
    платформы для Интернета Вещей (IoT)
    с умным удаленным управлением.
    3

    View Slide

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

    4

    View Slide

  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

    View Slide

  6. Fijoport Server: Overview 6

    View Slide

  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
    История разработки

    View Slide

  8. Project Stats
    8
    Commits: 5320
    LOC: 35179
    Files: 1509

    View Slide

  9. Fijoport + Portal Server
    Унифицированный удалённый доступ
    Работает в 95% из коробки без модификаций файрвола
    Интеграция авторизации, права доступа
    Автоматизация повторяющихся задач (бэкап)
    Восстановление удаленных систем коммутации и
    маршрутизации (OOB)
    9

    View Slide

  10. Fijoport + Portal Server
    Унифицированное обновление firmware
    Встраиваемый виртуальный Fijoport
    непосредственно в IoT устройства
    Мониторинг и оповещения
    Контроль за функциональностью
    10

    View Slide

  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)

    View Slide

  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

    View Slide

  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

    View Slide

  14. Fijoport Server: Connectivity 14
    Fijoport 1
    Fijoport 2
    Fijoport N
    ...
    Fijoport Server
    Operators
    Secure link encrypted by
    AES256 + PFS
    Local network
    IPsec
    OpenVPN

    View Slide

  15. Кто угадает ближе всего количество PyPi модулей получит приз
    15
    Demo!

    View Slide

  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

    View Slide

  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

    View Slide

  18. 18
    VM Communication: API Chain
    apps
    web
    qmng
    Remote
    Device 1
    Remote
    Device N
    API
    API

    View Slide

  19. Fijoport API
    19
    License Check
    Update (Firmware, Configuration, Application)
    Monitoring Remote Devices
    Backup Remote Device
    Local Network Configuration
    Network Health

    View Slide

  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

    View Slide

  21. Как работает RAS?
    21
    Выбрать /28 сеть из пула
    Отмапить ее к удаленным устройствам
    Куча магии iptables NAT
    Включить интерфейс

    View Slide

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

    View Slide

  23. mon
    23
    Внутренний мониторинг
    apps web qmng lb
    db gluster
    mon
    Node Exporter
    Prometheus
    AlertManager
    Grafana
    Rsyslog

    View Slide

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

    View Slide

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

    View Slide

  26. Django Roadmap
    Разбить Django монолит
    Переход на микросервисы
    Миграция на Django 2.x (3.x?)
    Django Q -> Celery
    26
    Helpdesk ->
    Django Admin ->
    Grapelli -> Bootstrap
    Pandas -> Bokeh -> D3?

    View Slide

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

    View Slide

  28. Мы ищем Django разработчиков в
    Челябинске!
    Требуется:
    Python, Django, MySQL, bash, git, английский язык
    Желательно:
    С, Celery, DRF, Gitlab, Gitlab CI, Docker, Linux (Alpine)
    Уровень: Senior
    URL: https://hh.ru/vacancy/34734509
    28

    View Slide

  29. Вопросы?
    29

    Пишите вопросы на
    [email protected]fijowave.com

    View Slide