Unser Tech Stack

Diese Programmiersprachen, Frameworks, Bibliotheken, Methoden und Tools nutzen wir

Wir arbeiten an unseren Services überwiegend mit JavaScript (mit einem starken Fokus auf React und Node.js), Ruby on Rails, Java und Go. Unsere Plattform, die von unserem DevOps-Team bereitgestellt wird, basiert zu 100 % auf AWS, wir betreiben also keinen einzigen Server. Viele unserer Systeme und Komponenten sind automatisiert und testgesteuert. Unserer Entwicklungsarbeit liegt das CI/CD-Modell zugrunde (Continuous Integration / Continuous Delivery), sodass wir Software schnell und effizient bereitstellen können. Unter anderem mithilfe von TDD (testgesteuerte Entwicklung) und Paarprogrammierung sorgen wir dafür, dass unsere Software höchsten Qualitätsansprüchen genügt.

Microservices-Architektur

Da Webfunktionen nicht mehr auf zentralen Servern verwaltet werden müssen, können bei der Webentwicklung Microservices zum Einsatz kommen. Mit einem Microservice wird ein eng definierter Task unabhängig von anderen Microservices initiiert, ausgeführt und terminiert.

Headless/Decoupled-Architektur

Die im Backend ausgeführten Tasks, zum Beispiel Inhalte zu erstellen, zu verwalten und zu speichern, sind von der Ein- und Ausgabe über ein bestimmtes Frontend getrennt. Unsere Architektur ist also Headless / Decoupled.

Methoden

Die Qualität der von uns entwickelten Software ist einer der wichtigsten Aspekte unserer Arbeit. Damit sie den höchsten Ansprüchen genügt, nutzen wir unter anderem die folgenden Methoden.

Agile Entwicklung / Scrum

Wir setzen unsere Projekte agil um. Gemeinsam mit unseren Kunden gehen wir dabei Schritt für Schritt vor. In überschaubaren Sprints erzielen wir frühe Erfolge, bleiben flexibel und schaffen die Basis für eine nachhaltige, kontinuierliche Weiterentwicklung unserer Webanwendungen. Wir nutzen Scrum, und unsere Sprints umfassen in der Regel 10 bis 30 Projekttage. Jeder Sprint beginnt mit einem Planungsmeeting und endet mit einem Sprint Review, bei dem die erzielten Ergebnisse vorgestellt werden und deren Akzeptanz überprüft wird. Darüber hinaus finden regelmäßige Meetings statt, um das Teamwork und die Effizienz kontinuierlich zu verbessern.

TDD (testgesteuerte Entwicklung)

Um potenzielle konzeptionelle Schwächen möglichst frühzeitig identifizieren und beseitigen zu können, führen wir Tests für alle Funktionen durch, bevor diese entwickelt werden.

Paarprogrammierung

Diese Methode, bei der zwei Entwickler an einem Task zusammenarbeiten, ist für uns der produktivste Ansatz, um Anwendungen zu entwickeln. Dadurch treten weniger Bugs auf, die Qualität des Codes wird verbessert und der Arbeitsaufwand wird reduziert.

Tools

Die Auswahl der richtigen Tools ist die Grundlage für unsere Arbeit, weil sie sich entscheidend auf Team-Performance und Codequalität auswirken. Daher nutzen wir für unsere Projekte die besten, bewährten Tools, wie zum Beispiel die im Folgenden aufgeführten.

GitHub

Der Quellcode aller von uns erstellten Anwendungen befindet sich in GitHub-Repositories. Dieser Service wird für die Versionskontrolle, Issues, Code-Reviews, Deployments usw. genutzt. Für die Organisation des Repositorys verwenden wir Git-Flow.

Amazon API Gateway

Amazon API Gateway ist ein AWS-Service, um REST-, HTTP- und WebSocket-APIs in jeder Größenordnung zu erstellen, veröffentlichen, warten, überwachen und sichern. 

AWS CodePipeline

AWS CodePipeline ist ein Continuous-Integration- und Continuous-Delivery-Service, den wir dafür nutzen, um unsere Software zu modellieren, zu visualisieren und automatisiert zu veröffentlichen. In unseren Projekten kommen unterschiedliche Pipelines (virtuelle Umgebungen) zum Einsatz. Jede Pipeline ist dafür konfiguriert, auf die in Git-Branches definierten Aktionen zu reagieren. Sobald Code aktualisiert wird, startet der Prozess automatisch.

AWS CodeBuild

AWS CodeBuild ist ein vollständig verwalteter Service für die kontinuierliche Integration. Wir nutzen ihn, um Quellcode zu kompilieren, Tests auszuführen und implementierbare Softwarepakete zu generieren. In einem CodeBuild-Projekt werden Pakete installiert und dann die Anwendung erstellt. Zugleich werden automatische (Integrations-)Tests durchgeführt. Zudem definieren wir Akzeptanzkriterien, damit die Anwendung allen Anforderungen gerecht wird. Erst, wenn die Anwendung alle Tests bestanden hat, wird sie implementiert.

AWS CodeDeploy

CodeDeploy ist ein Service, mit dem der Inhalt der (öffentlichen) Seiten und die Redirects an den S3-Bucket übermittelt werden. Die Lambda-Funktionen werden bei Bedarf aktualisiert, ihre neuen Versionen mit CFD verknüpft, und der CFD-Cache wird invalidiert.

Entwicklungsumgebung

Cloud-Infrastruktur (Auszug)

Datenbanken (Auszug)