Bewährte Fachlichkeit auf einer neuen technologischen Basis
Wenn Sie eine geschäftskritische Enterprise-Anwendung einsetzen, erwarten Sie vor allem eines: Sie muss zuverlässig funktionieren. Heute, morgen und auch noch in vielen Jahren.
RKA und RKA² unterstützen Unternehmen seit den 1990er-Jahren bei der Reisekostenabrechnung. In dieser Zeit sind weit mehr als gesetzliche Änderungen in die Anwendung eingeflossen – komplexe Reiserichtlinien, Genehmigungsprozesse, die Integration in HR-, Finanz- und Buchhaltungssysteme. Dieses Fachwissen bleibt erhalten. Verändert hat sich die technische Grundlage darunter: Wir haben sie grundlegend modernisiert.
Nach einer ausführlichen Bewertung verschiedener Technologien haben wir uns für Rust entschieden. Für Sie als Kunde heißt das konkret: mehr technische Sicherheit, ein effizienterer Betrieb und eine Basis, auf der sich RKA² gezielt weiterentwickeln lässt.
Von C++ über Java zu Rust
Die ursprüngliche RKA-Anwendung entstand in C++ – mit hoher Ausführungsgeschwindigkeit und präziser Kontrolle über die Systemressourcen. 2001 migrierten wir nach Java, damals die konsequente Wahl für Enterprise-Software: Plattformunabhängigkeit, automatische Speicherverwaltung, ein großes Ökosystem.
Beide Technologien haben RKA² über lange Zeit zuverlässig getragen. Doch die Anforderungen an geschäftskritische Software sind gestiegen: Anwendungen laufen zunehmend in der Cloud, Sicherheitsanforderungen wachsen kontinuierlich, Schnittstellen und Geschäftsprozesse werden komplexer. Gleichzeitig sollen neue Funktionen schneller bereitstehen, Ressourcen wirtschaftlicher genutzt werden und die Software auch in zehn Jahren noch wartbar sein.
2022 haben wir deshalb begonnen, die technologische Zukunft von RKA² neu zu bewerten.
Warum wir Java nicht einfach weiterverwendet haben
Java ist eine statisch typisierte und grundsätzlich bewährte Sprache. In der Praxis gibt es trotzdem Fehlerklassen, die erst zur Laufzeit sichtbar werden. Ein Beispiel: Hinter einer Objektreferenz kann sich unerwartet null verbergen. Wird dieser Fall nicht an jeder Stelle berücksichtigt, entsteht eine NullPointerException. Auch bestimmte Typumwandlungen scheitern erst zur Laufzeit – der Code kompiliert erfolgreich, obwohl die Anwendung später auf eine unzulässige Typkombination trifft.
Gute Entwicklungsprozesse und Tests reduzieren solche Fehler. Aus Kundensicht bleibt trotzdem die Frage: Warum sollten wir uns ausschließlich auf nachträgliche Tests verlassen, wenn die Programmiersprache bestimmte Fehler bereits vor der Ausführung verhindern kann? Genau an diesem Punkt setzt Rust an.
Fehlerbehandlung: transparent statt überraschend
Java kennt geprüfte und ungeprüfte Exceptions. Geprüfte müssen ausdrücklich behandelt oder weitergereicht werden, ungeprüfte können dagegen auftreten, ohne dass dies an der Funktionsschnittstelle erkennbar wäre. In großen Anwendungen wächst daraus leicht ein Geflecht aus try-catch-Blöcken und weitergereichten Exceptions, bei dem nicht mehr auf den ersten Blick klar ist, welche Fehler eine Operation überhaupt auslösen kann.
Rust geht einen anderen Weg: Erwartbare Fehler sind reguläres Ergebnis einer Operation. Eine Funktion liefert entweder einen Erfolgswert oder einen definierten Fehler – und der Compiler besteht darauf, dass beide Fälle behandelt werden.
Das bedeutet für Sie: Fehlerfälle sind bewusst modelliert statt nachträglich abgefangen, Schnittstellen sind eindeutig, unerwartete Programmabbrüche werden seltener, und kritische Abläufe lassen sich im Nachhinein besser nachvollziehen. Fehlerbehandlung ist damit fester Bestandteil der Anwendung, kein Zusatz.
Go oder Rust?
Bei der Neuausrichtung 2022 haben wir vor allem Go und Rust geprüft. Go ist pragmatisch, bewusst einfach gehalten und eine sehr gute Wahl für Cloud-Dienste und kompakte Microservices. Rust verlangt den Entwicklern mehr ab – bietet dafür aber ein deutlich ausdrucksstärkeres Typsystem und weitreichendere Prüfungen durch den Compiler.
Den Ausschlag gab am Ende die starke Typisierung. Gerade bei einer Anwendung, die finanzielle Vorgänge, gesetzliche Regeln und unternehmensspezifische Richtlinien verarbeitet, ist diese zusätzliche Absicherung nicht bloß nett zu haben, sondern zahlt sich direkt aus.
Was starke Typisierung für Ihre Reisekostenabrechnung bedeutet
Starke Typisierung klingt zunächst nach einem rein technischen Thema, der Nutzen ist aber schnell erklärt: Unterschiedliche fachliche Sachverhalte lassen sich so modellieren, dass sie nicht versehentlich verwechselt werden können. Ein Betrag ist keine beliebige Zahl, eine Währung kein bloßer Text, ein geprüfter Vorgang etwas anderes als ein Entwurf – und eine fehlende Angabe ein eigener Zustand, kein Sonderfall von „irgendetwas“.
Rust bildet solche Unterschiede direkt im Programm ab. Bestimmte ungültige Zustände können dadurch gar nicht erst entstehen oder müssen ausdrücklich behandelt werden. Vieles davon erkennt der Compiler, bevor eine neue RKA²-Version überhaupt ausgeliefert wird. Für Sie als Kunde ergeben sich daraus fünf konkrete Vorteile.
Höhere Zuverlässigkeit. Viele Fehlerklassen werden bereits während der Entwicklung sichtbar – und gelangen seltener in Test- oder Produktivsysteme.
Sicherere Weiterentwicklung. Ändern wir eine Regel oder ergänzen eine Funktion, zeigt der Compiler, welche Teile der Anwendung davon betroffen sind. Das macht Änderungen kontrollierbarer, nicht langsamer.
Klarere Geschäftslogik. Fachliche Zustände und Regeln stehen präzise im Code – das erleichtert die Wartung und macht die Anwendung unabhängiger von implizitem Wissen einzelner Entwickler.
Auch bei Fehlerfällen zahlt sich das aus: Sie sind Teil der jeweiligen Schnittstelle, müssen bewusst behandelt werden und lassen sich entsprechend schwerer übersehen.
Mehr Sicherheit bei sensiblen Daten. Reisekostenabrechnungen enthalten Beschäftigtendaten, Reiseziele, Belege, Kostenstellen, teils auch Zahlungsdaten. Verantwortungsvoller Umgang damit ist mehr als eine Frage der Programmiersprache – Architektur, Zugriffskonzepte, Verschlüsselung und sichere Betriebsprozesse tragen den Großteil davon. Rust liefert dazu ein zusätzliches Fundament: Es verhindert zahlreiche typische Speicherfehler bereits während der Entwicklung, und auch Risiken bei paralleler Datenverarbeitung erkennt der Compiler frühzeitig. Das verkleinert die Angriffsfläche und macht robustere Dienste möglich.
Effizienter Betrieb in der Cloud
Cloud-Betrieb ist nicht automatisch günstig – entscheidend ist, wie sparsam eine Anwendung mit Rechenleistung und Speicher umgeht. Rust braucht weder eine schwergewichtige Laufzeitumgebung noch einen Garbage Collector. Anwendungen starten schnell und nutzen Ressourcen gezielt.
Für Sie bedeutet das effizientere Cloud-Ressourcen, gute Skalierbarkeit bei wechselnder Auslastung, kurze Startzeiten neuer Instanzen und ein vorhersehbares Laufzeitverhalten – auch bei steigenden Nutzungszahlen. Wie viel sich das konkret einspart, hängt vom jeweiligen Einsatzszenario ab. Rust schafft aber die technische Voraussetzung dafür, dass Performance und Ressourceneffizienz von Anfang an mitgedacht sind, statt nachträglich optimiert zu werden.
Bleiben meine bewährten Prozesse erhalten?
Ja. Die Modernisierung betrifft die technische Grundlage, nicht den Wert der über Jahrzehnte entwickelten Fachlichkeit. RKA² bleibt eine Enterprise-Lösung für die Reisekostenabrechnung – mit umfangreichen fachlichen Validierungen, unternehmensspezifischen Reiserichtlinien, Genehmigungs- und Freigabeprozessen sowie nachvollziehbaren Abrechnungen. Integrationen in bestehende Unternehmenssysteme und die Unterstützung komplexer Organisationsstrukturen gehören ebenso weiterhin dazu.
Unser Ziel ist nicht, bewährte Prozesse ohne Grund zu verändern, sondern die technologische Grundlage zu schaffen, um sie auch künftig zuverlässig abzubilden – und gezielt weiterzuentwickeln, wo es nötig ist.
Was die Modernisierung für Ihre Investition bedeutet
Die Einführung einer Enterprise-Anwendung ist eine langfristige Entscheidung. Sie investieren nicht nur in Software, sondern in Prozesse, Konfigurationen, Schnittstellen und das Wissen Ihrer Mitarbeiter. Modernisierung muss diese Investition schützen, nicht gefährden.
Mit der Umstellung auf Rust verbinden wir die bewährte Fachlichkeit von RKA² mit einer zeitgemäßen technischen Basis. Das schafft Raum für neue Anforderungen, ohne die vorhandene Anwendungsgeschichte zu verwerfen – konkret: Kontinuität bei den Geschäftsprozessen, eine langfristig wartbare Softwarebasis, kontrollierbare technologische Weiterentwicklung und bessere Voraussetzungen für moderne Integrationen sowie sichere, wirtschaftliche Cloud-Dienste.
Zukunftsfähigkeit ist mehr als eine neue Programmiersprache
Rust allein macht eine Anwendung nicht zukunftsfähig – entscheidend ist, wie die Sprache eingesetzt wird. Dazu gehören eine klare Architektur, automatisierte Tests, nachvollziehbare Schnittstellen und ein kontrollierter Migrationsprozess, ebenso wie das fachliche Verständnis der Reisekostenabrechnung selbst. Genau diese Verbindung ist unsere Stärke: jahrzehntelange Erfahrung mit Enterprise-Reiseprozessen, gepaart mit einer modernen technologischen Grundlage.
Unser Versprechen an unsere Kunden
C++ gab RKA die nötige Kontrolle und Performance. Java brachte Plattformunabhängigkeit und eine zeitgemäße Enterprise-Architektur. Rust verbindet nun beides – Effizienz und eine besonders konsequente Absicherung durch das Typsystem.
Sie erhalten damit nicht einfach eine Anwendung in einer neuen Programmiersprache. Sie erhalten die bewährte Fachlichkeit von RKA² auf einer sicheren, effizienten und langfristig weiterentwickelbaren Plattform.
Deshalb ist Rust für uns die Zukunft – und für Sie die Grundlage einer verlässlichen Reisekostenabrechnung von morgen.