Hier erkläre ich dir die Schritte, die ich bei Softwareprojekten durchlaufe. Da jedes Projekt einzigartig ist, halte ich den Ablauf hier allgemein. Bei kleinen Apps reichen oft vereinfachte Phasen, während große Systeme detaillierte Prozesse erfordern. Wenn du wissen willst, wie der Ablauf für dein Projekt aussieht kannst du mich gerne anrufen oder mir ein E-Mail schreiben.
Planung
Nach unserem Beratungsgespräch überlege ich mir die Anforderungen genau und plane anhand dessen die IT-Infrastruktur, die zu verwendenden Technologien sowie die Architektur von der Datenbank und dem Code. Das ist deshalb unerlässlich, da jede sauber strukturierte Datenbank und jede ordentliche Code-Architektur im Nachhinein unzählige Arbeitsstunden und Fehlersuchen unterbindet.
IT-Infrastruktur
Vor Beginn der Webentwicklung deines Produkts, wird die Infrastruktur rundherum eingerichtet. Hierzu zählen:
- Hosting Provider: Hier ermittle ich anhand der Anforderungen welchen Hosting Anbieter ich auswähle. Wichtige Anforderungen hier sind etwa DSGVO-Konformität, ISO-27001 Zertifizierung oder Green Hosting z.B. für Förderungen wie KMU Digital Green.
- Server: Hier wird das Betriebssystem vom Server festgelegt, welche Dienste auf dem Server laufen müssen, damit die Software einwandfrei und schnell funktioniert und wie der Server sicherheitstechnisch gegen Cyber-Angriffe abgesichert ist.
- Versionskontrolle: Über Git wird der Software Code historisch gespeichert, im Prinzip wird der Code hier historisch abgesichert.
- CI/CD: Automatisierte Prozesse die Software updates automatisch von lokalen Entwicklungen an unterschiedliche Entwicklungs-Umgebungen ausgespielt werden und dabei noch automatisiert getestet werden.
- Server Backups: Automatische Backups einrichten. Für hoch sensible Daten konfiguriere ich hier zusätzlich automatisierte Datenbankverschlüsselungen, sowie das duplizieren der Backups auf externen Storage-Servern.
- Sicherheit: Serverzugänge limitiere ich soweit, dass man nur noch über SSH und innerhalb eines VPNs auf den Server kommt. Firmeninterne Software-Anwendungen werden ebenfalls hinter einem VPN gelegt und so vor der Öffentlichkeit versteckt.
Webentwicklung
Sobald die Server Infrastruktur steht und alles davon eingerichtet ist, setze ich die passenden Code-Frameworks für das Projekt auf, füge diese in Git einem eigenen Repository hinzu und konfiguriere das Deployment. Ab dann wird jede Code-Änderung die ich auf Git hochlade, automatisch auf die verschiedenen Entwicklungs-Umgebungen verteilt und kann danach sofort live getestet und angeschaut werden.
Für die Entwicklung selbst verwende ich für unterschiedliche Projektgrößen und -zwecke folgende Code-Gerüste:
Während der Implementierung achte ich stets auf eine ordentliche Software-Entwicklung, dazu zählt:
- Sauberer Code (Funktionen Wiederverwenden, formatierter Code, Design Philosophie wie z.B. Domain Driven Design)
- Dokumentation (Code, API-Schnittstellen durch OpenAPI, bei komplexen Softwares auch eine Modul und Funktionsdokumentation)
- Automatisierte Tests (Unit, Feature, Integration, E2E)
- Code-Sicherheit (Vermeidung von SQL Injections und Cross Site Scripting)
- Sichere Authentifizierungs-Systeme bei Login Implementierungen
Datenmigrationen
Das A und O bei einem Softwareumstieg, ist die Datenmigration. Das ist nicht nur von rechtlicher oder beweisbringender Relevanz, wo man oft Dokumente viele Jahre lang aufbewahren muss, sondern auch zur Entscheidungsfindung wie für Auswertungen und Trend-Ermittlungen.
Dafür entwickle ich spezielle Migrations-Skripte, die alte Datensätze mit den neuen Datenbankstrukturen verknüpfen und so Datenstabilität für die neue Software gewährleisten.
Wartung & Support
Damit deine Software langanhaltend und möglichst fehlerfrei funktioniert, beobachte ich in regelmäßigen Abständen die Serverauslastung und den Ressourcenverbrauch um so vorzeitig Engpässe oder Auffälligkeiten zu bemerken und darauf reagieren zu können.
Darüber hinaus verfolge ich stets ob neue kritische Sicherheitsupdates veröffentlicht werden und spiele diese in kürzester Zeit auf meine Server ein, um so Cyber Angriffe möglichst gering zu halten.