Technologie Stack bei WTL
Bewährte Technologien
Plattform Entwicklung
Basis
In der Mehrzahl unserer Plattformprojekte bildet die Programmiersprache PHP 7 das technische Grundgerüst der Entwicklung. Wir nutzen die jeweils neuesten Sprach- und Entwicklungsstandards, sowie Enterprise Design Patterns. Damit erreichen wir schnell unsere Ziele, stellen beste Qualität sicher und gewährleisten Wartbarkeit, Langlebigkeit und Wirtschaftlichkeit. Bei der Wahl der Programmiersprache sind wir aber nicht dogmatisch. Häufig setzen wir auch andere Sprachen wie beispielsweise Go, Java oder Node.js ein, um die individuellen Anforderungen zu erreichen.
Datenbanken
Uns ist sowohl die Arbeit mit relationalen (MySQL, MS SQL, Oracle) als auch mit dokumentenbasierten (MongoDB) Datenbanken vertraut. In den deployten Instanzen sind auch Cloud-Implementierungen wie DynamoDB (Amazon AWS) oder Cosmos DB (Microsoft Azure) im Einsatz. Wir stimmen uns in der Datenbankfrage eng mit der IT unserer Kunden ab, um eine harmonische Integration in die Infrastruktur und die gelebten Prozesse zu erreichen.
Frameworks
Im Ökosystem von PHP setzen wir häufig auf Laravel, ein modernes Framework, dass stark von .NET beeinflusst ist. Es unterstützt uns dabei, komponentenbasierte, performante und zukunftssichere Software zu entwickeln. Wir integrieren gern Open Source-Pakete in unsere Lösungen. Damit stellen wir sicher, dass wir uns auf die erfolgskritischen Geschäftsfälle eines Projekts konzentrieren können. Neben Laravel bringen wir fallweise auch Symfony oder Phalcon zum Einsatz.
Im Ökosystem von Node.js, welches hauptsächlich für Suchmaschinenoptimierte Progressive-Web-Apps zum Einsatz kommt, setzen wir häufig auf Express.js. Dieses Framework ist möglichst leichtgewichtig und anpassbar, sodass mit wenig Code ein schnelles Ergebnis erzielt werden kann. Bei komplexeren Logiken im Node.js Bereich setzen wir alternativ auch Adonis.js ein, ein JavaScript Framework, das stark an Laravel angelehnt ist und nahezu alle Funktionalitäten des Laravel-Frameworks bietet.
weitere Technologien
Neben den bereits genannten Technologien nutzen wir natürlich noch erheblich mehr Lösungen im täglichen Entwicklungsalltag. So sind die Themen Virtualisierung (Docker, vmWare oder VirtualBox), Provisionierung (Vagrant, Chef), Volltextsuche mittels ElasticSearch, Caching von Daten mittels Redis oder Message Queuing (RabbitMQ; ActiveMQ) in nahezu jedem komplexen Plattformprojekt präsent.
Zunehmend spielt auch die revisionssichere, verteilte Datenhaltung auf Basis der Blockchain Technologie eine immer wichtigere Rolle in unseren Projekten. Hier nutzen wir sehr gern die Werkzeuge Hyperledger oder IOTA um auf deren Basis konkrete Anwendungen für Ihre Business-Cases zu entwicklen.
Frontend und Hybrid Mobile Entwicklung
Basis
Das Ökosystem im JavaScript Umfeld unterliegt einem extrem schnellen Wandel. Daher ist es gerade in diesem Bereich schwierig aber auch besonders wichtig, eine moderne, solide und zukunftssichere Technologieauswahl zu treffen. Die von uns entwickelten Frontend bzw. Mobile Apps basieren auf JavaScript in einem der modernen Sprachstandards, wie ECMAScript 2018 oder TypeScript 3.
Diese bilden die Basis unserer JavaScript Frontend und Mobile Apps, sie die Entwicklung modernen, wartbarer Software ermöglichen und objektorientierte Entwicklungsparadigmen unterstützen.
Frameworks
Für die Entwicklung moderner Web-Apps setzen wir auf die vielfach bewährten und am Markt etablierten Bibliotheken React oder Angular. Diese ermöglichen es uns, Ihrer Applikation ein sehr modernes Erscheinungsbild (UI) zu geben und die Benutzererfahrung (UX) optimal zu gestalten. Die Brücke von diesen Progressive Web Apps hin zu echten Mobile Apps schlagen wir über die ebenfalls sehr beliebten Frameworks React Native und Flutter. Diese erlauben es uns, native Mobile Apps zu entwickeln.
Schnittstellen
Zur Kommunikation der Web-Frontends oder Apps mit den Backends setzen wir fallweise RESTful-, GraphQL- oder WebSocket-Dienste ein.
Sonstiges
Neben den bereits genannten JavaScript Bibliotheken und Basistechnologien nutzen wir im Entwicklungsprozess eine große Zahl spezialisierter Komponenten und Module. Diese sind jeweils sehr genau auf die Lösung einzelner spezifischer Probleme entwickelt und stellen dabei eine optimale Lösung für das jeweilige Problem bereit. Einige Beispiele dafür sind die JavaScript Laufzeitumgebung Node.js, das State-Management Modul Redux, die Bibliothek RxJS zur Verarbeitung von Event-Streams.
Bereich Code Qualität, Test Automatisierung und Deployment
Zur Messung und Sicherstellung unserer Qualitätskriterien nutzen wir verschiedenen und vielfach bewährte Werkzeuge. Bereits zum Zeitpunkt der Programmierung führen wir mit php-cs (PHP Coding Style), und php-md (PHP Mess Detector), ESLint oder TSLint eine Analyse des gerade geschriebenen Quellcodes durch. Damit erhält jeder Entwickler unmittelbar eine Rückmeldung, ob der von ihn bzw. ihr geschriebenem Quellcodes, unsere Qualitätsrichtlinien, die WTL green code policy, erfüllt.
Neben diesen lokal genutzten Hilfsmitteln führen wir mit Scrutinizer-CI statische Code-Analysen durch, um die Komplexität und Qualität der entwickelten Software messen und veranschaulichen zu können. Zusätzlich werden automatisierte Tests durch Gitlab-CI oder CircleCI Pipelines ausgeführt, um die Korrektheit der entwickelten Software bzw. deren Komponenten sicherzustellen.
Um Regressionen zu vermeiden und das Zusammenspiel verschiedener Komponenten der Software untereinander automatisiert testen zu können entwickeln wir nach Absprache mit unseren Kunden zusätzlich zu den ohnehin entwickelten Unit Tests noch automatisierte End-to-End Tests mit cypress.io oder Selenium bzw. Codeception.
Gerne stellen wir die von uns entwickelte Software auch mit auf Docker basierenden Container Orchestration Tools wie Docker Swarm oder Kubernetes auf einem entsprechenden Cluster bereit.
Starten Sie ihr Entwicklungsprojekt mit WTL
Projektmanagement
Überzeugende Ergebnisse entstehen nur mit überzeugenden Werkzeugen: Wir setzen zur Verwaltung und zur Steuerung auf das bewährte Trio aus Jira, Confluence und GitLab, das uns auch als zentrales Cockpit dient.
In Atlassian Jira erfassen wir alle Aufgaben und Arbeitsabläufe und führen außerdem das Projekt- bzw. Versionsmanagement durch. Jira unterstützt dabei verschiedene Entwicklungsmethoden, etwa Scrum, Kanban oder das von uns häufig praktizierte Scrum-ban.
Projektspezifisches Wissen und zentrale Assets dokumentieren, strukturieren und pflegen wir im Wiki Atlassian Confluence. Den Quellcode unserer Projekte halten wir in Git-Repositories bei Github oder GitLab.
Alle Systeme sind miteinander verknüpft und gewährleisten so eine optimale Effizienz. Die durchgängige Revisionssicherheit erlaubt es uns, jeden beliebigen Arbeitsstand nicht nur einzusehen, sondern bei Bedarf auch wiederherzustellen.
Best of Breed vs. homogenes Ökosystem
Die Auswahl der Entwicklungstechnologien zu Beginn jedes Projekts machen wir im Wesentlichen von den Anforderungen, Projektzielen und dem Kundenkontext abhängig. Dabei bewegen wir uns im Spannungsfeld von robusten, bewährten Standards und modernen, hochspezialisierten Technologien auf der anderen Seite.
Unsere Softwarearchitekten und Softwareentwickler evaluieren mit Wissen, Erfahrung und gesundem Augenmaß. Sie treffen die Auswahl der für Ihr Projekt am besten geeigneten Technologien und schätzen die Aufwände. Wir kommunizieren die Attribute Zeit, Budget und Qualität transparent und stellen unsere Auswahl vor.
In einer Vielzahl erfolgreich durchgeführter Entwicklungsprojekte hat sich dabei der Hybrid aus Standard und „Best of Breed“ als besonders tragfähig herausgestellt. Bei den erfolgskritischen Komponenten einer Plattform setzen wir auf Best of Breed-Technologien. Für Rumpfkomponenten werden Standardlösungen genutzt.
Entwicklungsumgebung
Wir nutzen State-of-the-Art Computersysteme, die wahlweise mit Windows, MacOS oder Linux betrieben werden. Als integrierte Entwicklungsumgebung (IDE) kommen z.B. IntelliJ, PHPStorm oder Visual Studio Code zum Einsatz.
Lokal arbeiten alle Entwicklerinnen und Entwickler mit virtualisierten Setups auf Basis von Docker oder VirtualBox. Die Build-Pipeline betreiben wir zentral und projektspezifisch per VMware vSphere und GitLab CI.
Dieses Vorgehen stellt sicher, dass jeder Entwickler mit der identischen Infrastruktur arbeiten kann. So erreichen wir einen besonders hohen Grad an Effizienz und Skalierbarkeit der Teams bei der Softwareentwicklung.
Starten Sie ihr Projekt mit WTL.
Mit fundiertem Know-how und einer Extraportion technologischer Neugier machen wir uns für unsere Kunden auf den Weg. Wir freuen uns, Sie kennenzulernen.
Ihr Ansprechpartner
Jan Bager
+49 341 393 781 30
hallo@wtl.de