# NOC Roadmap ``` mermaid graph LR kafka[Kafka] kafka_sg[Kafka Subscriber Groups] envoy[Envoy] envoy_mesh[Envoy Service Mesh] envoy_acme[Envoy/ACME] consul_decline[Decline of the Consul] healthchecks[Healthchecks] virtual_appliance["Virtual Appliance"] saas["SaaS"] py3.12["★ Python 3.12 support"] style py3.12 fill:#f1c40f gufo_err_integration[Gufo Err Integration] gufo_loader_integration[Gufo Loader Integration] http_client[New HTTP Client] style http_client fill:#f1c40f snmp_v3["SNMPv3 Support"] style snmp_v3 fill:#27ae60 snmp_v3_config[SNMPv3 Config] style snmp_v3_config fill:#27ae60 runner_scripts[Runer: Scripts] runner_ui[Runner: UI] mrt_decline[Decline of the MRT] neighbor_tables[Neighbor Tables] discovery_decompose[Decomposition of Discovery] purgatorium_configuration[Purgatorium Configuration] network_scan[Network Scan] mo_discovery[Managed Object Discovery] purgatorium[Purgatorium] mo_etl[MO ETL] no_cython[Cython Dependency Removal] gufo_snmp_migration[Gufo SNMP Migration] channel_model[Channel Data Model] vlan_trails[VLAN Trails] vxlan_trails[VXLAN Trails] no_sae[SAE MO Removal] gufo_ping_dgram([Gufo Ping: DGRAM socket]) gufo_ping_udp([Gufo Ping: UDP socket]) gufo_snmp_v3([Gufo SNMP: v3 support]) style gufo_snmp_v3 fill:#27ae60 gufo_ping_3.12([Gufo Ping: Py3.12 packets]) style gufo_ping_3.12 fill:#27ae60 gufo_snmp_3.12([Gufo SNMP: Py3.12 packets]) style gufo_snmp_3.12 fill:#27ae60 gufo_snmp_mib([Gufo SNMP: MIB Support]) gufo_snmp_traps([Gufo Snmp: Traps API]) gufo_http([Gufo HTTP]) style gufo_http fill:#27ae60 mo_templates[Managed Object Templates] envoy --> envoy_mesh envoy --> envoy_acme envoy_mesh --> consul_decline kafka --> kafka_sg kafka_sg --> consul_decline gufo_ping_dgram --> healthchecks gufo_ping_udp --> healthchecks http_client --> py3.12 gufo_snmp_v3 --> snmp_v3 gufo_ping_3.12 --> py3.12 gufo_snmp_3.12 --> py3.12 gufo_http --> http_client http_client --> healthchecks snmp_v3_config --> snmp_v3 runner_scripts --> mrt_decline runner_ui --> mrt_decline runner_ui --> discovery_decompose neighbor_tables --> discovery_decompose consul_decline --> virtual_appliance envoy_acme --> virtual_appliance purgatorium_configuration --> network_scan network_scan --> mo_discovery purgatorium_configuration --> mo_discovery neighbor_tables --> mo_discovery purgatorium_configuration --> purgatorium mo_discovery --> purgatorium mo_etl --> purgatorium healthchecks --> purgatorium py3.12 --> virtual_appliance gufo_snmp_mib --> gufo_snmp_migration gufo_snmp_traps --> gufo_snmp_migration gufo_snmp_migration --> no_cython gufo_snmp_v3 --> gufo_snmp_migration channel_model --> vlan_trails channel_model --> vxlan_trails runner_scripts --> vlan_trails runner_scripts --> vxlan_trails no_cython --> virtual_appliance virtual_appliance --> saas network_scan --> no_sae mo_templates --> mo_discovery ``` ## Envoy Proxy Заменить Nginx на Envoy. Profit: * Service healthcheck * Loadbalance policies Steps: * Обкатать в Gufo Thor на Docker ## Envoy ACME Интегрировать Envoy с Gufo ACME для автоматической генерации сертификатов (при условии, что HTTPS endpoint глобально доступен) Profit: * Упрощение развертывания системы ## Envoy Service Mesh Использовать Envoy для маршрутизации вызовов внутреннего API. Profit: * Healthcheck * Load balancing * Отсутсвие необходимости в Consul * Вынос интеграции с Consul из сервисов ## Decline of the Consul Отказаться от использования Consul. Profit: * Упрощение системы * Повышение надежности * Экономия ресурсов для однонодовых инсталляций ## Kafka Интеграция с Kafka Pros: * Миграция с неподдерживаемого сервиса Liftbridge. ## Kafka Subscriber Group Добиться динамичности работы системы за счет отказа от фиксированных слотов и использования Subscriber Groups. Pros: * Гибкое балансирование наргрузки на consumer * Сохранение событийной консистентности на уровне MO ## Healthchecks Необходимо предусмотреть расширенный механизм проверки работоспособности MO, который может включать в себя одну или несколько проб: icmp ping, udp ping, snmp ping, tcp connect, http probe, etc. Кроме того, возможна проверка сторонних сервисов. Pros: * Гибкая политика определения работоспособности ## New HTTP Client http-parser более не поддерживается и несовместим с py3.12 Steps: * Реализовать отдельную библиотеку ## SNMP v3 Реализовать поддержку SNMP v3 ## Runner Scripts Реализовать в Runner поддержку запуска скриптов ## Decline of the MRT Runner полностью покрывает функционал MRT и позволяет его заменить. Profit: * Improved security * Unified user experience * Run Now становится ad-hoc конструктором job'ов ## Runner UI Реалиизовать UI для контроля и управления задачами Runner ## Virtual Appliance Реализовать процесс сборки и доставки VA на регулярной основе ## Python 3.12 Перейти на версию Python 3.12 Profit: * Рост производительности ## Gufo Err Integration Gufo Err является обобщением механизма noc.core.debug и полностью его заменяет Profit: * Поддержка code positions Py3.11+ * Гибкое управление выводом * Расширенное тестирование * Документированный API для разработчиков ## Gufo Loader Integration Gufo Loader является обобщением механизма loader Profit: * Typing * Code completion * Multiple customs Problems: * Script loader? ## Decomposition of Discovery Задания discovery могут быть представлены в виде графа задач для runner, а существующие checks выполнены как action. Profit: * Снижение нагрузки на mongo * Общий инструментарий для мониторинга выполнения * Семафоры и locks для ограничения нагрузки * Гибкая конфигурация заданий для MO ## Neighbor Tables Топологические проверки в discovery должны быть преобразованы в запуск скриптов для обнаружения соседей с последующим стримингом результата сервису topo. Сервис topo должен самостоятельно обнаруживать изменения топологиии. Profit: * Снижение нагрузки на базу * Возможность архивирования первичной информации * Data locality & caching * MPLS/L3 topology. ## Network Scan Сканирование сети для поиска новых MO ## MO ETL ETL для MO должен добавлять объекты только через Purgatorium ## Pugratorium Чистилище MO, дедупликациия, начальные проверки, добавление в базу. * Проверка реквизитов доступа до добавления в базу ## Chanel Model Модель данных для каналов ## VLAN Trails Автоматическая прокладка/разборка VLAN ## VXLAN Trails Автоматическая прокладка/разбока VXLAN/eVPN ## SAE MO Removal Удаление managed object SAE