Vor zwei Jahren schrieb ich auf meinem Blog etwas über meine Anstellung bei SolNet und über die Aufgaben, die mir hier anvertraut worden sind. In der Zwischenzeit sind zwei weitere erlebnisreiche Jahre vergangen, neue Techniken und Standards haben sich etabliert, während andere an Bedeutung verloren haben. Die Informatiktechnik wird auch in den kommenden Jahren so bleiben, wie sie schon zuvor war: kurzlebig und spannend. Da ich im vergangenen März mein fünftes Anstellungsjahr beim Solothurner Internet-Provider begann, folgt hier ein Abriss der Änderungen und Neuerungen dieser zwei Jahre.
Etwas hat sich bei SolNet nicht verändert und das ist sehr erfreulich. Es ist die Offenheit. Einerseits in bezug auf die verwendete Software: zum Zuge kommen fast ausschliesslich freie Programme: FreeBSD, Linux, OpenOffice, LaTeX, usw. Freie Software hat markante Vorteile gegenüber kommerzieller Produkte wie etwa MS Windows. Bei freier Software haben wir beispielsweise Zugriff auf den Quelltext, wir können bei Problemen direkt den Sourcecode analysieren und selbst Änderungen vornehmen, um die Applikation unseren eigenen Bedürfnissen anzupassen. Bei der Telefoniesoftware Asterisk geschah dies in der Vergangenheit mehrfach. Die Erfahrung, dass es auch mehr Spass macht, mit Linux & Co. zu arbeiten, hat sich nicht geändert.
Andererseits gibt es bei SolNet eine erfreuliche Offenheit im Team, die sich auf das Miteinander und auf die gemeinsam realisierten Projekte günstig auswirkt. Weniger Hierarchie zugunsten von mehr Freiheit und Eigenverantwortung lautet die Devise.
Sehr spannend war in den beiden vergangenen Jahren die Entwicklung eines ACS (TR-069) Servers, den ich bereits in einem Beitrag erwähnt habe. Mit TR-069 kann die Konfiguration eines Router/Modems automatisiert werden: sobald ein Kunde das Gerät am Netz anschliesst, werden alle wichtigen Einstellungen vom ACS Server geliefert: Login, Wireless- und Voice-Einstellungen, ISDN-Parameter, usw. Ebenso kann mit TR-069 ein Protokoll über die Veränderungen geführt werden. Damit lässt sich der Zustand des Gerätes nach einem Reset auf Werkseinstellungen jederzeit wiederherstellen. Ebenso ist eine automatische standortabhängige Konfiguration möglich: je nachdem wo ein Kunde seinen Router anschliesst, erhält er unterschiedliche, zum Standort passende Einstellungen.
TR-069 baut auf etablierten Protokollen wie HTTPS, XML und SOAP auf. Ich habe den ACS-Server mit Perl entwickelt, weil es zu dieser Scripting-Sprache eind Myriade an Software-Bibliotheken gibt. Leider war es gerade bei SOAP nicht ganz einfach. Zwar gibt es einen Perl Modul SOAP::Lite; allein es gelang mir nicht, diesen so zu konfigurieren, dass er HTTP-Requests erzeugt, die von einem TR-069-fähigen Gerät, wie etwa der AVM Fritz!box, akzeptiert werden. Also schrieb ich eine eigene Bibliothek, SOAP::Message, die eine möglichst einfache aber flexible Schnittstelle zum SOAP-Protokoll bietet. Weiterführende SOAP Infos gibt es auch hier: http://wiht.co/soap-intro.
Apropos Programmiersprachen: an Perl führt weiterhin kein Weg vorbei, es ist die Scripting Sprache für das Automatisieren von Server-Prozessen. Perl bietet zudem ausgereifte Sprachelemente zum Erstellen von Modulen und Klassen. Geschickt angewendet können so grosse Teile des Codes wiederverwendet werden. Es gibt aber auch einen Erlkönig in der Welt der Scripting-Sprachen: Ruby.
Webservices liegen im Trend. Auch Swisscom bietet anstelle des eher trägen Filetransfer-Protokolles nun auch Webservices an, mit denen auf die BBCS Dienste zugegriffen werden kann. Erfreulicherweise kommt auch hier SOAP zum Zuge, so dass ich meine eigenen Bibliotheken sofort weiterverwenden konnte. Auch für ULL-Funktionen (Entbündelung) gibt es seit kurzem Webservices, mit denen Teilnehmeranschlüsse qualifiziert und verwaltet werden können. Swisscom bietet für alle Dienste einheitlich drei Schnittstellen an: Webservices, Filetransfer und eine Website für manuelle Veränderungen.
Etwas hat sich in den vergangenen zwei Jahren verändert: ich verwende PostgreSQL als Datenbank für alle gestellten Aufgaben. MySQL kommt kaum mehr zum Einsatz. Das liegt einerseits daran, dass wir Postgres schon lange für interne Aufgaben nutzen. Andererseits konnte ich mich bei den Projekten der vergangenen Jahre von der Flexibilität und Leistungsfähigkeit dieser DB überzeugen. Postgres ist nicht nur schnell und zuverlässig, es bietet auch fantastische Möglichkeiten für Entwickler: so können Teile einer Applikation direkt als Trigger und Stored Procedures in die DB verlagert werden – in verschiedenen Programmiersprachen. Ein DB-internes Benachrichtigungs-System (NOTIFY/LISTEN) ermöglicht es, einen fremden Prozess über Änderungen in der DB zu informieren. So wird es möglich, dass Anpassungen ohne Verzögerung in eine Konfigurationsdatei geschrieben werden können. Eine deutliche Erleichterung sind auch die Savepoints, mit denen sich eine Transaktion unterteilen lässt. Damit können eine Reihe von Änderungen «ettapiert» werden. Bei allfälligen Fehlern ist die Rückkehr zu einer bestimmten Etappe möglich. Eine feine Sache.
Und mit diesem letzten Satz will ich schliessen und wiederholen, was ich schon vor zwei Jahren geschrieben habe: Es ist eine feine Sache, bei SolNet arbeiten zu dürfen!
Pingback: Zehn Jahre Stocki@SolNet « Benjamin Stocker-Zaugg