# 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