Infrastruktur & Server mit auf Ubuntu/Debian-Basis
Das World Wide Web besteht zu großen Teilen aus Servern, die mit BSD- oder Linux-Systemen laufen. Wir nutzen für die meisten unserer Projekte dedizierte oder skalierbare virtuelle Server, die beim Provider Hetzner angemietet und teilweise vollständig von uns administriert werden. Wenngleich Hosting nicht unser Kerngeschäft ist, verfügen wir aus strategischen und technischen Gründen über jahrzehntelanges Knowhow im Betrieb von Webserver-Infrastrukturen und verlassen uns dabei in der Regel auf die zuverlässigen Linux-Derivate Ubuntu und Debian.
Applikations-Frameworks wie Symfony, Django & Co.
In den meisten Projekten nutzen wir Frameworks, die in sehr vielen Produkten eine wichtige Kernkomponente darstellen.
Viele weit verbreitete OpenSource-Anwendungen nutzen z.B. Symfony in unterschiedlichen Ausprägungen, darunter Shopware, Typo3, Drupal, Contao, PIMCore, phpBB, Matomo (ehemals Piwik) und OroCRM. Google, Facebook, Yahoo und andere IT-Riesen machen auch Gebrauch von Symfony-Komponenten.
Für Python-basierte Anwendungen, die über Web-Inferfaces bedient werden, greifen wir in der Regel auf Django zurück.
Für Web-Projekte haben solche Frameworks den wesentlichen Vorteil, dass viele häufig genutzt Funktionen nicht von Grund auf neu entwickelt werden müssen, sondern nur als vorgefertigte Komponenten in ein System zu integrieren sind.
Klassische Beispiele sind:
- Sicherheits- und Account/User-System
- URL-Handling/Routing für schöne, sprechende URLs
- Formular-Funktionen inklusive Validierung von Daten
- Übersetzungsfunktionen für multilinguale Web-Applikationen
- Schnelle Integration von Layouts/Templates
- Werkzeuge für die Verwaltung von Daten auf Dateisystem-Ebene
- u.a.
HTML/CSS-Frontends mit Bootstrap
Mit dem Bootstrap-Framework wird das Konzeptionieren und Entwickeln von Layouts für Webanwendungen erleichtert – insbesondere hinsichtlich der Nutzbarkeit der Anwendung auf Geräten mit unterschiedlichen Bildschirmgrößen. Bootstrap offeriert ein produktionstaugliches Konzept für Responsive Design. Es beinhaltet ein praktisches Spalten-System, vorgefertigte Content Elemente (Textboxen, Buttons, Tabellen, usw.) und andere Nützlichkeiten, die praktisch auf jeder modernen Website zu finden sind.
Komplexe Frontends mit Angular oder VueJS
Sowohl VueJS als auch Angular haben sich in den vergangenen Jahren zu sehr populären Web-Application-Frameworks entwickelt. Für Programmierer und Nutzer von Webapplikationen ergibt sich ein wesentlicher Vorteil:
Klassische Website-Entwicklungen sind stark von der Interaktion mit dem Webserver abhängig. Wenn man zum Beispiel auf einer Webseite in einem Formular Eingaben tätigt, muss das Formular abgeschickt und vom Server verarbeitet werden. Um Ergebnisse anzeigen zu können, muss die Webseite neu geladen werden – das erzeugt eine oft nervige und nicht intuitive Verzögerung.
JS-Frameworks bieten Möglichkeiten, Interaktionen mit webbasierten Anwendungen zu größeren Teilen clientbasiert auszuführen – also ohne sichtbares Nachladen der Seite.
Es gibt auch einige andere, weiter verbreitete Frameworks, die ähnliche Vorteile und Funktionen bieten. Bei intercorp. haben sich Angular und VueJS primär aufgrund der Funktionsvielfalt, der Ausgereiftheit und breiten Geräteunterstützung etabliert.
Monitoring mit Nagios
Mit dieser Software überwachen wir wesentliche Teile unserer Infrastruktur und teilweise auch die unserer Kunden. Nagios ermöglicht eine sehr genaue Konfiguration von Verfügbarkeits- und Funktionschecks von IT-Komponenten, wie z.B. Mail- oder Webservern und der darauf laufenden Hard- und Software. Daher sind wir in der Lage, sehr schnell und vor allem zielgerichtet zu reagieren, wenn kritische Teile, insbesondere von umsatzkritischen Systemen Probleme verursachen.
- Wenn Mails nicht verschickt werden können, kriegen wir das mit.
- Wenn Festplatten kaputt gehen, kriegen wir das auch mit.
- Wenn bei einer Komponente kein Internetzugriff mehr existiert, kriegen wir das auch mit.
Testing mit Selenium
Während Nagios zur Überwachung von Infrastruktur und Anwendungen dient, gibt es weitere, spezialisierte Werkzeuge, die der Überwachung von Prozessen dienen – beispielsweise der Warenkorb-Strecke in einem Online-Shop.
Denn: Auch wenn der Server eines Online-Shops erreichbar, die Website einwandfrei zu navigieren und der Warenkorb befüllbar ist, heißt das noch nicht, dass ein Kauf der Produkte möglich ist. Wenn zum Beispiel die Anbindung an einen Bezahldienstleister nicht funktioniert, kann kein Abschluss zustande kommen.
Damit solche Probleme möglichst schnell erkannt werden, lässt sich auf Selenium-Basis ein „Roboter“ konfigurieren, der automatisiert alle umsatzkritischen Szenarien durchspielt – zum Beispiel den Kauf von Produkten simuliert. Scheitert der Roboter, kann er genau mitteilen, an welcher Stelle und damit meistens auch, aus welchem Grund. Eine automatische Benachrichtigung sorgt dann dafür, dass wir vom Problem in Kenntnis gesetzt werden und es kann schnellstmöglich behoben werden.
Entwicklungsumgebung mit JetBrains oder VSCodium
In der Regel nutzen wir Entwicklungsumgebungen (IDE), die durch zahlreiche unterstützende Features dafür sorgen, dass wir schneller programmieren, weniger Fehler machen, produktionsreifen Code leichter veröffentlichen und in großen Projekten leichter den Überblick behalten können. PHPStorm gehört zur Grundausstattung jedes Entwicklers in unserem Hause und hat sich über die Jahre als für unsere Zwecke beste PHP-IDE herauskristallisiert.
Manche unserer Entwickler schwören aber auch auf Visual Studio Code bzw. VSCodium und die Python-Fraktion bedient sich gern PyCharm von JetBrains.
Versionskontrolle und Deployment mit Git und Gitlab
Weniger IT-affine Kunden schauen uns gelegentlich irritiert an, wenn wir erzählen, dass wir mit „Git” arbeiten. Im Englischen bedeutet „git“ nämlich so viel wie „Depp“.
Git ist eine Versionsverwaltung, die dabei hilft, Änderungen in Programmcode zu dokumentieren. Wenn ein Entwickler von uns eine Anwendung um eine neue Funktion erweitert, bedeutet das, dass Code hinzukommt und/oder alter Code modifiziert wird. Manchmal werden ungewollt Fehler eingebaut, die man dank Versionsverwaltung rückgängig machen kann. Außerdem ist Git hilfreich, wenn es darum geht, die Qualität von Programmcode zu prüfen. Denn Git verwaltet alle Programmierergebnisse zentral und übersichtlich. Nicht zuletzt erkennt Git, wenn zwei Entwickler die gleiche Stelle im Programmcode bearbeiten und sorgt dafür, dass beide Arbeiten berücksichtigt werden können oder es eine Vergleichsmöglichkeit gibt, um die bessere Lösung zu wählen.
Für die Verwaltung unserer Git-Repositories nutzen wir eine Gitlab-Instanz auf eigener Infrastruktur.
Beschleunigung durch KI-Tools
Als ergebnisorientierte, pragmatische, agile IT-Bude bemühen wir uns um Wettbewerbsvorteile, wo immer es geht. Nicht nur für unsere Kunden, sondern auch für uns selbst: Die Fortschritte in den Bereichen Künstliche Intelligenz und Machine Learning bringen auch für uns im Alltagsgeschäft Vorteile. Dank der Fähigkeiten aktueller Sprachmodelle wie GPT-4 oder Llama2 und anderen Assistenzsystemen wie Github Copilot können wir uns in einigen Bereichen der Software-Entwicklung repetitive Tasks sparen und kommen schneller zum Ziel, wenn nach Lösungen gesucht wird, die wir nicht auswändig im Kopf haben.
Aber selbst die besten Sprachmodelle können menschliche Expertise und Aufmerksamkeit noch lange nicht ersetzen - in Sachen Sicherheit, Architektur und Datenschutz verlassen wir uns lieber auf unsere eigenen natürlichen Hirne, nicht auf die künstlichen.
Alles in allem. Alles für Sie.
Warum wir das alles so fein säuberlich auf- und ausführen? Weil wir hoffen, dass dieser Text nicht nur von IT-Verantwortlichen, sondern auch von potentiellen Bewerbern gelesen wird. Und man so sofort Bescheid weiß, woran man bei intercorp. ist. Überzeugt? Interessiert?
E-Mail: keller(at)intercorp.de
Telefon: +49 (0)9203-996-61