Webanwendung für Remote-Netzwerk- und Router-Management
Webanwendung für Remote-Netzwerk- und Router-Management
Information
Standort:
USA und Dänemark
Branche:
Telekommunikation
Plattform:
Web-Entwicklung
Arbeitsmodell:
Zeit und Material
Projektdauer:
Seit 2021
Team-Mitglieder:
1 Lösungsarchitekt, 6 Senior Entwickler, 7 Middle Entwickler, 1 Senior QA-Automatisierungsingenieur und 1 Projektmanager.
ID:
645
Verwendete Technologien
Java
Kotlin
Spring
Javascript
AWS S3
React
Python
MongoDB
PostgreSQL
Apache

Der Kunde

Ein dänisch-amerikanischer Anbieter von Telekommunikationssoftware beauftragte Elinext mit der Entwicklung einer Webanwendung zur Fernverwaltung von Netzwerken und Routern.

Herausforderungen

Internetanbieter müssen viele Mitarbeiter im Kundensupport einsetzen, um Kunden bei der Lösung ihrer Verbindungsprobleme zu helfen. Jedes Problem erfordert eine beträchtliche Menge an Zeit, da die Mitarbeiter den Kunden erklären müssen, was mit ihrem Router zu tun ist.

Ein dänisch-amerikanisches Unternehmen wollte das ändern. Sie hatten die Idee für eine Web-Software, die es den Mitarbeitern ermöglicht, direkt und in Echtzeit auf die Router der Kunden zuzugreifen und Maßnahmen zu ergreifen. So etwas war zuvor noch nie gemacht worden. Das Unternehmen suchte nach einem Entwickler und stieß auf Elinext. Wir hatten viel Erfahrung in der Echtzeitverarbeitung und bei Big Data, daher stellte sich unser Team als passend für das Projekt heraus.

Der Prozess

Von dem Moment an, als das Projekt gestartet wurde, haben wir die Agile-Methodik und die direkte Kommunikation mit dem Team des Kunden genutzt, mehrmals täglich. Manchmal führen wir längere Meetings und Debug-Sessions durch (bis zu 4 Stunden), die jedoch immer sehr produktiv sind.

Wir begannen damit, Cloud-Adapter für Router (CPE) und Firmware umzusetzen, an denen die C++-Entwickler unseres Kunden bereits arbeiteten. Parallel dazu haben wir Adapter für Router von Drittanbietern erstellt und gemeinsame APIs für alle Komponenten geschaffen. Außerdem haben wir einen Kubernetes-Cluster hinzugefügt, der auf jeder Plattform bereitgestellt werden kann. In der letzten Phase haben wir die Software in der Lage gemacht, 1.000.000 Datenpunkte pro Sekunde in Echtzeit zu sammeln und zu analysieren.

Wir haben das MVP schnell gebaut, in nur zwei Monaten, und dann in weiteren vier Monaten das voll funktionsfähige Produkt fertiggestellt. Die Implementierung von KI und ML dauerte 1,5 Jahre ab Projektbeginn.

Optimierung des Message Brokers

Der Kunde hatte den Apache Pulsar Message Broker verwendet. Und ihre Entwickler hatten ihn auf die falsche Weise skaliert, was wir umdrehen mussten. Schließlich konnten wir den Broker optimieren, aber der Kunde musste etwas in seiner Firmware ändern.

Data Simulation

Es ist schwierig vorherzusagen, wie jedes Gerät je nach Umgebung reagieren wird, da selbst bestimmte Wandmaterialien die Signalqualität beeinflussen können. Zusätzlich mussten wir 1.000.000 Payloads pro Sekunde generieren. All das machte die Simulation des Verhaltens des Systems zu einer Herausforderung.

Wir haben einen separaten Kotlin-Cluster speziell für diese Fälle verwendet.

Testen

Wir haben nur automatisierte Qualitätssicherung durchgeführt. Manuelle Tests waren die Aufgabe unseres Kunden.

Das Produkt

Das von uns entwickelte System ist eine einzigartige Softwareplattform für nahtloses Abonnentenmanagement und Netzwerktransparenz. Es besteht aus einer Website, einer Reihe von Analysetools und einer Befehlszeilenschnittstelle.

Zusätzlich haben wir das System in Übereinstimmung mit Telekommunikationsstandards wie TR-069, TR-181, TR-369, TR-089, TR-106, TR-131, TR-135, TR-140, TR-142, TR-143, TR-157, TR-196, TR-330, TR-247 und TR-255 gemacht.

Die Anwendung verbessert die Leistung im Vergleich zur grundlegenden Konnektivität durch eine End-to-End-Transparenz des gesamten Netzwerks. Die Identifizierung von Problemen in Echtzeit verbessert die Kundenzufriedenheit, Kundenbindung und die Qualität der Erfahrung.

