Remote Development Environments (RDEs)

Problem
Entwickler_innen verlieren sehr viel Zeit, die lokale Entwicklungsumgebung aufzusetzen und kämpfen regelmäßig mit Kompitabilitätsproblemen. Tatsächlich ist regelmäßiges Troubleshooting eines der Hauptprobleme von Entwickler_innen. Das frisst Zeit, Ressourcen und verringert die Produktivität.
Lösung
Remote Development Environments (RDEs) sind standardisierte und ohne Einrichtungszeit sofort verfügbare Remote-Umgebungen. Entwickler_innen stehen sofort alle für ihre Arbeit notwendigen Tools zur Verfügung und erhalten die Rechenleistung, die sie für ressourcenintensive Aufgaben benötigen.
Das Problem
- Das initiale Aufsetzen der lokalen Entwicklungsumgebung dauert.
Onboarding von Softwareentwickler_innen oder ein Gerätewechsel ist schwierig. - Unterschiede in der lokalen Entwicklungsumgebung je Entwickler_in beeinträchtigen die Produktivität. Dadurch muss viel Zeit für die individuelle Problembehandlung aufgewendet werden.
- Leistungsstarkes und teures Equipment wird benötigt, um Anwendungen lokal verwenden zu können (Die eigene Software, Testing Tools etc.).
- Produktivitätseinbußen, weil auf Tests, Builds o. ä. gewartet werden muss. Versions- / Branchwechsel ist zeitaufwändig, da beispielsweise alle Abhängigkeiten neu eingerichtet werden müssen.
- Der Source Code ist lokal und unsicher gespeichert.
Die Lösung
- Remote Development Environments, die zentralisiert vom DevOps-Team gemanaged und von Softwareentwickler_innen als Service genutzt werden.
- Standardisierte Umgebungen, die mit einem Klick zur Verfügung stehen: Komplexe Applikationen wie große Monolithen und nicht-containerisierte Software in RDEs betreiben und sofort bereitstellen.
- Weiterhin alle individuell eingesetzten Tools nutzen: Integration über einen mounted File-Share mit allen Sourcen für lokale Editoren / IDEs oder über SSH für Web- / Remote-IDEs.
- Build von noch nicht committeten Zwischenständen, Wiederverwendung bereits vorhandener lokaler Build Tools (der z.B. Code nicht minimised) und komfortable Inspektion von Logs.
- Umfassende Automatisierungs- und Integrationsfunktionalität: Weitere Prozesse ganz nach Bedarf mit Cloudomation automatisieren, z. B. Integration Tests auf der IDE.
So funktioniert es
Self-service Frontend: Über das Self-Service-Frontend die RDEs auswählen, anlegen und entfernen und einen Überblick über laufende RDEs erhalten.
Konfigurations-Frontend: Festlegen, welche Remote Development Environments via Self-Service-Frontend zur Verfügung stehen. Konfiguration des Datenmodells und Nutzung von Konfigurationsvorlagen möglich.
Automatisierungs-Frontend: Definieren, wie Remote Development Environments erstellt werden. Integration von Tools und die Nutzung bereits bestehender Automatisierungsabläufe oder über andere Automatisierungstools umgesetzte Prozesse.

Das Ergebnis
Umfassende Standardisierung:
- Zentrale Verwaltung der Entwicklungsumgebungen.
- Das gleiche System für alle: Automatisierte Bereitstellung genau nach Unternehmensanforderung – und zwar auf Knopfdruck.
- Verwendung der gleichen Tools für Entwicklung, Production, Testing und Deployment.
Deutliche Zeitersparnis:
- Keine Setup-Zeit beim Onboarding und bei der täglichen Arbeit.
- Zeit für Troubleshooting der Entwicklungsumgebung sinkt auf null.
- Paralleles Arbeiten an verschiedenen Branches / Versionen: Mit einem einfachen Wechsel der RDE.
Developerfreundlich & sicher:
- Keine Hardwarebeschränkung: Rechenintensive Prozesse werden in der RDE durchgeführt. Theoretisch kann sogar am Tablet entwickelt werden.
- Softwareentwicklung mit und ohne Internetverbindung möglich.
- Air-gapped RDEs für Sicherheit von Source Code und Daten: Einrichtung möglich, so dass Source Code nie lokal am Rechner der Entwickler_innen landet.