(DevOps) Vollautomatisches Deployment von Eclipse /Sigasi-Studio
Der Kunde setzt verschiedene Eclipse-Versionen und Eclipse-basierte Tools wie zB. Sigasi Studio
ein. Diese galt es vollautomatisch auf verschiedene Zielsysteme auszurollen. Jegliche manuelle
Schritte gilt es hier zu beseitigen, um unnötige Störung der Entwickler zu elimieren und eine jederzeit vollständig reproduzierbare Arbeitsumgebung zu gewährleisten.
Ein Hauptproblem bei Eclipse liegt hier darin, daß die Installation und Updates auf manuelle
Durchführung und Ablage innerhalb des Home-Verzeichnis der einzelnen Nutzers ausgelegt ist.
Dabei werden uA. auch User-Configuration mit Programmcode vermengt - eine saubere Trennung,
wie zB. in der Unix-Welt seit Jahrzehnten bewährt, fehlt hier. Dies führt zu fehlender Reproduzierbarkeit und erheblichen Störungen, insbesondere beim Parallelbetrieb verschiedener
Versionen.
Bei Sigasi-Studio kam erschwerend hinzu, daß dieses lediglich mittels interaktivem Installer
zur Online-Installation angeboten wurde. Diese ist aber im Netzwerk des Kunden aufgrund von
Sicherheitsvorgaben nicht möglich.
Zur Lösung des Problem habe ich folgende Maßnahmen ergriffen:
Tools+Spachen:
Debian, APT, Packaging, Ansible, Eclipse, Jenkins, Sigasi-Studio, Docker-Buildpackage, Docker
(DevOps) Docker-Buildpackage: Build-Automatisierung für Debian-/Ubuntu-Pakete
Das Aufsetzen einer Build-Automation für Debian-/Ubuntu-Pakete (zB. via pbuilder oder buildd)
ist mit einigem Aufwand verbunden. Dies hängt vorallem mit der historischen Entwicklung, aber auch komplexen Anwendungszenarien wie zB. der Pflege kompletter Distributionen (mit vielen tausenden Paketen) zusammen.
Für einfachere Szenarien, wie die Pflege von Zusatz-Repositories für existierende Distributionen,
zB. Backports/Updates, zusätzliche Software, kundenspezifische Anpassungen, kommerzielle
Produkte, etc. der Komplexität exitierender Tools nicht erforderlich.
Docker-Buildpackage schafft hier unter Einsatz moderner Technologien wie Docker und Git eine
sehr einfache Alternative mit minimalem Configurations-Aufwand.
Nach initialer (geringfügiger) Configuration der Zielplattform ist der komplette Build-Prozess
aus dem Quelltext heraus, bishin zur installierbaren APT-Repository, abgewickelt. Das Tool erzeugt
dabei auch vollautomatisch die benötigte Build-Umgebung und fährt den Build-Prozeß
isoliert in einem Docker-Container ab.
Auch die Integration in CI, wie zB. Jenkins, gestaltet sich trivial.
Tools+Spachen:
Debian, APT, dpkg, Docker, docker-buildpackage, CI, Jenkins, DevOps
Beratung/Entwicklung Embedded-Linux/IOT Diagnose - Bahntechnik, Hochsee-Schiffahrt, Kraftwerke
Der Kunde ist Hersteller von Sensorik und Meßtechnik. Das Projekt befaßte sich mit der OSPlattform
und SW-/System-Architektur eines Telemetrie-/Diagnose-Geräts (vorrausschauende Wartung) für rotierende Kraftmaschinen, insbesondere große Motoren und Turbinen. Es wird vorallen in den Bereichen Bahntechnik (Lokomotiven), Seefahrt (Schiffsmotoren-/Aggregate), Kraftwerke (zB. Gas-Turbinen) eingesetzt, um frühzeitig etwaige Maschinen- Schäden, lange vor einem Ausfall, erkennen zu können.
Wichtige Anforderungen sind hier uA. hohe Robustheit/Ausfallsicherheit und lange Lebenszeit
unter rauhen Bedingungen (zB. auf hoher See, in Kraftwerken, etc) geringer Wartungsaufwand,
Umgang mit schlechten Datenverbindungen. Hinzu kommen vielfältigste kundenspezifische
Anpassugen.
Kernaufgaben im Projekt waren uA.:
Tools+Spachen:
C/C++, Linux-Kernel, PtxDist, Nodejs, Barebox, ADC, Git, RS485, CAN, RS232, Duagon IONIA, MVB, cmake, javascript
Kernel / BSP für Duagon IONIA (Bahntechnik / IOT)
Für einen Kunden aus der Bahntechnik wurde ein neues Linux-BSP für Duagon IONIA Maschinen
entwickelt. Die mitgelieferte/vorinstallierte Software war für den Anwendungsfall (als generischen
Industrie-Rechner anstatt MVB-Controller) nicht geeignet, uA. wegen:
Das Projekt beinhaltete uA:
Tools+Spachen:
C/C++, Linux-Kernel, PtxDist, ADC, Git, CAN, RS232, Duagon IONIA, MVB, cmake
HW-Anforderungen und Embedded-Linux BSP (Bahntechnik / IOT)
Für einen Kunden aus der Bahntechnik wurde ein neues Mainboard nebst Linux-BSP entwickelt.
Das Gerät dient der Messung von Rotationsmaschinen (zB. große Dieser-Motoren) zwecks
Diagnose und vorrausschauender Wartung.
Das Projekt beinhaltete uA:
Tools+Spachen:
C/C++, Linux-Kernel, Barebox, PtxDist, ADC, Git, CAN, RS232
devops: Vollautomatisches Deployment virtueller Entwicklungsumgebungen
Für einen Sensorik-Hersteller wurde das Deployment virtualisierter Entwicklungsumgebungen
unter GNU/Linux (Debian / Ubuntu) vollständig automatisiert. Diese werden sowohl als VMImages,
Docker-/LXC-Container als auch direkt in vorhandene Systeme installiert.
Hierbei wurde auch die Deployment zahlreicher kommerzieller Software, welche sonst manuelle
Installation via GUI erfordert, vollständig automatisiert.
Vom Kunden eingesetzte kommerzielle Software läßt sich von Haus aus nicht vollautomatisch
und reproduzierbar via Paketmanagement installieren, sondern erfordern aufwändige manuelle
Installation via GUI. Zuweilen verlangt der GUI-Installer auch Internet-Zugriff oder erfordert
imensen temporäten Speicherplatz (zB. Vidado: über 30 GB!), was in der gegebenen Kunden-
Umgebung nicht möglich war.
Hier war zuweilen tiefergehende Analyse/Reverse-Engineering nötig, um einen vollautomatischen
und hinreichend performanten Installationsprozess zu entwickeln.
Tools+Spachen:
Debian, APT, Ansible, Vagrant, Jenkins, ESXI, Docker, Vivado, Modelsim, Questa, PikeOS, Codeo, Eclipse, Sigasi
Beratung/Entwicklung Embedded-Linux Gebäudetechnik
Der Kunde ist internationaler Hersteller von Gebäudeautomatisierungen, insbesondere Aufzugstechnik. Für diesen Kunden wurden zwei Projekte bzw. Geräte betreut: einerseits Aufzugssteuerung, andererseits ein externes Telemetriegerät für Monitoring und ?predictive maintenance?.
Aufzugssteuerung
Telemetriegerät (IOT)
In diesem Projekt wurde ein vorhandenes Telemetriegerät um weitere Funktionen, insbesondere ?Aufzugswärter? (externes Monitoring des Steuergeräts) und Notrufsystem, aber auch Anbindung weiterer Steuergeräte- Modelle, erweitert. (uA. zur Ablösung auslaufender Zusatzgeräte)
Tools+Spachen:
C/C++, Linux-Kernel, PtxDist, Azure, Git, Perforce, Redmine, LaTeX, RS485, CAN, RS232, cmake, javascript
HIL-Test/Werksprüfung: Gebäudetechnik / Embedded-Linux
Der Kunde ist Hersteller von Premium-Haustechnik.
In dem Projekt wurde mittels eines HIL-Testands sowohl die Werksprüfung, als auch Entwicklungstests
automatisiert. Dies wurde durch eine Kombination von Selbsttests auf dem Gerät
und externe Signalgeber/-Abnehmer realisiert.
Dabei enthalten uA.:
Tools+Spachen:
C/C++, Linux-Kernel, PtxDist, Git, RS485, CAN, RS232, cmake, Qt, GStreamer, Labview
Beratung/Entwicklung Embedded-Linux Medizintechnik
Der Kunde ist Hersteller für klinische Sterilisationsgeräte. Im Zuge des Projektes wurde die Plattform für die neuen Gerätegenerationen entwickelt.
Im Gerät befindet sich ein imx53-Rechner mit Touch-Panel, Netzwerkport (zum Anschluss ans Praxisnetz), diverse USB-Ports (Wartungsschnittstelle, Drucker-Anschluss, externer Speicher, etc) sowie CAN-Ports zur Kommunikation mit weiteren Steuerprozessoren. Über dieses findet neben der Bedienung auch Datenverfassung und Ausdruck, Monitoring, SW-Updates, udgl. statt.
Hauptaugenmerk des Projekteinsatz bestand in der Bereitstellung einer Betriebssystemumgebung und Entwicklungsinfrastruktur für og. Bedienteil, bis hin zu Deployment und Feld-Updates nebst Beratung bzgl. Wartbarkeit und Sicherheit.
Kernpunkte waren uA.:
Tools+Spachen:
LaTeX, C/C++, Linux-Kernel, ptxdist, Git, shellscript, python, cmake, GNU make, OpenGL/Mesa, Qt5, imx53, imx6
Beratung zu Entwicklungsmethoden im Embedded-Linux-Bereich (BARTEC)
Der Kunde ist Hersteller von Meß- und Erfassungstechnik für Tanklastfahrzeuge, welche u.a. im Bereich Treibstoff- als auch Nahrungsmittel-Transport eingesetzt werden. Diese mobilen Geräte können zugleich auch die erfassten Daten online zurückmelden, welche dann zT. Auch auf dessen Servern verarbeitet und zum Endkunden geliefert werden.
Da die Software-Basis (Betriebssystem, Build-Umgebung, Source control management, etc) bereits sehr veraltet ist und in naher Zukunft uA. auch ein Umstieg auf neue CPU-Architekturen ansteht, benötigte der Kunde Beratung zu konkreten Strategien für eine reibungsfreie und zugleich kosteneffiziente Umstellung, welche die Weiterpflege existierender Geräte im Feld (die Lebenszeiten liegen hier in Größenordnung von 20 Jahren!) ohne große Doppelarbeiten ermöglicht.
Im ersten Zuge bestand die Aufgabe in eine gründlichen Bestandsaufnahme der aktuellen Situation, Konsolidierung der verschiedensten Wissens-Inseln, sowie Rekonstruktion von bereits verloren gegangenem Wissen (einige kritische Bereiche, zB. die grundlegende Build- und Deployment-Architektur, Toolchains, Kernel, Bootloader, udgl. waren Wissensmonopole von längst nicht mehr vorhandenen Mitarbeitern). An dieser Stelle traten u.a. auch immense Defizite beim Source Control
Management zu Tage, welche nicht nur erhebliche vermeidbare Aufwände, sondern auch Produktionsrisiken (z.B. fehlende Versionierung der Kernel-/Bootloader-Quellen und Mangel an reproduzierbare Build-Infrastruktur für selbige) mit sich bringen.
Anschließend wurden dem Kunden konkrete Vorschläge für eine eingehende Restrukturierung der Entwicklungs-Infrastruktur unterbreitet, welche auch für die nächsten Jahrzehnte eine robuste Weiterentwicklung (uA. einfacher Wechsel von CPU-Architekturen, auch bei existierenden Geräten im Feld) bei gleichzeitiger kontinuierlicher Pflege existierender Produkt-Releases ermöglicht.
Eine weitere Baustelle stellte die Beratung bzgl. einer ausfallsicheren Server-Infrastruktur und Datentransfer-Mechanismen für die von den Endgeräten erfassten Messdaten dar.
Tools+Spachen:
Git, SVN, C/C++, Linux-Kernel, GNU make, USB
Joomla Veranstaltungskalender- und Buchung für Wohlfahrtsverband (Parisat)
Der Kunde ist eine gemeinnützige Gesellschaft, welche operative Tätigkeiten für den Thüringer Wohlfahrtsverband erledigt. Einer der Hauptaufgaben sind Schulungsveranstaltungen für die Mitglieder angeschlossenen Wohlfahrts-Organisationen.
Traditionell wurden die Terminplanungen mittels Lotus-Notes erledigt und händisch in die Joomla-basierte Website eingepflegt. Buchungen fanden manuell via eMail, Telefon oder Post ab.
Um diesen Vorgang zu automatisieren wurde ein Veranstaltungskalender mit Buchungsfunktion in der Website implementiert, welcher einerseits in der Veranstaltungen, andererseits auch bei der Buchung fachspezifische Informationen verwaltet. Zur einfachen Integration verfügt die Lösung über Import-/Export-Schnittstellen, welche uA. auch als Datenquelle für verschiedene Abteilungen, wie zB. die Print-Redaktion fungiert.
Derzeit wird - nach vielen Jahren erfolgreichem Betrieb - ein Relaunch auf aktuelle Joomla-Version und Integration mit der beim Kunden verwendeten Groupware (Exchange) realisiert.
Tools+Spachen:
PHP, Joomla, Git, iCal, SMTP, IMAP
Source-Control- und Release-Management / Git-Migration /Contigous Integration
Der Auftraggeber bietet neben Systemintegration auch tiefergehendes Customizing von OpenSource-Anwendungen und Entwicklungen von Erweiterungen für selbige (insbesondere Zimbra, OpenERP, Plone, OwnCloud).
Die einzelnen Entwicklungsteams hatten zunächst ihren Source-Code, aber auch (meist sogar manuell erzeugte!) Builds sehr unstrukturiert in einer Subversion-Repository abgelegt. Dabei mangelte es allerdings gänzlich an einer sauberen Repository-Organisation, strukturierten Entwicklungs-, Testing- und Abnahme-Prozessen, Versions-Schemata, reproduzierbaren Build-Prozessen, udgl.
Letztlich wurde SVN hier nur als unstrukturierte Datenhalde (Fileshare) mißbraucht, einzelne Entwicklungsstände konnten nicht (ohne Weiteres) definiert herausgezogen und gebaut werden. Selbstredend hat dies immense unnötige Kosten und Verzögerungen verursacht und den Entwicklungsablauf großen Risiken ausgesetzt.
In meiner Rolle als Chief Architekt habe ich diese Mißstände in mehreren Schritten bereinigt:
Git-Migration, Reproduktion der Historie
Der Source-Code der einzelnen Produkte wurde an verschiedensten Stellen im SVN-Baum abgelegt, teils mit nicht zusammenhängenden Kopien unterschiedlicher Stände, partiell als ZIP-Archive, oft mit falschen Character-Sets, sowie auch vielen nicht zum Zugehörigen Dateien (temporäre Files, Build-Outputs, fachfremende Files, etc)
Zur Bereinigung habe ich hier einzelnen Produkte jeweils in Git importiert und anschließend mit speziell entwickelten Filter-/Rewriting-Tools über die gesamte History hinweg unnötigen Ballast entfernt, falsche Codierungen korrigiert, Verzeichnis-Strukturen angepaßt und die History aus den einzelnen Fragmenten rekonstruiert.
Das Ergbnis war eine konsistente History, aus der die einzelnen Änderungen (diff?s) jederzeit sofort ersichtlich sind, sodass nun einerseits definierte Versionsstände jederzeit reproduzierbar sind, aber auch ein detailiertes Change-Review möglich ist.
Desweiteren wurden die Entwicklungs-Teams im Umgang mit Git, sowie allgemeinen Source-Control-Methodiken trainiert.
Repository-Management und Redmine-Integration
Im Vorfeld hatten lediglich einige Entwickler Zugriff auf das SVN, andere haben Ihre Stände über lokale Fileshares abgeglichen. Projektspezifische Zugriffskontrolle gab es nicht.
Selbstverständlich erzeugte dies enorme Zusatzaufwände, Verzögerungen und Fehlerquellen, welche sich als sehr teuer erwiesen.
Als Lösung habe ich hier eine Redmine-Integration implementiert, welche automatisch zentrale Git-Repositories zu den einzelnen Redmine-Projekten anlegt und die Zugriffskontrolle anhand der jeweiligen Projekt-Rollen steuert. Somit war es nun möglich, ohne manuelle Zusatzaufwände, für die einzelnen Projekte Git-Repositories zur Verfügung zu stellen und je nach Bedarf Zugriffsrechte zuzuteilen.
Branch-Policies, Versions-Schema, Release-Management
Da im Vorfeld die Entwicklungs- und Änderungsabläufe sehr unstrukturiert und schwer nachvollziehbar verliefen, habe ich für die Entwicklungsteams definierte Prozesse eingeführt.
Zunächst habe Topic-Branches (fein granulierte Tasks/Tickets und jeweils zugehörige Branches) eingeführt, sodass hier einzelne Aufgaben weitestgehend unabhängig voneinander abgearbeitet und deren Ergebnis vor Integration in den Hauptzweig begutachtet werden können. Dieser Ansatz steigerte die allgemeine Code-Qualität und verbesserte das tägliche Lernen im Job.
Desweiteren mangelte es an einer klaren Versions-Systematik, welche es anderen Beteiligten (Produktmanagement, Operating, etc) nicht erlaubte, Rückschlüsse auf die Qualität des eines Versionssprungs (zB. welche Konsequenzen und Querabhängigkeiten wären zu erwarten?) zu ziehen. Deshalb habe ich hier ein striktes ?Semantic Versioning? eingeführt,
welches sich auch in der Branch-Struktur und Change-Management niederschlug
Reproduzierbare Build-Prozesse, Paketierung, Contigious Integration
Der Entwicklung mangelte es gänzlich an definierten und automatisierten Build-Prozessen. Stattdessen wurden die Builds jeweils manuell vorgenommen, was nicht nur große Kosten und Verzögerungen, sondern auch erhebliche Risiken mit sich brachte. Ebenso mangelte es auch an automatisierbaren Deployment-Prozessen, was erhebliche Zusatzaufwände in Validierung und Operating nach sich zog.
Zur Lösung des Dilemmas habe ich zunächst für die einzelnen Produkt- Bereiche automatisierbare Build-Systeme und Paketierung implementiert, sodaß jegliche Software direkt über das Paketmanagement der jeweiligen Zielplattform ausgerollt werden kann.
Für Zimbra-Erweiterungen habe ich hier eigens das Tool ZmPkg entwickelt, welches, basierend auf der bewährten dpkg/Apt-Technologie basiert und innerhalb einer Zimbra-Umgebung eine eigenständige Paketmanagement-Infrastruktur zur Verfügung stellt.
Anschließend wurde Source-Control, Build, Paketierung mit einer Jenkins- basierten Contigious-Integration zusammengeführt, welche automatisch neue Versionsstände baut, paketiert (die Pakete dabei in Repositories ablegt), auf Testsysteme ausrollt und Tests abfährt.
Durch diese Maßnahmen wurden die Aufwände im gesamten Entwicklungsablauf, von Design über Entwicklung, Testing bishin zum Rollout/Operating um Größenordnungen (in einigen Teilen auf weniger als ein Drittel!) reduziert.
Tools+Spachen:
Zimbra, Java, Javascript, Git, Shellscript, ZmPkg, Release-Engineering, Jenkins, Dpkg, Apt
Zeitraum:
wiederkehrend, 2012..2014
Konzeption für Groupware-Integration des Elektronischen Gerichts- und Verwaltungspostfach (EGVP)
Der Endkunde ist eine öffentliche-rechtliche Körperschaft in der Rechtspflege, deren Mitglieder umfangreiche Dokumente mit den Gerichten mittels des Elektronischen Gerichts- und Verwaltungspostfach (EGVP) austauschen müssen.
Aktuell existieren hierfür nur rein Client-seitige Lösungen mit spartanischer Benutzerführung, aufwändigem Rollout (nicht automatisierbar) und Fehlen jeglicher Integrationsmöglichkeiten.
Zudem sind diese (entgegen offizieller Verlautbarungen) ausschließlich für die grundsätzlich als unsicher einzustufende Windows-Plattform benutzbar.
Im Vorfeld des Projekts wurde dem Endkunden bereits eine Zimbra-basierte Groupware-Lösung geliefert, welche er seinen Mitgliedern (und deren Mitarbeitern) zur Verfügung stellt. In diese Groupware sollte EGVP derart integriert werden, da ß es auch - ohne zusätzliche lokale Installationen - über die Web-GUI verwendet werden kann, ohne dabei die Ende-zu-Ende-Verschlüsselung zu brechen. Dabei sollen auch erweiterte Funktionen wie zB. Mailbox-Delegationen, Volltext-Suche, Termineinladungen, udgl. für EGVP nutzbar sein.
Desweiteren wurde hier eine Dokumentation der (zu diesem Zeitpunkt noch undokumentierten) Zimbra SOAP APIs für Provisionierung und Management aus externen Führungssystemen heraus geliefert.
Tools+Spachen:
Zimbra, Java, EGVP, LaTeX, SOAP, GnuPG, ZmPkg
iOTP-/iTAN-Authentizierung für Zimbra
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Für verschiedene Endkunden wird eine Multifaktor-Authentifizierung mittels iOTP (aka. iTAN) als Alternative zum existierenden OTP via SMS benötigt. Das Problem besteht hier darin, daß die SMS-Zustellung in verschiedenen Ländern nur sehr unzureichend funktioniert, sodaß hier oft die Kundenbetreuer angerufen werden müssen, um ein gültiges OTP zu erhalten. Dies sind idR. gleichzeitig auch Länder, in denen eine Postzustellung noch unzuverlässiger oder unsicherer als Telefonie/SMS ist.
Hierzu wurde als Alternative ein iOTP-Modus entwickelt, welcher kurz umrissen wie folgt agiert:
Die Implementation untergliedert sich in folgende Komponenten:
Tools+Spachen:
Zimbra, Postx, simplesamlphp, Jilter/Maillter, PHP, Java, Javascript, PostgreSQL, Shellscript, SAML, ZmPkg
Middleware zum User-Management für Zimbra und andere Anwendungen
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Für verschiedenene Endkunden waren bereits tiefergehende Zimbra-Customizations geliefert worden. Mit verschiedenen Folgeprojekten wurden diese jedoch stetig komplexer und benötigten eigene Datenbasis, welche nicht mehr sinnvoll in Zimbra-eigene Datenstrukturen (iW. LDAP) abzubilden waren. So wurde zB. für ein großes Bankhaus eine automatische Nutzer-Provisionierung (einschließlich der Nutzerbeziehungen und Zugriffsberechtigungen) aus einem Datafeed
heraus implementiert.
Außerdem bestand die Problematik, für jedes Zimbra-Upgrade bei jedem Kunden die jeweiligen Customizations auf die entsprechenden Zimbra-Versionen zu portieren. Zwar war der Aufwand durch die zuvor von mir eingeführten SCM-Methodiken schon erheblich reduziert, dennoch verblieben hier nicht unerhebliche Aufwände pro Kunde und Zimbra-Version.
An dieser Stelle habe ich ein grundlegendes Redesign vorgenommen, welches jegliche kundenspezifische Logik und Datenbasis in einer Middleware kapselt. Damit wurden die zuvor jeweils kundenspezifischen Core-Customizations durch eine generische ersetzt, welche nun bei allen Kunden gleichermaßen eingesetzt werden kann.
Die Middleware ist in Java implementiert, benötigt jedoch keine JVM. Stattdessen wird hier ein direkt ausführbares ELF-Binary erzeugt, welches als klassischer Unix-Dämon gestartet wird. Dies reduziert den Resourcen-Verbrauch erheblich, aber vereinfacht auch Build, Deployment und Betrieb.
Zur Kommunikation zwischen Middleware und Satellitensystemen (von denen Zimbranun nur eines von mehreren ist) wird einen einfaches HTTP-basiertest, REST-artiges Protokoll verwendet, welches Aufgrund seiner Einfachheit sehr einfach (uA. auch in Shellscripts) implementiert werden kann. Im Gegensatz zu klassischen Ansätzen wie zB. SOAP oder XMLRPC vereinfacht dies die Entwicklung erheblich und spart Resourcen.
Zur möglichst effizienten Code-Wiederverwendung werden im Entwicklungsverlauf stets eine generische und verschiedene kundenspezifische Branches gepflegt. Nach Möglichkeit werden neue Funktionalitäten oder zumindest die Schnittstellen generisch ausgelegt und in der generischen Branch implementiert, während die kundenspezifischen Branches - welche jeweils auf die aktuelle generische Branch rebase?ed werden und nur die rein kundenspezifischen Anpassungen enthalten. Dies gilt auch für das DB-Schema, in welchem generische und kundenspezifische Relationen in verschiedene Namensräume getrennt und fachspezifische Datenstrukturen mittels (schreibbarer) Views auf generische Abgebildet werden.
Die Implementierung erstreckt sich über folgende Komponenten:
Tools+Spachen:
Zimbra, LDAP, simplesamlphp, Java, GCJ, Javascript, PostgreSQL, Shellscript, ZmPkg
Zimbra-basierte sicher Kommunikationsplatform zur Neukundenaquise für internationale Großbank
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Für eine internationale Großbank wurde bereits im Vorfeld sichere Plattform zur Kommunikation zwischen der Bank und ihren Kunden, sowie externen Anlageberatern entwickelt. In diese galt es nun auch, potentielle Neukunden - für die Dauer der Verhandlungen - aufzunehmen.
Das fachliche Szenario stellt sich wie folgt dar:
In Ländern mit schwacher Infrastruktur bzw. dünner Siedlungsstruktur unterhält das Bankhaus idR. keine oder nur wenige Niederlassungen. Um dennoch hier Neukunden, zB. für das Anlagegeschäft, aquirieren zu können, werden diese von externen Vertretern vor Ort an Kundenberater des Bankhauses vermittelt. Diese eröffnen temporäre Zugänge zur Zimbra-Plattform, ein Aktivierungscode wird dem Neukunden über einen separaten Kanal zugestellt. Mit diesem kann jener seinen Zugang aktivieren und zugleich seine bereits erfaßten Stammdaten bestätigen bzw. korrigieren. Anschließend steht ihm die Zimbra-Plattform zur Verfügung und die Verhandlungen mit dem Kundenberater können beginnen. Nach Abschluß der Verhandlungen wird dieser temporäre Zugang wieder geschlossen und die Kommunikation archiviert.
Zusätzlich kann der Kundenberater Zusatz-Informationen, zB. den Verhandlungs-Status verwalten. Sämtliche Aktionen (zB. Zustandsänderungen, eMails, etc) werden zudem für evtl. spätere Nachprüfungen in einem Journal erfaßt.
Die Implementation dieser Funktionalität gliedert sich in verschiedene Komponenten auf:
Tools+Spachen:
LaTeX, Zimbra, Postx, simplesamlphp, Jilter/Maillter, PHP, Java, Javascript, PostgreSQL, Shellscript, ZmPkg
GNU/Linux Software Packaging und automatische Builds
Der Auftraggeber ist Anbieter für Business Cloud Lösungen und hat hier verschiedene Produkte, zB. Zimbra, Plone, Redmine, OpenERP im Portfolio. Er entwickelt diese auch weiter und paßt sie kundenspezifisch an.
Für ein einfaches und reproduzierbares Deployment habe ich hier eine stringente Paketierung eingeführt: jegliche Software (auch proprietäre Produkte, wie zB. CrashPlan) werden ausschließlich mittels Paketmanagement der jeweiligen Plattform ausgerollt ? vom Entwicklungs-Testsystem über Validierung/Preproduction bis hin zum tatsächlichen Produktivsystem.
Die verschiedenen Qualitätsstufen werden hier durch separate Repositories abgebildet.
Desweiteren wurde eine automatische Build-Infrastruktur (basierend auf Jenkins) implementiert, welche die aktuelle Codebasis vollautomatisch compiliert, paketiert, auf Testsysteme ausrollt (via Paketmanagement) und verschiedenste Tests abfährt.
Mittels dieser Infrastruktur wurden die Rollout-Zeiten (in allen Stufen, von der Entwicklung bis hin zum Produktivbetrieb) deutlich reduziert und ein hohes Maß an Reproduzierbarkeit hergestellt.
Tools+Spachen:
git, dpkg, apt, pbuilder, jenkins, rpm, yum, mock
Zeitraum:
wiederkehrend, 2012..2014
Zimbra-basierte Secure Communication Platform für internationale Großbank
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Für eine internationale Großbank wurde in mehreren Stufen eine sichere Plattform für die Kommunikation zwischen der Bank und ihren Kunden, sowie externen Anlageberatern entwickelt.
Im Gegensatz zu gängigen Groupware-Umgebungen ist diese Plattform aufgrund der verstärkten Sicherheitsanforderungen scharf abgeriegelt:
Mehrwege-Authentifizierung mittels RSA-Token
Eingeschränkte Kommunikation: Nutzer können ausschließlich nach klar definierten Beziehungen miteinander kommunizieren (zB. Kunden nur mit deren Beratern, die Berater nur innerhalb der Abteilung) - jegliche davon abweichende Kommunikationsversuche werden technisch unterbunden.
Limitierte Features: einige Standard-Features, die in diesem Szenario zu einem Sicherheitsleck werden könnten (zB. herunterladen von eMails) wurden stillgelegt.
Diese Anpassungen wurden mittels kundenspezifischer Core-Customizations gewährleistet, welche mittels Zimbra Package Manager paktiert und ausgerollt.
In einer weiteren Stufe wurden weitere Nutzertypen mit komplexeren Kommunikations-Beziehungen angebunden und diese direkt aus einer extern eingelieferten Datenquelle provisioniert.
Um den Entwicklungs- und Wartungsaufwand auch für die Zukunft gering zu halten (schließlich müssen Zimbra-Customizations vor jedem Zimbra-Upgrade zunächst entsprechend auf die neue Version angepaßt werden) haben wir eine generische Lösung über eine eigene Middleware implementiert, welche mittels einer einfachen REST-API angesprochen wird und auch die User-Provisionierung übernimmt. Die Zimbra-seitigen Erweiterungen und Core-Customizations sind derart generisch ausgelegt, da ß sie lediglich fein granulierte Nutzer-Eigenschaften von der Middleware abfragt und damit Features, Berechtigungen, etc. steuert - diese werden als eigenständiges, standardisiertes Produkt (ohne kundenspezfische Anpassungen) angeboten. Kundenspezifische Anpassungen finden damit nur noch innerhalb der Middleware statt, womit sich die Customizing-Aufwände dramatisch reduzieren.
In diesem Projekt lag die Architektur-Planung, Entwicklungsleitung/Release-Management und Implementation der Middleware in meiner Verantwortung.
Tools+Spachen:
Zimbra, Java, Javascript, PostgreSQL, Shellscript, ZmPkg
Zeitraum:
wiederkehrend, 2012..2014
Zimbra Package Management
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
In dem Bereich ist es wichtig, da ß Deployments und Upgrade von Zimbra-Erweiterungen und -Core-Customizations (kundenspezifische Anpassungen in der Kernanwendung) sicher, robust und automatisiert ablaufen, da sonst die Aufwände und Betriebsrisiken rasch kaufmännisch inretabel würden. Aber auch in der Entwicklung ist dies wichtig, um kontinuierlich konsistente Testumgebungen - ohne zusätzliche manuelle Aufwände herzustellen (contigous integration, etc).
Mit den Zimbra-Bordmitteln lä ßt sich nur eine Art von Erweiterungen - die ?Zimlets? genannten GUI Erweitungen - automatisiert installieren und entfernen. Dies ist aber auch nur unter Einschränkungen möglich: bringt ein solches ?Zimlet? beispielsweise eigene (Java-)Bibliotheken mit, werden diese zwar installiert, aber können nicht mehr bei Deinstallations des Zimlets automatisch entfernt werden. Zudem ist keine Konflikt- Prüfung bzw. -Verhinderung möglich.
Für andere Arten von Zimbra-Erweiterungen, zB. den ?Server-Extensions? (mit diesen lassen sich serverseitige Ereignisse, wie zB. neuer Maileingang oder diverse Nutzeraktionen verarbeiten) oder auch Core-Customizations (Anpassungen/Erweiterungen im Applikationskern) bietet Zimbra von Haus aus keinerlei Deployment-Mechanismus.
Damit besteht das Problem, da ß für jede (nicht-triviale) Zimbra-Erweiterung eigenens Installations-/Upgrade-/Deinstallations-Programme geschrieben werden müßten, und andererseits Administratoren nur schwer einen Überblick bekommen, welche Erweiterungen in welchen Versionen aktuell installiert sind. Dies macht das Management der Zimbra- Erweiterungen über den gesamten Lebenszyklus - von Entwicklung/Testing/Release-Management bis hin zum Produktivsystem sehr aufwändig und teuer.
Um dieses Problem an der Wurzel zu lösen, habe ich dem Auftraggeber eine Paket-Management-System für Zimbra ? ?ZMPKG? geliefert. Dieses basiert auf der bei professionellen GNU/Linux-Distributionen bewährte Paketmanagement-Technologie ?dpkg?+?apt?, agiert jedoch vom Betriebssystem unabhängig, nur innerhalb der Zimbra-Instanz. Es ist somit auch auf anderen GNU/Linux-Distributionen, nicht auf ?dpkg? basieren (zB. RedHat oder SuSE) einsetzbar - hier
werden die noch benötigten Komponenten vom Installer mitgeliefert.
ZMPKG bildet den gesamten Prozess - beginnend vom Build, bis hin zum Deployment, Upgrade und auch vollständiger Deinstallaion - ab. Der Administrator kann mit den gewohnten Werkzeugen nach Belieben Zimbra-Pakete aus dem zentralen Repositorium installieren und upgraden.
Parallel dazu wurde auch eine Jenkins-basierte automatisierte Build-/Test-Umgebung aufgesetzt, mit der von der Entwicklung kommende Änderungen automatisch übersetzt/paketiert und auf Testsysteme aufgespielt werden.
Mittels dieser Technologie wurden beim Auftraggeber die Aufwände für Entwicklung, Testing und Rollout rapide reduziert. Bisher aufwändige Deployment-Tasks wurden iW. auf einen Befehlsaufruf reduziert.
Die ZMPKG-Technologie steht als OpenSource-Produkt kostenfrei zur Verfügung.
Tools+Spachen:
Zimbra, Shellscript, dpkg, apt, rpm, GNU make
Zeitraum:
wiederkehrend, 2013, 2013
Zimbra Mail History
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Verschiedene Kunden des Auftraggebers benötigten eine Lösung mittels derer innerhalb von Zimbra der Absender einer eMail nachvollziehen kann, an welche Empfänger diese gesendet und von wem diese wann gelesen wurde. (ähnlich wie dieses zB. auch DE-Mail anbieten soll).
Die in diesem Projekt entwickelte Lösung zeichnet die einzelnen Mail-Ereignisse (gesendet, empfangen, gelesen, etc) und ordnet sie derart zu, daß der Absender den Zustellungs-/Lese-Status jederzeit bequem einsehen kann. Somit können beispielsweise bei Fristensachen die Zustellungen nachgewiesen werden.
Um einen reibungslosen Betrieb, sowohl in Cluster-Umgebungen (Zimbra läßt sich schließlich auch in einem großen Cluster mit hundertausenden bis millionen Nutzern betreiben), aber auch mit externen Weiterleitungen, zu gewährleisten, waren tiefgreifendere Anpassungen an verschiedenen Fronten nötig. Hierzu mußte einiges an R&E-Arbeit geleistet und Zimbra in der Tiefe analysiert werden.
In diesem Projekt lag die Konzeption/Architektur und Entwicklungs-Leitung, sowie große Teile der Implementation in meiner Verantwortung. Die Entwicklung wurde von einem internationalen (über verschiedene Kontinente verteilten) Team geleistet.
Tools+Spachen:
Zimbra, Java, Jilter/Maillter, Javascript, Mysql, Shellcsript, Postx, ZmPkg
Zimbra OpenERP Connector
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Um einen direkten Zugriff auf wichtige ERP-Funktionen (OpenERP) aus Zimbra heraus zu ermöglichen, wurde mit einem internationalen Team ein Connector-?Zimlet? entwickelt. Dieses ist einfach mittels Zimbra Package Manager zu installieren und kann sowohl auf OpenERP-6 als auch OpenERP-7 zugreifen.
Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.
Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:
Tools+Spachen:
Zimbra, Java, Javascript, OpenERP, Python, ZmPkg
Zimbra Plone-Connector
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Um einen direkten Zugriff auf wichtige der Plone-Portalplattform (welche der Kunde auch für sein eigenes Portal einsetzt), wie zB. schnellen Dokumenten-Upload, aus Zimbra heraus zu ermöglichen, wurde mit einem internationalen Team ein Connector-?Zimlet? entwickelt. Dieses ist einfach mittels Zimbra Package Manager zu installieren.
Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.
Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:
Tools+Spachen:
Zimbra, Java, Javascript, Plone, Python, ZmPkg
Zimbra CRM
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Da viele Zimbra-Anwender eine leichtgewichtige, in Zimbra integrierte, CRM-Lösung benötigen, ohne dabei gleich zu einer großen Lösung, wie zB. OpenERP greifen zu müssen, wurde hierfür ein eigenes ?Zimlet? entwickelt, welches grundlegende CRM-Funktionen bereitstellt. Dieses ist einfach mittels Zimbra Package Manager zu installieren.
Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.
Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:
Tools+Spachen:
Zimbra, Java, Javascript, ZmPkg, GNU make
Zimbra Owncloud Client
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Um die in Zimbra zukünftig nicht mehr vorhandene Dateiablage zu ersetzen und diese auch zentral für andere Systeme verfügbar zu machen, wurde eine Owncloud-Erweiterung entwickelt. Diese liegt zwei Varianten, Einzelnutzer (per User-Conguration) und Enterprise (zentrale LDAP-Provisionierung/Authentifizierung) vor.
Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.
Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:
Tools+Spachen:
Zimbra, Java, Javascript, ZmPkg, GNU make, OwnCloud
Embedded: Spriometrie- und EKG-Me ßcomputer für klinische Studien (ERT)
Der Kunde ist führender Anbieter für die technische Abwicklung klinischer Studien zur Medikamentenzulassung im Bereich Spirometrie (Lungenfunktionsmessung) und EKG.
Hierzu stellt er den auftraggebenen Pharma-Herstellern uA. spezialisierte Meßcomputer mit jeweils studienspezifisch angepaßter Firmware zur Verfügung. Diese Geräte werden in den an den Studien weltweit teilnehmenden Kliniken aufgestellt und vom dortigen medizinischen Personal zur Datenerfassung, Messung verwendet. Anschließend werden diese gesammelten Daten ins Rechenzentrum übertragen, weiterverarbeitet (Data-Cleaning) und dem Pharma-Hersteller zur Studienauswertung übergeben.
Mein Verantwortungsbereich lag in der Weiterentwicklung und Anpassung des Produkte ?FlowScreen? (Spirometrie) und ?CoreScreen? (EKG), sowie der Zusammenführung der verschiedener Produktlinien zu einem generischen, leicht anpaßbaren Gerät. Es handelt sich hierbei um einen ARMMX.21-basierten Computer mit eingebauter Industrie-Tastatur, Touchscreen, Drucker (HP OJ-470), mit einer Embedded-Linux-basierten Firmware.
Die erste Projektphase bestand in der Portierung der Software auf eine neue Hardware-Plattform. Insbesondere mußten hier Toolchain, Buildprozesse, Bootup, Treiber, udgl. angepaßt/portiert werden. In dem Zuge habe ich auch das Firmware- Deployment derart vereinfacht, da ß Upgrades nun auch vom Benutzer im Feld selbst durchgeführt werden können.
In der zweiten Projektphase wurden dann die ersten Studien-Entwicklungen (kundenspezifische Customizations) auf der neuen Plattform durchgeführt. Zum vereinfachten Management derartiger paralleler bzw. aufeinander basierender Entwicklungslinien habe ich zudem neue SCM-Prozesse und Tools (Git-basiert, downstream-branches, etc), sowie automatisiertes Build-/Delivery (contigious integration, etc) eingeführt. Desweiteren habe ich auch die Entwicklungs-
Infrastruktur modernisiert, um diese robuster und um ein vielfaches schneller zu gestalten.
Mit der dritten Projektphase wurden, parallel zu verschiedenen Studien-Entwicklungen wurde die Software-Plattform weitgehend modernisiert, insbesondere die vormals jeweils direkt im Quellcode stattgefundenen kundenspezifische Anpassungen durch generische Configuration/Parametrisierung abgelöst. Damit wurden die Aufwände und Zeitrahmen für die studienspezifischen Anpassungen im Schnitt um ca. 2/3 reduziert.
Insgesamt nahm das Projekt ein volles Jahr in Anspruch.
Tools+Spachen:
C/C++, Perl, GNU/Linux (incl. Kernel-Entwicklung), Git, GCC, Crosscompiler, ARM/MX.21
MySQL Geoclustering (1und1 Internet AG)
Der Kunde hat seine Hosting-Infrastruktur auf Geoclustering (Transatlantik-Spiegelung) erweitert, um seine Ausfallsicherheit und permanente Verfügbarkeit weiter zu erhöhen.
Um bei einer Umschaltung einzelner Clusterknoten unnötigen transkontinentalen Quertraffic zu vermeiden, war es nötig, einzelne Kunden-Datenbanken zwischen den Clusterknoten zu verschieben (Entmaschung), ohne jedoch den betreffenden Kunden neue Zugangsdaten zuteilen zu müssen.
Um dieses Ziel zu erreichen, wurde ein transparenter Umleitungsmechanismus implementiert, mittels dem der Kunde seine Datenbanken auch nach Umzug unter denselben Zugangsdaten erreicht. Hierzu waren auch tiefergehende Eingriffe in der MySQL-Software wie auch diversen Inhouse-Systemen erforderlich.
Dem vorraus gingen eingehende Analysen, umsicherzustellen, da ß die gewählte Lösung sowohl technisch sauber funktioniert, aber auch in der einzigartigen Größenordnung beim Massenhosting (mehrere Millionen Kunden) sicher und performant betrieben werden kann.
Parallel dazu waren noch Probleme mit DRBD zu lösen, um eine sicherere und performante Transatlantik-Spiegelung (auf Petabyte-Skala) zu ermöglichen.
Diese Arbeiten nahmen ca. 4 Monate in Anspruch.
Tools+Spachen:
C/C++, PHP, Perl, MySQL, GNU/Linux (incl. Kernel-Entwicklung), Sybase, Git, GCC, Debian Linux, Subversion, iptables, OpenVZ, DRBD
Zeitraum:
Frühjahr/Sommer 2010
Media-Portal Plattform: MediaCloud
Der Kunde betreibt seit einigen Jahren eine Community-Plattform für Künstler im Filmbereich (Schauspieler, Filmemacher, udgl.) auf Joomla-Basis, die um Video-/Musik-Upload erweitert werden sollte. Gleichzeitig sollten mehrere neue Video-Communities für verschiedenste Zielgruppen aufgebaut werden, die untereinander vernetzt sind und auf einen gemeinsamen Datenpool zugreifen.
In diesem Zuge wurde das Produkt metux MediaCloud entwickelt. Es handelt sich hierbei um eine eigenständige Server-Infrastruktur für größere Video-/Medien-Portale, die in verschiedenste Portalsysteme, wie zB. Joomla, eingebunden werden kann. Die metux MediaCloud-Infrastruktur übernimmt dabei Upload, Convertierung, Verwaltung und Wiedergabe der gesamten Mediendateien. An eine MediaCloud-Instanz können beliebig viele Portale mit individuellen Berechtigungen
angebunden werden, sodaß beispielsweise Medien eines Portals in anderen sichtbar gemacht werden können.
Im Rahmen des Projektes wurde zunächst die Server-Infrastruktur errichtet/betreut und sukzessiv 32 derartige Portale für verschiedene Zielgruppen mit diversen Zusatzfunktionen aufgebaut, beispielsweise:
Tools+Spachen:
C/C++, Plan9, Venti, PHP, Perl, PostgreSQL, Javascript, AJAX, Shellscript, Lighttpd, LAMP, Git, ffmpeg, mplayer, Flash, Red5, Nagios, Gentoo Linux, metux Media-Cloud
Virtualisierte und Redundante Serverumgebung
Der Kunde betreibt mehrere Server mit verschiedensten Anwendungen (Mailserver, Webserver, Datenbanken, eigenes Web-Portal), die für den Geschäftsbetrieb kritisch sind. Aufgrund eines bereits erfolgten Angriffs ist dem Kunden die Sicherheit besonders in den Mittelpunkt gerückt.
Um die Schadmöglichkeiten im Falle eines Angriffs auf ein Minimum zu reduzieren, wird das ganze System mittels OpenVZ virtualisiert: jeder Dienst erhält eine eigene virtuelle Umgebung. Die Software innerhalb der einzelnen VZ?s stammt nicht aus einer gängigen Distribution, sondern wird mittels der Eigenentwicklung metux Briegel Builder(siehe Projekte) für jede einzelne VZ speziell erzeugt. Dabei enthält jede VZ nur jeweils nur einen Service und ausschließlich den dafür benötigen Programmcode. Updates, regelmäßige Integritätsprüfung und automatische Wiederherstellung der einzelnen VZ?s finden vom Host-System aus statt. Das Host-System selbst ist im Normalbetrieb nicht via Internet erreichbar.
Eine nicht zu unterschätzende Herausforderung besteht in diesem Projekt darin, sämtliche benötigten Pakete für Crosscompiling/Sysroot vorzubereiten - viele Pakete sind dafür noch nicht von Haus aus geeignet.
Tools+Spachen:
C/C++, Java, Perl, Shellscript, Briegel, Sendmail, lighttpd, PHP,Apache, qMail, IMAP, POP3, LDAP, PostgreSQL, mySQL, Lighttpd, Nagios, Git, GNU/Linux
Embedded-Linux Entwicklungsplattform und Paket-Portierung
Der Kunde (aufgrund NDA nicht näher genannt) entwickelt eine ISP-Plattform zum Aufbau von öffentlichen WLAN-Netzen mittels gängigen DSL-Anschlüssen und den dort verfügbaren Endgeräten.
Dazu wird für die gängigen DSL-WLAN-Router (zB. FritzBox) eine eigene Linux-basierte Firmware mit einer Virtualisierungslösung benötigt. Existierende Distributionen/Werkzeuge (zB.Open-WRT) wurden für ungeeignet befunden.
Ich habe für dieses Projekt mein Produkt metux Briegel Builder geliefert, das sämtliche Build-Schritte - vom Herunterladen der Quellen, Patching, Compilieren in einer virtuellen Umgebung (SYSROOT) bis hin zur Paketierung und Image-Generierung - vollautomatisch ausführt.
Dazu gehören zahlreiche Anpassungen und Fixes an den verwendeten Paketen (zB. um ein sauberes Crosscompiling zu ermöglichen), für die von mir Patches geliefert wurden.
Tools+Spachen:
C/C++, GNU make, Linux-Kernel, MPLS, Crosstool, Briegel, Diffutils, CVS, Perl, Shellscript, GNU/Linux, metux Briegel
Maßgeschneiderte GNU/Linux-Firmware für WLAN-VoIP-Router
Die TU-Ilmenau entwickelte in einem Forschungsprojekt eine Infrastruktur für mobile Telefonie- und Videodienste auf Basis von gängier WLAN-Technik. Es werden dabei sowohl die Zellrouter, das MPLS-basierte Traffic-Management-System und Referenz Firmware für mobile Endgeräte entwickelt.
Meine Aufgabe bestand vor allem darin, eine möglichst schmale und optimierte GNU/Linuxbasierte Firmware auf Grundlage weltweit entwickelter Komponenten zu implementieren und zukünftig auch ständig auf dem neuesten Stand zu halten. Gängige Distributionen sind hier aufgrund der speziellen Systemanforderungen nicht geeignet.
Dank meines selbst entwickelten metux Briegel Builder war diese Aufgabe - im Vergleich zu gewohnter Handarbeit - recht unkompliziert und rasch zu meistern.
Viele der verwendeten Pakete waren noch nicht für Embedded-Systeme und Crosscompiling geeignet. Hierzu habe ich entsprechende Patches geliefert.
Wichtig war jedoch auch die Anpassung und Weiterentwicklung des Linux-Kernels. Beispielsweise waren zu diesem Zeitpunkt die MPLS+RSVP-Implementation, wie auch verschiedene WLAN-Treiber noch nicht produktiv einsetzbar. Hier habe ich dem Kunden einen produktiv benutzbaren Kernel geliefert.
Tools+Spachen:
C/C++, Perl, Java, MPLS, WLAN, Intel Geode, Crosstool, Briegel, GNU make, GNU autotools, diffutils, CVS, Subversion, Shellscript, GNU/Linux, metux Briegel
Optimierte vServer-Images für mass hosting
Der Kunde betreibt Massen-Hosting von OpenVZ-basierten virtuellen Linux-Servern. Dazu bietet er eine Reihe vorgefertigter und optimierter Images für die verschiedensten Anwendungsgebiete, zB.
Dem Kunden war bei dem Projekt wichtig, daß auch dauerhaft Updates und ggf. neue / veränderte Appliances, auch für andere Hardware-Architekturen rasch und kostengünstig geliefert werden können.
Die Images wurden mit meinem selbst entwickelten metux Briegel Builder und verschiedenen Crosscompilern erzeugt - mit diesem Werkzeug ist der Pflegeaufwand für derartige Projekte äußerst gering.
Tools+Spachen:
C/C++, Shellscript, m4, Bind, lighttpd, GNU make, GNU autotools, UUCP, Crosstool, Briegel, Sendmail, qMail, Joomla, vTiger, CVS, Subversion, GNU/Linux
Refacturing vom QMail Mailserver-Paket
Der Kunde möchte das QMail-Paket aufgesetzt bekommen und ggf. selbst administrieren. Zwar ist das QMail-Paket für seine Sicherheit berühmt, aber bisher noch extrem schwer zu installieren/ warten.
Erschwerend kommt hier hinzu, daß ein wichtiges Produktionssystem von Sendmail auf QMail umgestellt werden soll. Eine minimale Downtime und keinerlei Datenverlust sind hier unabdinglich.
Im Sinne einer längerfristig leichteren Administration und Pflege haben wir uns zunächst zu einem Refactoring des gesamten Build- und Installationsprozeß entschlossen. Dabei ist vor allem wichtig, da ß dieser ohne manuelle Eingriffe sauber in einem Zug abläuft.
Das von mir bereitgestellte Patch sorgt für einen sauberen Build- und Installations-Ablauf und macht sogar Crosscompiling möglich.
Tools+Spachen:
C/C++, GNU make, GCC, qmail, Subversion, LaTeX, GNU/Linux
Portierung von PostgreSQL auf Collax Linux Appliance
Der Kunde (anonym) ist Collax-Partner und betreut mittlerweile eine Vielzahl von Kunden mit Collax-Servern (einer Linux-basierten Business-Server Appliance mit einfach bedienbarem Web-Interface).
Trotz der Vielzahl der Funktionen mangelt es dem Collax noch an einem relationalem Datenbank-System. PostgreSQLbietet sich hier aufgrund des hohem Funktionsumfangs und guter Performance an.
Das PostgreSQL-Paket für Collax habe ich mit meinem selbst entwickelten metux Briegel Builder und einem Crosscompiler erzeugt und Patches für das saubere Crosscompiling geliefert.
Tools+Spachen:
C/C++, Perl, Javascript, Crosstool, Briegel, PostgreSQL, GNU make, GNU autotools, Subversion, GNU/Linux, Collax Business Server
Automatisierte Prüfung von Me ßgeräten
Der Kunde ist Sachverständiger für Kalibrierung von Prüfung von Druckmeßtechnik. Es wurde eine Softwarelösung für die Erfassung der Meßdaten, Erstellung von Prüfberichten sowie der Verwaltung von Kundendaten, Kundengeräten und Prüfmitteln entwickelt.
In enger Zusammenarbeit wird das Produkt nun auch für andere Meßgerätearten (z.b. Längenmeßtechnik) ausgebaut und in Kürze als Branchenlösung auf dem Markt angeboten.
Tools+Spachen:
PHP, PostgreSQL, Apache, LaTeX, Shellscript, LAMP, GNU/Linux
IT-Outsourcing für Ärzteverbände
Die beiden Ärzteverbände ?Deutsches Forum für Psychotherapie? (DPI) und die ?Vereinigung psychotherapeutisch tätiger Kassenärzte? (VPK) haben metux IT service ihre komplette EDV überantwortet.
Neben alltäglicher Wartung von EDV-Anlagen und redaktionellen Diensten zählt hierzu eine ASP-Lösung (Anwendungsdienst), mit der die Verbände ihre Mitglieder verwalten, Beiträge berechnen und sich in zahlreichen geschlossenen und offenen Mailinglisten austauschen können.
Zudem wurde eine Lösung erarbeitet, mit der die Verbände ihre Rundschreiben via Web erstellen, in Druckereiqualität automatisch setzen und anschließend sowohl als Newsletter ebenso wie als Briefpost verteilen lassen können.
Tools+Spachen:
PHP, Perl, PostgreSQL, Javascript, LaTeX, Majordomo, Java, CVS, Shellscript, LAMP, GNU/Linux
weitere Projekte gerne auf Anfrage
Abitur, Leistungskurs Informatik
Softwaremethoden / -Gebiete
Programmierwerkzeuge, Toolkits, Libraries
Enterprise- und Branchen-Produkte
Softwarepakete (incl. Entwicklung)
Web-Technologien
Forschungsgebiete
Transport-Protokolle:
TCP/IP (IPv6, IPv6, IPSEC, IPIP, route management), IPX, NetBEUI, PPP, SLIP
Anwendungs-Protokolle:
SSL, HTTP, SOAP, XMLRPC, JSONRPC, SMTP, UUCP, Streaming, SSH
Management-Protokolle:
SNMP, RADIUS, HTCPCP, BGP
Netzwerk-Filesysteme:
NFS, 9P2000, SMB, Coda
Server-Anwendungen:
Apache HTTPD, Tomcat, Jetty, NGinx, Zimbra Collaboration Suite , Sendmail, QMail, ISC
DHCP, NPFS
Architekturen/Plattformen:
intel/x86, x86_64, m68k, ppc, arm, Commodore, Embedded (zB. Router)
Interfaces:
RS282, RS485, CAN, ISA, USB, ATA/IDE, SCSI, WLAN, Ethernet, DSL, Cable, ISDN, SDH
System-on-Chip / Boards
Freescale - imx21, imx53, imx6, imx7, imx8
TI - Sitara - AM335xx
PC engines APU*
(DevOps) Vollautomatisches Deployment von Eclipse /Sigasi-Studio
Der Kunde setzt verschiedene Eclipse-Versionen und Eclipse-basierte Tools wie zB. Sigasi Studio
ein. Diese galt es vollautomatisch auf verschiedene Zielsysteme auszurollen. Jegliche manuelle
Schritte gilt es hier zu beseitigen, um unnötige Störung der Entwickler zu elimieren und eine jederzeit vollständig reproduzierbare Arbeitsumgebung zu gewährleisten.
Ein Hauptproblem bei Eclipse liegt hier darin, daß die Installation und Updates auf manuelle
Durchführung und Ablage innerhalb des Home-Verzeichnis der einzelnen Nutzers ausgelegt ist.
Dabei werden uA. auch User-Configuration mit Programmcode vermengt - eine saubere Trennung,
wie zB. in der Unix-Welt seit Jahrzehnten bewährt, fehlt hier. Dies führt zu fehlender Reproduzierbarkeit und erheblichen Störungen, insbesondere beim Parallelbetrieb verschiedener
Versionen.
Bei Sigasi-Studio kam erschwerend hinzu, daß dieses lediglich mittels interaktivem Installer
zur Online-Installation angeboten wurde. Diese ist aber im Netzwerk des Kunden aufgrund von
Sicherheitsvorgaben nicht möglich.
Zur Lösung des Problem habe ich folgende Maßnahmen ergriffen:
Tools+Spachen:
Debian, APT, Packaging, Ansible, Eclipse, Jenkins, Sigasi-Studio, Docker-Buildpackage, Docker
(DevOps) Docker-Buildpackage: Build-Automatisierung für Debian-/Ubuntu-Pakete
Das Aufsetzen einer Build-Automation für Debian-/Ubuntu-Pakete (zB. via pbuilder oder buildd)
ist mit einigem Aufwand verbunden. Dies hängt vorallem mit der historischen Entwicklung, aber auch komplexen Anwendungszenarien wie zB. der Pflege kompletter Distributionen (mit vielen tausenden Paketen) zusammen.
Für einfachere Szenarien, wie die Pflege von Zusatz-Repositories für existierende Distributionen,
zB. Backports/Updates, zusätzliche Software, kundenspezifische Anpassungen, kommerzielle
Produkte, etc. der Komplexität exitierender Tools nicht erforderlich.
Docker-Buildpackage schafft hier unter Einsatz moderner Technologien wie Docker und Git eine
sehr einfache Alternative mit minimalem Configurations-Aufwand.
Nach initialer (geringfügiger) Configuration der Zielplattform ist der komplette Build-Prozess
aus dem Quelltext heraus, bishin zur installierbaren APT-Repository, abgewickelt. Das Tool erzeugt
dabei auch vollautomatisch die benötigte Build-Umgebung und fährt den Build-Prozeß
isoliert in einem Docker-Container ab.
Auch die Integration in CI, wie zB. Jenkins, gestaltet sich trivial.
Tools+Spachen:
Debian, APT, dpkg, Docker, docker-buildpackage, CI, Jenkins, DevOps
Beratung/Entwicklung Embedded-Linux/IOT Diagnose - Bahntechnik, Hochsee-Schiffahrt, Kraftwerke
Der Kunde ist Hersteller von Sensorik und Meßtechnik. Das Projekt befaßte sich mit der OSPlattform
und SW-/System-Architektur eines Telemetrie-/Diagnose-Geräts (vorrausschauende Wartung) für rotierende Kraftmaschinen, insbesondere große Motoren und Turbinen. Es wird vorallen in den Bereichen Bahntechnik (Lokomotiven), Seefahrt (Schiffsmotoren-/Aggregate), Kraftwerke (zB. Gas-Turbinen) eingesetzt, um frühzeitig etwaige Maschinen- Schäden, lange vor einem Ausfall, erkennen zu können.
Wichtige Anforderungen sind hier uA. hohe Robustheit/Ausfallsicherheit und lange Lebenszeit
unter rauhen Bedingungen (zB. auf hoher See, in Kraftwerken, etc) geringer Wartungsaufwand,
Umgang mit schlechten Datenverbindungen. Hinzu kommen vielfältigste kundenspezifische
Anpassugen.
Kernaufgaben im Projekt waren uA.:
Tools+Spachen:
C/C++, Linux-Kernel, PtxDist, Nodejs, Barebox, ADC, Git, RS485, CAN, RS232, Duagon IONIA, MVB, cmake, javascript
Kernel / BSP für Duagon IONIA (Bahntechnik / IOT)
Für einen Kunden aus der Bahntechnik wurde ein neues Linux-BSP für Duagon IONIA Maschinen
entwickelt. Die mitgelieferte/vorinstallierte Software war für den Anwendungsfall (als generischen
Industrie-Rechner anstatt MVB-Controller) nicht geeignet, uA. wegen:
Das Projekt beinhaltete uA:
Tools+Spachen:
C/C++, Linux-Kernel, PtxDist, ADC, Git, CAN, RS232, Duagon IONIA, MVB, cmake
HW-Anforderungen und Embedded-Linux BSP (Bahntechnik / IOT)
Für einen Kunden aus der Bahntechnik wurde ein neues Mainboard nebst Linux-BSP entwickelt.
Das Gerät dient der Messung von Rotationsmaschinen (zB. große Dieser-Motoren) zwecks
Diagnose und vorrausschauender Wartung.
Das Projekt beinhaltete uA:
Tools+Spachen:
C/C++, Linux-Kernel, Barebox, PtxDist, ADC, Git, CAN, RS232
devops: Vollautomatisches Deployment virtueller Entwicklungsumgebungen
Für einen Sensorik-Hersteller wurde das Deployment virtualisierter Entwicklungsumgebungen
unter GNU/Linux (Debian / Ubuntu) vollständig automatisiert. Diese werden sowohl als VMImages,
Docker-/LXC-Container als auch direkt in vorhandene Systeme installiert.
Hierbei wurde auch die Deployment zahlreicher kommerzieller Software, welche sonst manuelle
Installation via GUI erfordert, vollständig automatisiert.
Vom Kunden eingesetzte kommerzielle Software läßt sich von Haus aus nicht vollautomatisch
und reproduzierbar via Paketmanagement installieren, sondern erfordern aufwändige manuelle
Installation via GUI. Zuweilen verlangt der GUI-Installer auch Internet-Zugriff oder erfordert
imensen temporäten Speicherplatz (zB. Vidado: über 30 GB!), was in der gegebenen Kunden-
Umgebung nicht möglich war.
Hier war zuweilen tiefergehende Analyse/Reverse-Engineering nötig, um einen vollautomatischen
und hinreichend performanten Installationsprozess zu entwickeln.
Tools+Spachen:
Debian, APT, Ansible, Vagrant, Jenkins, ESXI, Docker, Vivado, Modelsim, Questa, PikeOS, Codeo, Eclipse, Sigasi
Beratung/Entwicklung Embedded-Linux Gebäudetechnik
Der Kunde ist internationaler Hersteller von Gebäudeautomatisierungen, insbesondere Aufzugstechnik. Für diesen Kunden wurden zwei Projekte bzw. Geräte betreut: einerseits Aufzugssteuerung, andererseits ein externes Telemetriegerät für Monitoring und ?predictive maintenance?.
Aufzugssteuerung
Telemetriegerät (IOT)
In diesem Projekt wurde ein vorhandenes Telemetriegerät um weitere Funktionen, insbesondere ?Aufzugswärter? (externes Monitoring des Steuergeräts) und Notrufsystem, aber auch Anbindung weiterer Steuergeräte- Modelle, erweitert. (uA. zur Ablösung auslaufender Zusatzgeräte)
Tools+Spachen:
C/C++, Linux-Kernel, PtxDist, Azure, Git, Perforce, Redmine, LaTeX, RS485, CAN, RS232, cmake, javascript
HIL-Test/Werksprüfung: Gebäudetechnik / Embedded-Linux
Der Kunde ist Hersteller von Premium-Haustechnik.
In dem Projekt wurde mittels eines HIL-Testands sowohl die Werksprüfung, als auch Entwicklungstests
automatisiert. Dies wurde durch eine Kombination von Selbsttests auf dem Gerät
und externe Signalgeber/-Abnehmer realisiert.
Dabei enthalten uA.:
Tools+Spachen:
C/C++, Linux-Kernel, PtxDist, Git, RS485, CAN, RS232, cmake, Qt, GStreamer, Labview
Beratung/Entwicklung Embedded-Linux Medizintechnik
Der Kunde ist Hersteller für klinische Sterilisationsgeräte. Im Zuge des Projektes wurde die Plattform für die neuen Gerätegenerationen entwickelt.
Im Gerät befindet sich ein imx53-Rechner mit Touch-Panel, Netzwerkport (zum Anschluss ans Praxisnetz), diverse USB-Ports (Wartungsschnittstelle, Drucker-Anschluss, externer Speicher, etc) sowie CAN-Ports zur Kommunikation mit weiteren Steuerprozessoren. Über dieses findet neben der Bedienung auch Datenverfassung und Ausdruck, Monitoring, SW-Updates, udgl. statt.
Hauptaugenmerk des Projekteinsatz bestand in der Bereitstellung einer Betriebssystemumgebung und Entwicklungsinfrastruktur für og. Bedienteil, bis hin zu Deployment und Feld-Updates nebst Beratung bzgl. Wartbarkeit und Sicherheit.
Kernpunkte waren uA.:
Tools+Spachen:
LaTeX, C/C++, Linux-Kernel, ptxdist, Git, shellscript, python, cmake, GNU make, OpenGL/Mesa, Qt5, imx53, imx6
Beratung zu Entwicklungsmethoden im Embedded-Linux-Bereich (BARTEC)
Der Kunde ist Hersteller von Meß- und Erfassungstechnik für Tanklastfahrzeuge, welche u.a. im Bereich Treibstoff- als auch Nahrungsmittel-Transport eingesetzt werden. Diese mobilen Geräte können zugleich auch die erfassten Daten online zurückmelden, welche dann zT. Auch auf dessen Servern verarbeitet und zum Endkunden geliefert werden.
Da die Software-Basis (Betriebssystem, Build-Umgebung, Source control management, etc) bereits sehr veraltet ist und in naher Zukunft uA. auch ein Umstieg auf neue CPU-Architekturen ansteht, benötigte der Kunde Beratung zu konkreten Strategien für eine reibungsfreie und zugleich kosteneffiziente Umstellung, welche die Weiterpflege existierender Geräte im Feld (die Lebenszeiten liegen hier in Größenordnung von 20 Jahren!) ohne große Doppelarbeiten ermöglicht.
Im ersten Zuge bestand die Aufgabe in eine gründlichen Bestandsaufnahme der aktuellen Situation, Konsolidierung der verschiedensten Wissens-Inseln, sowie Rekonstruktion von bereits verloren gegangenem Wissen (einige kritische Bereiche, zB. die grundlegende Build- und Deployment-Architektur, Toolchains, Kernel, Bootloader, udgl. waren Wissensmonopole von längst nicht mehr vorhandenen Mitarbeitern). An dieser Stelle traten u.a. auch immense Defizite beim Source Control
Management zu Tage, welche nicht nur erhebliche vermeidbare Aufwände, sondern auch Produktionsrisiken (z.B. fehlende Versionierung der Kernel-/Bootloader-Quellen und Mangel an reproduzierbare Build-Infrastruktur für selbige) mit sich bringen.
Anschließend wurden dem Kunden konkrete Vorschläge für eine eingehende Restrukturierung der Entwicklungs-Infrastruktur unterbreitet, welche auch für die nächsten Jahrzehnte eine robuste Weiterentwicklung (uA. einfacher Wechsel von CPU-Architekturen, auch bei existierenden Geräten im Feld) bei gleichzeitiger kontinuierlicher Pflege existierender Produkt-Releases ermöglicht.
Eine weitere Baustelle stellte die Beratung bzgl. einer ausfallsicheren Server-Infrastruktur und Datentransfer-Mechanismen für die von den Endgeräten erfassten Messdaten dar.
Tools+Spachen:
Git, SVN, C/C++, Linux-Kernel, GNU make, USB
Joomla Veranstaltungskalender- und Buchung für Wohlfahrtsverband (Parisat)
Der Kunde ist eine gemeinnützige Gesellschaft, welche operative Tätigkeiten für den Thüringer Wohlfahrtsverband erledigt. Einer der Hauptaufgaben sind Schulungsveranstaltungen für die Mitglieder angeschlossenen Wohlfahrts-Organisationen.
Traditionell wurden die Terminplanungen mittels Lotus-Notes erledigt und händisch in die Joomla-basierte Website eingepflegt. Buchungen fanden manuell via eMail, Telefon oder Post ab.
Um diesen Vorgang zu automatisieren wurde ein Veranstaltungskalender mit Buchungsfunktion in der Website implementiert, welcher einerseits in der Veranstaltungen, andererseits auch bei der Buchung fachspezifische Informationen verwaltet. Zur einfachen Integration verfügt die Lösung über Import-/Export-Schnittstellen, welche uA. auch als Datenquelle für verschiedene Abteilungen, wie zB. die Print-Redaktion fungiert.
Derzeit wird - nach vielen Jahren erfolgreichem Betrieb - ein Relaunch auf aktuelle Joomla-Version und Integration mit der beim Kunden verwendeten Groupware (Exchange) realisiert.
Tools+Spachen:
PHP, Joomla, Git, iCal, SMTP, IMAP
Source-Control- und Release-Management / Git-Migration /Contigous Integration
Der Auftraggeber bietet neben Systemintegration auch tiefergehendes Customizing von OpenSource-Anwendungen und Entwicklungen von Erweiterungen für selbige (insbesondere Zimbra, OpenERP, Plone, OwnCloud).
Die einzelnen Entwicklungsteams hatten zunächst ihren Source-Code, aber auch (meist sogar manuell erzeugte!) Builds sehr unstrukturiert in einer Subversion-Repository abgelegt. Dabei mangelte es allerdings gänzlich an einer sauberen Repository-Organisation, strukturierten Entwicklungs-, Testing- und Abnahme-Prozessen, Versions-Schemata, reproduzierbaren Build-Prozessen, udgl.
Letztlich wurde SVN hier nur als unstrukturierte Datenhalde (Fileshare) mißbraucht, einzelne Entwicklungsstände konnten nicht (ohne Weiteres) definiert herausgezogen und gebaut werden. Selbstredend hat dies immense unnötige Kosten und Verzögerungen verursacht und den Entwicklungsablauf großen Risiken ausgesetzt.
In meiner Rolle als Chief Architekt habe ich diese Mißstände in mehreren Schritten bereinigt:
Git-Migration, Reproduktion der Historie
Der Source-Code der einzelnen Produkte wurde an verschiedensten Stellen im SVN-Baum abgelegt, teils mit nicht zusammenhängenden Kopien unterschiedlicher Stände, partiell als ZIP-Archive, oft mit falschen Character-Sets, sowie auch vielen nicht zum Zugehörigen Dateien (temporäre Files, Build-Outputs, fachfremende Files, etc)
Zur Bereinigung habe ich hier einzelnen Produkte jeweils in Git importiert und anschließend mit speziell entwickelten Filter-/Rewriting-Tools über die gesamte History hinweg unnötigen Ballast entfernt, falsche Codierungen korrigiert, Verzeichnis-Strukturen angepaßt und die History aus den einzelnen Fragmenten rekonstruiert.
Das Ergbnis war eine konsistente History, aus der die einzelnen Änderungen (diff?s) jederzeit sofort ersichtlich sind, sodass nun einerseits definierte Versionsstände jederzeit reproduzierbar sind, aber auch ein detailiertes Change-Review möglich ist.
Desweiteren wurden die Entwicklungs-Teams im Umgang mit Git, sowie allgemeinen Source-Control-Methodiken trainiert.
Repository-Management und Redmine-Integration
Im Vorfeld hatten lediglich einige Entwickler Zugriff auf das SVN, andere haben Ihre Stände über lokale Fileshares abgeglichen. Projektspezifische Zugriffskontrolle gab es nicht.
Selbstverständlich erzeugte dies enorme Zusatzaufwände, Verzögerungen und Fehlerquellen, welche sich als sehr teuer erwiesen.
Als Lösung habe ich hier eine Redmine-Integration implementiert, welche automatisch zentrale Git-Repositories zu den einzelnen Redmine-Projekten anlegt und die Zugriffskontrolle anhand der jeweiligen Projekt-Rollen steuert. Somit war es nun möglich, ohne manuelle Zusatzaufwände, für die einzelnen Projekte Git-Repositories zur Verfügung zu stellen und je nach Bedarf Zugriffsrechte zuzuteilen.
Branch-Policies, Versions-Schema, Release-Management
Da im Vorfeld die Entwicklungs- und Änderungsabläufe sehr unstrukturiert und schwer nachvollziehbar verliefen, habe ich für die Entwicklungsteams definierte Prozesse eingeführt.
Zunächst habe Topic-Branches (fein granulierte Tasks/Tickets und jeweils zugehörige Branches) eingeführt, sodass hier einzelne Aufgaben weitestgehend unabhängig voneinander abgearbeitet und deren Ergebnis vor Integration in den Hauptzweig begutachtet werden können. Dieser Ansatz steigerte die allgemeine Code-Qualität und verbesserte das tägliche Lernen im Job.
Desweiteren mangelte es an einer klaren Versions-Systematik, welche es anderen Beteiligten (Produktmanagement, Operating, etc) nicht erlaubte, Rückschlüsse auf die Qualität des eines Versionssprungs (zB. welche Konsequenzen und Querabhängigkeiten wären zu erwarten?) zu ziehen. Deshalb habe ich hier ein striktes ?Semantic Versioning? eingeführt,
welches sich auch in der Branch-Struktur und Change-Management niederschlug
Reproduzierbare Build-Prozesse, Paketierung, Contigious Integration
Der Entwicklung mangelte es gänzlich an definierten und automatisierten Build-Prozessen. Stattdessen wurden die Builds jeweils manuell vorgenommen, was nicht nur große Kosten und Verzögerungen, sondern auch erhebliche Risiken mit sich brachte. Ebenso mangelte es auch an automatisierbaren Deployment-Prozessen, was erhebliche Zusatzaufwände in Validierung und Operating nach sich zog.
Zur Lösung des Dilemmas habe ich zunächst für die einzelnen Produkt- Bereiche automatisierbare Build-Systeme und Paketierung implementiert, sodaß jegliche Software direkt über das Paketmanagement der jeweiligen Zielplattform ausgerollt werden kann.
Für Zimbra-Erweiterungen habe ich hier eigens das Tool ZmPkg entwickelt, welches, basierend auf der bewährten dpkg/Apt-Technologie basiert und innerhalb einer Zimbra-Umgebung eine eigenständige Paketmanagement-Infrastruktur zur Verfügung stellt.
Anschließend wurde Source-Control, Build, Paketierung mit einer Jenkins- basierten Contigious-Integration zusammengeführt, welche automatisch neue Versionsstände baut, paketiert (die Pakete dabei in Repositories ablegt), auf Testsysteme ausrollt und Tests abfährt.
Durch diese Maßnahmen wurden die Aufwände im gesamten Entwicklungsablauf, von Design über Entwicklung, Testing bishin zum Rollout/Operating um Größenordnungen (in einigen Teilen auf weniger als ein Drittel!) reduziert.
Tools+Spachen:
Zimbra, Java, Javascript, Git, Shellscript, ZmPkg, Release-Engineering, Jenkins, Dpkg, Apt
Zeitraum:
wiederkehrend, 2012..2014
Konzeption für Groupware-Integration des Elektronischen Gerichts- und Verwaltungspostfach (EGVP)
Der Endkunde ist eine öffentliche-rechtliche Körperschaft in der Rechtspflege, deren Mitglieder umfangreiche Dokumente mit den Gerichten mittels des Elektronischen Gerichts- und Verwaltungspostfach (EGVP) austauschen müssen.
Aktuell existieren hierfür nur rein Client-seitige Lösungen mit spartanischer Benutzerführung, aufwändigem Rollout (nicht automatisierbar) und Fehlen jeglicher Integrationsmöglichkeiten.
Zudem sind diese (entgegen offizieller Verlautbarungen) ausschließlich für die grundsätzlich als unsicher einzustufende Windows-Plattform benutzbar.
Im Vorfeld des Projekts wurde dem Endkunden bereits eine Zimbra-basierte Groupware-Lösung geliefert, welche er seinen Mitgliedern (und deren Mitarbeitern) zur Verfügung stellt. In diese Groupware sollte EGVP derart integriert werden, da ß es auch - ohne zusätzliche lokale Installationen - über die Web-GUI verwendet werden kann, ohne dabei die Ende-zu-Ende-Verschlüsselung zu brechen. Dabei sollen auch erweiterte Funktionen wie zB. Mailbox-Delegationen, Volltext-Suche, Termineinladungen, udgl. für EGVP nutzbar sein.
Desweiteren wurde hier eine Dokumentation der (zu diesem Zeitpunkt noch undokumentierten) Zimbra SOAP APIs für Provisionierung und Management aus externen Führungssystemen heraus geliefert.
Tools+Spachen:
Zimbra, Java, EGVP, LaTeX, SOAP, GnuPG, ZmPkg
iOTP-/iTAN-Authentizierung für Zimbra
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Für verschiedene Endkunden wird eine Multifaktor-Authentifizierung mittels iOTP (aka. iTAN) als Alternative zum existierenden OTP via SMS benötigt. Das Problem besteht hier darin, daß die SMS-Zustellung in verschiedenen Ländern nur sehr unzureichend funktioniert, sodaß hier oft die Kundenbetreuer angerufen werden müssen, um ein gültiges OTP zu erhalten. Dies sind idR. gleichzeitig auch Länder, in denen eine Postzustellung noch unzuverlässiger oder unsicherer als Telefonie/SMS ist.
Hierzu wurde als Alternative ein iOTP-Modus entwickelt, welcher kurz umrissen wie folgt agiert:
Die Implementation untergliedert sich in folgende Komponenten:
Tools+Spachen:
Zimbra, Postx, simplesamlphp, Jilter/Maillter, PHP, Java, Javascript, PostgreSQL, Shellscript, SAML, ZmPkg
Middleware zum User-Management für Zimbra und andere Anwendungen
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Für verschiedenene Endkunden waren bereits tiefergehende Zimbra-Customizations geliefert worden. Mit verschiedenen Folgeprojekten wurden diese jedoch stetig komplexer und benötigten eigene Datenbasis, welche nicht mehr sinnvoll in Zimbra-eigene Datenstrukturen (iW. LDAP) abzubilden waren. So wurde zB. für ein großes Bankhaus eine automatische Nutzer-Provisionierung (einschließlich der Nutzerbeziehungen und Zugriffsberechtigungen) aus einem Datafeed
heraus implementiert.
Außerdem bestand die Problematik, für jedes Zimbra-Upgrade bei jedem Kunden die jeweiligen Customizations auf die entsprechenden Zimbra-Versionen zu portieren. Zwar war der Aufwand durch die zuvor von mir eingeführten SCM-Methodiken schon erheblich reduziert, dennoch verblieben hier nicht unerhebliche Aufwände pro Kunde und Zimbra-Version.
An dieser Stelle habe ich ein grundlegendes Redesign vorgenommen, welches jegliche kundenspezifische Logik und Datenbasis in einer Middleware kapselt. Damit wurden die zuvor jeweils kundenspezifischen Core-Customizations durch eine generische ersetzt, welche nun bei allen Kunden gleichermaßen eingesetzt werden kann.
Die Middleware ist in Java implementiert, benötigt jedoch keine JVM. Stattdessen wird hier ein direkt ausführbares ELF-Binary erzeugt, welches als klassischer Unix-Dämon gestartet wird. Dies reduziert den Resourcen-Verbrauch erheblich, aber vereinfacht auch Build, Deployment und Betrieb.
Zur Kommunikation zwischen Middleware und Satellitensystemen (von denen Zimbranun nur eines von mehreren ist) wird einen einfaches HTTP-basiertest, REST-artiges Protokoll verwendet, welches Aufgrund seiner Einfachheit sehr einfach (uA. auch in Shellscripts) implementiert werden kann. Im Gegensatz zu klassischen Ansätzen wie zB. SOAP oder XMLRPC vereinfacht dies die Entwicklung erheblich und spart Resourcen.
Zur möglichst effizienten Code-Wiederverwendung werden im Entwicklungsverlauf stets eine generische und verschiedene kundenspezifische Branches gepflegt. Nach Möglichkeit werden neue Funktionalitäten oder zumindest die Schnittstellen generisch ausgelegt und in der generischen Branch implementiert, während die kundenspezifischen Branches - welche jeweils auf die aktuelle generische Branch rebase?ed werden und nur die rein kundenspezifischen Anpassungen enthalten. Dies gilt auch für das DB-Schema, in welchem generische und kundenspezifische Relationen in verschiedene Namensräume getrennt und fachspezifische Datenstrukturen mittels (schreibbarer) Views auf generische Abgebildet werden.
Die Implementierung erstreckt sich über folgende Komponenten:
Tools+Spachen:
Zimbra, LDAP, simplesamlphp, Java, GCJ, Javascript, PostgreSQL, Shellscript, ZmPkg
Zimbra-basierte sicher Kommunikationsplatform zur Neukundenaquise für internationale Großbank
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Für eine internationale Großbank wurde bereits im Vorfeld sichere Plattform zur Kommunikation zwischen der Bank und ihren Kunden, sowie externen Anlageberatern entwickelt. In diese galt es nun auch, potentielle Neukunden - für die Dauer der Verhandlungen - aufzunehmen.
Das fachliche Szenario stellt sich wie folgt dar:
In Ländern mit schwacher Infrastruktur bzw. dünner Siedlungsstruktur unterhält das Bankhaus idR. keine oder nur wenige Niederlassungen. Um dennoch hier Neukunden, zB. für das Anlagegeschäft, aquirieren zu können, werden diese von externen Vertretern vor Ort an Kundenberater des Bankhauses vermittelt. Diese eröffnen temporäre Zugänge zur Zimbra-Plattform, ein Aktivierungscode wird dem Neukunden über einen separaten Kanal zugestellt. Mit diesem kann jener seinen Zugang aktivieren und zugleich seine bereits erfaßten Stammdaten bestätigen bzw. korrigieren. Anschließend steht ihm die Zimbra-Plattform zur Verfügung und die Verhandlungen mit dem Kundenberater können beginnen. Nach Abschluß der Verhandlungen wird dieser temporäre Zugang wieder geschlossen und die Kommunikation archiviert.
Zusätzlich kann der Kundenberater Zusatz-Informationen, zB. den Verhandlungs-Status verwalten. Sämtliche Aktionen (zB. Zustandsänderungen, eMails, etc) werden zudem für evtl. spätere Nachprüfungen in einem Journal erfaßt.
Die Implementation dieser Funktionalität gliedert sich in verschiedene Komponenten auf:
Tools+Spachen:
LaTeX, Zimbra, Postx, simplesamlphp, Jilter/Maillter, PHP, Java, Javascript, PostgreSQL, Shellscript, ZmPkg
GNU/Linux Software Packaging und automatische Builds
Der Auftraggeber ist Anbieter für Business Cloud Lösungen und hat hier verschiedene Produkte, zB. Zimbra, Plone, Redmine, OpenERP im Portfolio. Er entwickelt diese auch weiter und paßt sie kundenspezifisch an.
Für ein einfaches und reproduzierbares Deployment habe ich hier eine stringente Paketierung eingeführt: jegliche Software (auch proprietäre Produkte, wie zB. CrashPlan) werden ausschließlich mittels Paketmanagement der jeweiligen Plattform ausgerollt ? vom Entwicklungs-Testsystem über Validierung/Preproduction bis hin zum tatsächlichen Produktivsystem.
Die verschiedenen Qualitätsstufen werden hier durch separate Repositories abgebildet.
Desweiteren wurde eine automatische Build-Infrastruktur (basierend auf Jenkins) implementiert, welche die aktuelle Codebasis vollautomatisch compiliert, paketiert, auf Testsysteme ausrollt (via Paketmanagement) und verschiedenste Tests abfährt.
Mittels dieser Infrastruktur wurden die Rollout-Zeiten (in allen Stufen, von der Entwicklung bis hin zum Produktivbetrieb) deutlich reduziert und ein hohes Maß an Reproduzierbarkeit hergestellt.
Tools+Spachen:
git, dpkg, apt, pbuilder, jenkins, rpm, yum, mock
Zeitraum:
wiederkehrend, 2012..2014
Zimbra-basierte Secure Communication Platform für internationale Großbank
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Für eine internationale Großbank wurde in mehreren Stufen eine sichere Plattform für die Kommunikation zwischen der Bank und ihren Kunden, sowie externen Anlageberatern entwickelt.
Im Gegensatz zu gängigen Groupware-Umgebungen ist diese Plattform aufgrund der verstärkten Sicherheitsanforderungen scharf abgeriegelt:
Mehrwege-Authentifizierung mittels RSA-Token
Eingeschränkte Kommunikation: Nutzer können ausschließlich nach klar definierten Beziehungen miteinander kommunizieren (zB. Kunden nur mit deren Beratern, die Berater nur innerhalb der Abteilung) - jegliche davon abweichende Kommunikationsversuche werden technisch unterbunden.
Limitierte Features: einige Standard-Features, die in diesem Szenario zu einem Sicherheitsleck werden könnten (zB. herunterladen von eMails) wurden stillgelegt.
Diese Anpassungen wurden mittels kundenspezifischer Core-Customizations gewährleistet, welche mittels Zimbra Package Manager paktiert und ausgerollt.
In einer weiteren Stufe wurden weitere Nutzertypen mit komplexeren Kommunikations-Beziehungen angebunden und diese direkt aus einer extern eingelieferten Datenquelle provisioniert.
Um den Entwicklungs- und Wartungsaufwand auch für die Zukunft gering zu halten (schließlich müssen Zimbra-Customizations vor jedem Zimbra-Upgrade zunächst entsprechend auf die neue Version angepaßt werden) haben wir eine generische Lösung über eine eigene Middleware implementiert, welche mittels einer einfachen REST-API angesprochen wird und auch die User-Provisionierung übernimmt. Die Zimbra-seitigen Erweiterungen und Core-Customizations sind derart generisch ausgelegt, da ß sie lediglich fein granulierte Nutzer-Eigenschaften von der Middleware abfragt und damit Features, Berechtigungen, etc. steuert - diese werden als eigenständiges, standardisiertes Produkt (ohne kundenspezfische Anpassungen) angeboten. Kundenspezifische Anpassungen finden damit nur noch innerhalb der Middleware statt, womit sich die Customizing-Aufwände dramatisch reduzieren.
In diesem Projekt lag die Architektur-Planung, Entwicklungsleitung/Release-Management und Implementation der Middleware in meiner Verantwortung.
Tools+Spachen:
Zimbra, Java, Javascript, PostgreSQL, Shellscript, ZmPkg
Zeitraum:
wiederkehrend, 2012..2014
Zimbra Package Management
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
In dem Bereich ist es wichtig, da ß Deployments und Upgrade von Zimbra-Erweiterungen und -Core-Customizations (kundenspezifische Anpassungen in der Kernanwendung) sicher, robust und automatisiert ablaufen, da sonst die Aufwände und Betriebsrisiken rasch kaufmännisch inretabel würden. Aber auch in der Entwicklung ist dies wichtig, um kontinuierlich konsistente Testumgebungen - ohne zusätzliche manuelle Aufwände herzustellen (contigous integration, etc).
Mit den Zimbra-Bordmitteln lä ßt sich nur eine Art von Erweiterungen - die ?Zimlets? genannten GUI Erweitungen - automatisiert installieren und entfernen. Dies ist aber auch nur unter Einschränkungen möglich: bringt ein solches ?Zimlet? beispielsweise eigene (Java-)Bibliotheken mit, werden diese zwar installiert, aber können nicht mehr bei Deinstallations des Zimlets automatisch entfernt werden. Zudem ist keine Konflikt- Prüfung bzw. -Verhinderung möglich.
Für andere Arten von Zimbra-Erweiterungen, zB. den ?Server-Extensions? (mit diesen lassen sich serverseitige Ereignisse, wie zB. neuer Maileingang oder diverse Nutzeraktionen verarbeiten) oder auch Core-Customizations (Anpassungen/Erweiterungen im Applikationskern) bietet Zimbra von Haus aus keinerlei Deployment-Mechanismus.
Damit besteht das Problem, da ß für jede (nicht-triviale) Zimbra-Erweiterung eigenens Installations-/Upgrade-/Deinstallations-Programme geschrieben werden müßten, und andererseits Administratoren nur schwer einen Überblick bekommen, welche Erweiterungen in welchen Versionen aktuell installiert sind. Dies macht das Management der Zimbra- Erweiterungen über den gesamten Lebenszyklus - von Entwicklung/Testing/Release-Management bis hin zum Produktivsystem sehr aufwändig und teuer.
Um dieses Problem an der Wurzel zu lösen, habe ich dem Auftraggeber eine Paket-Management-System für Zimbra ? ?ZMPKG? geliefert. Dieses basiert auf der bei professionellen GNU/Linux-Distributionen bewährte Paketmanagement-Technologie ?dpkg?+?apt?, agiert jedoch vom Betriebssystem unabhängig, nur innerhalb der Zimbra-Instanz. Es ist somit auch auf anderen GNU/Linux-Distributionen, nicht auf ?dpkg? basieren (zB. RedHat oder SuSE) einsetzbar - hier
werden die noch benötigten Komponenten vom Installer mitgeliefert.
ZMPKG bildet den gesamten Prozess - beginnend vom Build, bis hin zum Deployment, Upgrade und auch vollständiger Deinstallaion - ab. Der Administrator kann mit den gewohnten Werkzeugen nach Belieben Zimbra-Pakete aus dem zentralen Repositorium installieren und upgraden.
Parallel dazu wurde auch eine Jenkins-basierte automatisierte Build-/Test-Umgebung aufgesetzt, mit der von der Entwicklung kommende Änderungen automatisch übersetzt/paketiert und auf Testsysteme aufgespielt werden.
Mittels dieser Technologie wurden beim Auftraggeber die Aufwände für Entwicklung, Testing und Rollout rapide reduziert. Bisher aufwändige Deployment-Tasks wurden iW. auf einen Befehlsaufruf reduziert.
Die ZMPKG-Technologie steht als OpenSource-Produkt kostenfrei zur Verfügung.
Tools+Spachen:
Zimbra, Shellscript, dpkg, apt, rpm, GNU make
Zeitraum:
wiederkehrend, 2013, 2013
Zimbra Mail History
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Verschiedene Kunden des Auftraggebers benötigten eine Lösung mittels derer innerhalb von Zimbra der Absender einer eMail nachvollziehen kann, an welche Empfänger diese gesendet und von wem diese wann gelesen wurde. (ähnlich wie dieses zB. auch DE-Mail anbieten soll).
Die in diesem Projekt entwickelte Lösung zeichnet die einzelnen Mail-Ereignisse (gesendet, empfangen, gelesen, etc) und ordnet sie derart zu, daß der Absender den Zustellungs-/Lese-Status jederzeit bequem einsehen kann. Somit können beispielsweise bei Fristensachen die Zustellungen nachgewiesen werden.
Um einen reibungslosen Betrieb, sowohl in Cluster-Umgebungen (Zimbra läßt sich schließlich auch in einem großen Cluster mit hundertausenden bis millionen Nutzern betreiben), aber auch mit externen Weiterleitungen, zu gewährleisten, waren tiefgreifendere Anpassungen an verschiedenen Fronten nötig. Hierzu mußte einiges an R&E-Arbeit geleistet und Zimbra in der Tiefe analysiert werden.
In diesem Projekt lag die Konzeption/Architektur und Entwicklungs-Leitung, sowie große Teile der Implementation in meiner Verantwortung. Die Entwicklung wurde von einem internationalen (über verschiedene Kontinente verteilten) Team geleistet.
Tools+Spachen:
Zimbra, Java, Jilter/Maillter, Javascript, Mysql, Shellcsript, Postx, ZmPkg
Zimbra OpenERP Connector
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Um einen direkten Zugriff auf wichtige ERP-Funktionen (OpenERP) aus Zimbra heraus zu ermöglichen, wurde mit einem internationalen Team ein Connector-?Zimlet? entwickelt. Dieses ist einfach mittels Zimbra Package Manager zu installieren und kann sowohl auf OpenERP-6 als auch OpenERP-7 zugreifen.
Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.
Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:
Tools+Spachen:
Zimbra, Java, Javascript, OpenERP, Python, ZmPkg
Zimbra Plone-Connector
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Um einen direkten Zugriff auf wichtige der Plone-Portalplattform (welche der Kunde auch für sein eigenes Portal einsetzt), wie zB. schnellen Dokumenten-Upload, aus Zimbra heraus zu ermöglichen, wurde mit einem internationalen Team ein Connector-?Zimlet? entwickelt. Dieses ist einfach mittels Zimbra Package Manager zu installieren.
Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.
Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:
Tools+Spachen:
Zimbra, Java, Javascript, Plone, Python, ZmPkg
Zimbra CRM
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Da viele Zimbra-Anwender eine leichtgewichtige, in Zimbra integrierte, CRM-Lösung benötigen, ohne dabei gleich zu einer großen Lösung, wie zB. OpenERP greifen zu müssen, wurde hierfür ein eigenes ?Zimlet? entwickelt, welches grundlegende CRM-Funktionen bereitstellt. Dieses ist einfach mittels Zimbra Package Manager zu installieren.
Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.
Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:
Tools+Spachen:
Zimbra, Java, Javascript, ZmPkg, GNU make
Zimbra Owncloud Client
Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.
Um die in Zimbra zukünftig nicht mehr vorhandene Dateiablage zu ersetzen und diese auch zentral für andere Systeme verfügbar zu machen, wurde eine Owncloud-Erweiterung entwickelt. Diese liegt zwei Varianten, Einzelnutzer (per User-Conguration) und Enterprise (zentrale LDAP-Provisionierung/Authentifizierung) vor.
Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.
Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:
Tools+Spachen:
Zimbra, Java, Javascript, ZmPkg, GNU make, OwnCloud
Embedded: Spriometrie- und EKG-Me ßcomputer für klinische Studien (ERT)
Der Kunde ist führender Anbieter für die technische Abwicklung klinischer Studien zur Medikamentenzulassung im Bereich Spirometrie (Lungenfunktionsmessung) und EKG.
Hierzu stellt er den auftraggebenen Pharma-Herstellern uA. spezialisierte Meßcomputer mit jeweils studienspezifisch angepaßter Firmware zur Verfügung. Diese Geräte werden in den an den Studien weltweit teilnehmenden Kliniken aufgestellt und vom dortigen medizinischen Personal zur Datenerfassung, Messung verwendet. Anschließend werden diese gesammelten Daten ins Rechenzentrum übertragen, weiterverarbeitet (Data-Cleaning) und dem Pharma-Hersteller zur Studienauswertung übergeben.
Mein Verantwortungsbereich lag in der Weiterentwicklung und Anpassung des Produkte ?FlowScreen? (Spirometrie) und ?CoreScreen? (EKG), sowie der Zusammenführung der verschiedener Produktlinien zu einem generischen, leicht anpaßbaren Gerät. Es handelt sich hierbei um einen ARMMX.21-basierten Computer mit eingebauter Industrie-Tastatur, Touchscreen, Drucker (HP OJ-470), mit einer Embedded-Linux-basierten Firmware.
Die erste Projektphase bestand in der Portierung der Software auf eine neue Hardware-Plattform. Insbesondere mußten hier Toolchain, Buildprozesse, Bootup, Treiber, udgl. angepaßt/portiert werden. In dem Zuge habe ich auch das Firmware- Deployment derart vereinfacht, da ß Upgrades nun auch vom Benutzer im Feld selbst durchgeführt werden können.
In der zweiten Projektphase wurden dann die ersten Studien-Entwicklungen (kundenspezifische Customizations) auf der neuen Plattform durchgeführt. Zum vereinfachten Management derartiger paralleler bzw. aufeinander basierender Entwicklungslinien habe ich zudem neue SCM-Prozesse und Tools (Git-basiert, downstream-branches, etc), sowie automatisiertes Build-/Delivery (contigious integration, etc) eingeführt. Desweiteren habe ich auch die Entwicklungs-
Infrastruktur modernisiert, um diese robuster und um ein vielfaches schneller zu gestalten.
Mit der dritten Projektphase wurden, parallel zu verschiedenen Studien-Entwicklungen wurde die Software-Plattform weitgehend modernisiert, insbesondere die vormals jeweils direkt im Quellcode stattgefundenen kundenspezifische Anpassungen durch generische Configuration/Parametrisierung abgelöst. Damit wurden die Aufwände und Zeitrahmen für die studienspezifischen Anpassungen im Schnitt um ca. 2/3 reduziert.
Insgesamt nahm das Projekt ein volles Jahr in Anspruch.
Tools+Spachen:
C/C++, Perl, GNU/Linux (incl. Kernel-Entwicklung), Git, GCC, Crosscompiler, ARM/MX.21
MySQL Geoclustering (1und1 Internet AG)
Der Kunde hat seine Hosting-Infrastruktur auf Geoclustering (Transatlantik-Spiegelung) erweitert, um seine Ausfallsicherheit und permanente Verfügbarkeit weiter zu erhöhen.
Um bei einer Umschaltung einzelner Clusterknoten unnötigen transkontinentalen Quertraffic zu vermeiden, war es nötig, einzelne Kunden-Datenbanken zwischen den Clusterknoten zu verschieben (Entmaschung), ohne jedoch den betreffenden Kunden neue Zugangsdaten zuteilen zu müssen.
Um dieses Ziel zu erreichen, wurde ein transparenter Umleitungsmechanismus implementiert, mittels dem der Kunde seine Datenbanken auch nach Umzug unter denselben Zugangsdaten erreicht. Hierzu waren auch tiefergehende Eingriffe in der MySQL-Software wie auch diversen Inhouse-Systemen erforderlich.
Dem vorraus gingen eingehende Analysen, umsicherzustellen, da ß die gewählte Lösung sowohl technisch sauber funktioniert, aber auch in der einzigartigen Größenordnung beim Massenhosting (mehrere Millionen Kunden) sicher und performant betrieben werden kann.
Parallel dazu waren noch Probleme mit DRBD zu lösen, um eine sicherere und performante Transatlantik-Spiegelung (auf Petabyte-Skala) zu ermöglichen.
Diese Arbeiten nahmen ca. 4 Monate in Anspruch.
Tools+Spachen:
C/C++, PHP, Perl, MySQL, GNU/Linux (incl. Kernel-Entwicklung), Sybase, Git, GCC, Debian Linux, Subversion, iptables, OpenVZ, DRBD
Zeitraum:
Frühjahr/Sommer 2010
Media-Portal Plattform: MediaCloud
Der Kunde betreibt seit einigen Jahren eine Community-Plattform für Künstler im Filmbereich (Schauspieler, Filmemacher, udgl.) auf Joomla-Basis, die um Video-/Musik-Upload erweitert werden sollte. Gleichzeitig sollten mehrere neue Video-Communities für verschiedenste Zielgruppen aufgebaut werden, die untereinander vernetzt sind und auf einen gemeinsamen Datenpool zugreifen.
In diesem Zuge wurde das Produkt metux MediaCloud entwickelt. Es handelt sich hierbei um eine eigenständige Server-Infrastruktur für größere Video-/Medien-Portale, die in verschiedenste Portalsysteme, wie zB. Joomla, eingebunden werden kann. Die metux MediaCloud-Infrastruktur übernimmt dabei Upload, Convertierung, Verwaltung und Wiedergabe der gesamten Mediendateien. An eine MediaCloud-Instanz können beliebig viele Portale mit individuellen Berechtigungen
angebunden werden, sodaß beispielsweise Medien eines Portals in anderen sichtbar gemacht werden können.
Im Rahmen des Projektes wurde zunächst die Server-Infrastruktur errichtet/betreut und sukzessiv 32 derartige Portale für verschiedene Zielgruppen mit diversen Zusatzfunktionen aufgebaut, beispielsweise:
Tools+Spachen:
C/C++, Plan9, Venti, PHP, Perl, PostgreSQL, Javascript, AJAX, Shellscript, Lighttpd, LAMP, Git, ffmpeg, mplayer, Flash, Red5, Nagios, Gentoo Linux, metux Media-Cloud
Virtualisierte und Redundante Serverumgebung
Der Kunde betreibt mehrere Server mit verschiedensten Anwendungen (Mailserver, Webserver, Datenbanken, eigenes Web-Portal), die für den Geschäftsbetrieb kritisch sind. Aufgrund eines bereits erfolgten Angriffs ist dem Kunden die Sicherheit besonders in den Mittelpunkt gerückt.
Um die Schadmöglichkeiten im Falle eines Angriffs auf ein Minimum zu reduzieren, wird das ganze System mittels OpenVZ virtualisiert: jeder Dienst erhält eine eigene virtuelle Umgebung. Die Software innerhalb der einzelnen VZ?s stammt nicht aus einer gängigen Distribution, sondern wird mittels der Eigenentwicklung metux Briegel Builder(siehe Projekte) für jede einzelne VZ speziell erzeugt. Dabei enthält jede VZ nur jeweils nur einen Service und ausschließlich den dafür benötigen Programmcode. Updates, regelmäßige Integritätsprüfung und automatische Wiederherstellung der einzelnen VZ?s finden vom Host-System aus statt. Das Host-System selbst ist im Normalbetrieb nicht via Internet erreichbar.
Eine nicht zu unterschätzende Herausforderung besteht in diesem Projekt darin, sämtliche benötigten Pakete für Crosscompiling/Sysroot vorzubereiten - viele Pakete sind dafür noch nicht von Haus aus geeignet.
Tools+Spachen:
C/C++, Java, Perl, Shellscript, Briegel, Sendmail, lighttpd, PHP,Apache, qMail, IMAP, POP3, LDAP, PostgreSQL, mySQL, Lighttpd, Nagios, Git, GNU/Linux
Embedded-Linux Entwicklungsplattform und Paket-Portierung
Der Kunde (aufgrund NDA nicht näher genannt) entwickelt eine ISP-Plattform zum Aufbau von öffentlichen WLAN-Netzen mittels gängigen DSL-Anschlüssen und den dort verfügbaren Endgeräten.
Dazu wird für die gängigen DSL-WLAN-Router (zB. FritzBox) eine eigene Linux-basierte Firmware mit einer Virtualisierungslösung benötigt. Existierende Distributionen/Werkzeuge (zB.Open-WRT) wurden für ungeeignet befunden.
Ich habe für dieses Projekt mein Produkt metux Briegel Builder geliefert, das sämtliche Build-Schritte - vom Herunterladen der Quellen, Patching, Compilieren in einer virtuellen Umgebung (SYSROOT) bis hin zur Paketierung und Image-Generierung - vollautomatisch ausführt.
Dazu gehören zahlreiche Anpassungen und Fixes an den verwendeten Paketen (zB. um ein sauberes Crosscompiling zu ermöglichen), für die von mir Patches geliefert wurden.
Tools+Spachen:
C/C++, GNU make, Linux-Kernel, MPLS, Crosstool, Briegel, Diffutils, CVS, Perl, Shellscript, GNU/Linux, metux Briegel
Maßgeschneiderte GNU/Linux-Firmware für WLAN-VoIP-Router
Die TU-Ilmenau entwickelte in einem Forschungsprojekt eine Infrastruktur für mobile Telefonie- und Videodienste auf Basis von gängier WLAN-Technik. Es werden dabei sowohl die Zellrouter, das MPLS-basierte Traffic-Management-System und Referenz Firmware für mobile Endgeräte entwickelt.
Meine Aufgabe bestand vor allem darin, eine möglichst schmale und optimierte GNU/Linuxbasierte Firmware auf Grundlage weltweit entwickelter Komponenten zu implementieren und zukünftig auch ständig auf dem neuesten Stand zu halten. Gängige Distributionen sind hier aufgrund der speziellen Systemanforderungen nicht geeignet.
Dank meines selbst entwickelten metux Briegel Builder war diese Aufgabe - im Vergleich zu gewohnter Handarbeit - recht unkompliziert und rasch zu meistern.
Viele der verwendeten Pakete waren noch nicht für Embedded-Systeme und Crosscompiling geeignet. Hierzu habe ich entsprechende Patches geliefert.
Wichtig war jedoch auch die Anpassung und Weiterentwicklung des Linux-Kernels. Beispielsweise waren zu diesem Zeitpunkt die MPLS+RSVP-Implementation, wie auch verschiedene WLAN-Treiber noch nicht produktiv einsetzbar. Hier habe ich dem Kunden einen produktiv benutzbaren Kernel geliefert.
Tools+Spachen:
C/C++, Perl, Java, MPLS, WLAN, Intel Geode, Crosstool, Briegel, GNU make, GNU autotools, diffutils, CVS, Subversion, Shellscript, GNU/Linux, metux Briegel
Optimierte vServer-Images für mass hosting
Der Kunde betreibt Massen-Hosting von OpenVZ-basierten virtuellen Linux-Servern. Dazu bietet er eine Reihe vorgefertigter und optimierter Images für die verschiedensten Anwendungsgebiete, zB.
Dem Kunden war bei dem Projekt wichtig, daß auch dauerhaft Updates und ggf. neue / veränderte Appliances, auch für andere Hardware-Architekturen rasch und kostengünstig geliefert werden können.
Die Images wurden mit meinem selbst entwickelten metux Briegel Builder und verschiedenen Crosscompilern erzeugt - mit diesem Werkzeug ist der Pflegeaufwand für derartige Projekte äußerst gering.
Tools+Spachen:
C/C++, Shellscript, m4, Bind, lighttpd, GNU make, GNU autotools, UUCP, Crosstool, Briegel, Sendmail, qMail, Joomla, vTiger, CVS, Subversion, GNU/Linux
Refacturing vom QMail Mailserver-Paket
Der Kunde möchte das QMail-Paket aufgesetzt bekommen und ggf. selbst administrieren. Zwar ist das QMail-Paket für seine Sicherheit berühmt, aber bisher noch extrem schwer zu installieren/ warten.
Erschwerend kommt hier hinzu, daß ein wichtiges Produktionssystem von Sendmail auf QMail umgestellt werden soll. Eine minimale Downtime und keinerlei Datenverlust sind hier unabdinglich.
Im Sinne einer längerfristig leichteren Administration und Pflege haben wir uns zunächst zu einem Refactoring des gesamten Build- und Installationsprozeß entschlossen. Dabei ist vor allem wichtig, da ß dieser ohne manuelle Eingriffe sauber in einem Zug abläuft.
Das von mir bereitgestellte Patch sorgt für einen sauberen Build- und Installations-Ablauf und macht sogar Crosscompiling möglich.
Tools+Spachen:
C/C++, GNU make, GCC, qmail, Subversion, LaTeX, GNU/Linux
Portierung von PostgreSQL auf Collax Linux Appliance
Der Kunde (anonym) ist Collax-Partner und betreut mittlerweile eine Vielzahl von Kunden mit Collax-Servern (einer Linux-basierten Business-Server Appliance mit einfach bedienbarem Web-Interface).
Trotz der Vielzahl der Funktionen mangelt es dem Collax noch an einem relationalem Datenbank-System. PostgreSQLbietet sich hier aufgrund des hohem Funktionsumfangs und guter Performance an.
Das PostgreSQL-Paket für Collax habe ich mit meinem selbst entwickelten metux Briegel Builder und einem Crosscompiler erzeugt und Patches für das saubere Crosscompiling geliefert.
Tools+Spachen:
C/C++, Perl, Javascript, Crosstool, Briegel, PostgreSQL, GNU make, GNU autotools, Subversion, GNU/Linux, Collax Business Server
Automatisierte Prüfung von Me ßgeräten
Der Kunde ist Sachverständiger für Kalibrierung von Prüfung von Druckmeßtechnik. Es wurde eine Softwarelösung für die Erfassung der Meßdaten, Erstellung von Prüfberichten sowie der Verwaltung von Kundendaten, Kundengeräten und Prüfmitteln entwickelt.
In enger Zusammenarbeit wird das Produkt nun auch für andere Meßgerätearten (z.b. Längenmeßtechnik) ausgebaut und in Kürze als Branchenlösung auf dem Markt angeboten.
Tools+Spachen:
PHP, PostgreSQL, Apache, LaTeX, Shellscript, LAMP, GNU/Linux
IT-Outsourcing für Ärzteverbände
Die beiden Ärzteverbände ?Deutsches Forum für Psychotherapie? (DPI) und die ?Vereinigung psychotherapeutisch tätiger Kassenärzte? (VPK) haben metux IT service ihre komplette EDV überantwortet.
Neben alltäglicher Wartung von EDV-Anlagen und redaktionellen Diensten zählt hierzu eine ASP-Lösung (Anwendungsdienst), mit der die Verbände ihre Mitglieder verwalten, Beiträge berechnen und sich in zahlreichen geschlossenen und offenen Mailinglisten austauschen können.
Zudem wurde eine Lösung erarbeitet, mit der die Verbände ihre Rundschreiben via Web erstellen, in Druckereiqualität automatisch setzen und anschließend sowohl als Newsletter ebenso wie als Briefpost verteilen lassen können.
Tools+Spachen:
PHP, Perl, PostgreSQL, Javascript, LaTeX, Majordomo, Java, CVS, Shellscript, LAMP, GNU/Linux
weitere Projekte gerne auf Anfrage
Abitur, Leistungskurs Informatik
Softwaremethoden / -Gebiete
Programmierwerkzeuge, Toolkits, Libraries
Enterprise- und Branchen-Produkte
Softwarepakete (incl. Entwicklung)
Web-Technologien
Forschungsgebiete
Transport-Protokolle:
TCP/IP (IPv6, IPv6, IPSEC, IPIP, route management), IPX, NetBEUI, PPP, SLIP
Anwendungs-Protokolle:
SSL, HTTP, SOAP, XMLRPC, JSONRPC, SMTP, UUCP, Streaming, SSH
Management-Protokolle:
SNMP, RADIUS, HTCPCP, BGP
Netzwerk-Filesysteme:
NFS, 9P2000, SMB, Coda
Server-Anwendungen:
Apache HTTPD, Tomcat, Jetty, NGinx, Zimbra Collaboration Suite , Sendmail, QMail, ISC
DHCP, NPFS
Architekturen/Plattformen:
intel/x86, x86_64, m68k, ppc, arm, Commodore, Embedded (zB. Router)
Interfaces:
RS282, RS485, CAN, ISA, USB, ATA/IDE, SCSI, WLAN, Ethernet, DSL, Cable, ISDN, SDH
System-on-Chip / Boards
Freescale - imx21, imx53, imx6, imx7, imx8
TI - Sitara - AM335xx
PC engines APU*
Direktester geht's nicht! Ganz einfach Freelancer finden und direkt Kontakt aufnehmen.