Durch gemeinsame APIs kann die Anwendung nahtlos in vorhandene Betriebsunterstützungssysteme und Geschäftsunterstützungssysteme integriert werden, die von den Kunden unseres Kunden verwendet werden. Das Customer-Premises Equipment (CPE) muss nicht das Gerät unseres Kunden sein.

Die Anwendung bietet eine Vielzahl von Serviceoptionen und Anpassungsmöglichkeiten für Internetdienstanbieter.

Bereitstellung

Wir haben ein Kubernetes-Cluster mit Java-Microservices und React für GUI verwendet. Die Verwendung von Microservices ermöglicht es unserem Kunden, einen großen Datendurchsatz zu unterstützen und kostengünstig zu skalieren. Darüber hinaus unterstützt es die Echtzeit-Analyse für jedes empfangene Payload.

Um den Betreibern die Überprüfung des Netzwerkzustands, die Konfiguration von Warnmeldungen und die Verwendung von Rückverfolgbarkeit zu ermöglichen, haben wir Grafana mit Prometheus kombiniert.

Microservices

Das System besteht aus mehreren Microservices, von denen jeder einen spezifischen Zweck hat:

  • Die Ingestors-Services konvertieren Datenmodelle von jedem Router in das TR181-Modell, das in der Branche Standard ist.
  • Adapter verarbeiten das TR181-Modell und erstellen Metriken (Zeitreihendaten) basierend darauf. Metriken sehen aus wie ein Punkt mit einem Zeitstempel und einem Wert wie CPU-Auslastung oder Signalstärke zu einem bestimmten Zeitpunkt.
  • Das CPE-Control-Modul ermöglicht es dem Betreiber, Befehle für das Gerät festzulegen - dies kann unmittelbar nach dem Aufruf des Endpunkts erfolgen. Die Befehle umfassen Geräte-Neustart, Werkseinstellungen oder Festlegen von Passwörtern für Access Points.
  • Mit dem Firmware-Upgrade-Modul können Betreiber Firmware-Upgrades für jedes Gerät planen, das mit der Plattform verbunden ist.
  • Im Rahmen der Echtzeit-Analyse zeigen Statusmeldungen an, ob ein bestimmter Router gesund ist oder nicht. Der Betreiber kann auch bestimmte Router-Parameter über die Cloud-Infrastruktur überprüfen.
  • Benutzer rufen manchmal Support auf, wenn ihr WLAN-Signal schwach ist. Das Alerts-Modul benachrichtigt den Betreiber über ein Problem und schlägt Lösungen vor, bevor dies passiert.
  • Das Dashboard-Modul ermöglicht es Betreibern, über 100 Widgets zu konfigurieren, die mit der Anwendung verfügbar sind, um bestimmte Arten von bevorstehenden Daten zu handhaben.
  • Eine weitere nützliche Funktion für Betreiber ist der Session Manager. Damit können sie Router debuggen, die mit dem Cluster verbunden sind.
  • Schließlich ist das fortschrittlichste Modul, das uns am längsten gedauert hat, die ML/AI-Cloud. Sie ist instrumental für die weitere Entwicklung des Produkts. Unser Kunde kann die Cloud nutzen, um das KI-Modell zu trainieren, um den zukünftigen Bedürfnissen seiner Kunden gerecht zu werden.

    Speicher

Wir haben PostgreSQL verwendet, um statische Werte und Konstanten zu speichern, während MongoDB für Zeitreihendaten eingesetzt wurde. Der Cache ist verteilt und wird durch Redis ermöglicht. Für historische Daten haben wir AWS S3 genutzt.

Message Broker

Das System basiert in den meisten Fällen auf Kafka. Wenn das aber nicht ausreicht, um Nachrichten zu vermitteln, wird Apache Pulsar verwendet.

Ergebnisse

Es dauerte uns etwa 18 Monate, um das voll funktionsfähige, KI-gestützte System zu entwickeln. Es verarbeitet jetzt rund 1.000.000 Payloads von 1.000.000 Routern pro Sekunde. Und kurz nachdem es live gegangen war, konnten Betreiber, die es nutzten, ihre Kosten für den Kundensupport senken und die Kundenkommunikation verbessern.

Dieses Projekt war auch eine großartige Lernerfahrung, da wir mit einem für uns neuen Tool arbeiteten: Apache Pulsar. Und wir arbeiten weiterhin daran, das Produkt zu verbessern. Das Hinzufügen weiterer Branchenstandards und die Unterstützung neuer Router stehen als nächstes auf unserer Agenda.

router-management-software
netzwerk-monitoring-software
netzwerkmanagement-software
Haben Sie vor, ein gleiches Projekt zu schaffen?
Haben Sie eine Projektidee? Lassen Sie uns darüber diskutieren
Kontakt


    Insert math as
    Block
    Inline
    Additional settings
    Formula color
    Text color
    #333333
    Type math using LaTeX
    Preview
    \({}\)
    Nothing to preview
    Insert