Technologie
Unsere IT-Spezialisten haben eine Punktbeschreibung für die Technologien, Tools und Buzzwords erstellt, welche sie verwenden. Verstehen werden diese vor allem… wieder weitere IT-Spezialisten. Wenn Sie also nicht wissen, wovon die Rede ist, so macht es nichts - dies verstehen nicht mal alle Forrests.
App-Server
Unabdingbar für den Betrieb von Java-Web-Apps. Auf unseren Servern verwenden wir Apache Tomcat, wir kennen uns mit Deployment aus, aber zum Beispiel auch mit Clusterlösungen. Wir verfügen über Erfahrungen mit Apps, welche mit WebSphere oder WebLogic funktionieren. Aber auch vor Servlet-Container schrecken wir nicht zurück.
Bootstrap
Viele von uns waren am Anfang skeptisch gegenüber Bootstrap, aber bald sind wir mit dessen Möglichkeiten auf den Geschmack gekommen. Nun ist es nicht mehr wegzudenken!
CDN, WAF
Wir entwerfen die schnellstmögliche Lösung mit hoher Verfügbarkeit. Aus diesem Grund verwenden wir bei ausgewählten Lösungen CDN in Kombination mit WAF.
Chef
Automatisierte Infrastrukturen mit Anleitungen und eigenen Skripten. Einen neuen produktionsbereiten Server erstellen wir innerhalb weniger Minuten. Mit Chef können wir Hunderte von Servern konfigurieren und warten.
Cloudhosting
Wir beherrschen verschiedene Lösungen, aber Cloudhosting ist aus vielen Gründen die beste Lösung (auf der Plattform Unix/Linux).
Continuos Integration
Jede Änderung, welche beim Projekt erfolgt, möchten wir baldmöglichst testen. Hierfür verwenden wir Systeme wie Jenkins, Teamcity oder GitLab (ja, auch hier werden Kreuzzüge geführt).
CSS3
Den Kaskadenstil verwenden wir bereits zwanzig Jahre lang und während dieser Zeit haben wir uns mit älteren Browsern geplagt, welche Unterstützung benötigen. Das Schreiben mit CSS machen wir uns mit LESS leichter und seit Bootstrap 4 beginnen wir nach SASS Ausschau zu halten.
Eclipse
Eines der Lager sympathisiert mit der Entwicklung in Eclipse bzw. STS. Die Freiheit ist für uns wichtig. Aus diesem Grund sind wir alle für IDE, auch wenn das Lager der Entwickler, die für IntelliJ Idea sind, dies überhaupt nicht nachvollziehen kann.
Elastic Search
Wir probieren gerne neue Sachen aus, von Elastic sind wir aber dauerhaft begeistert. Auch die schwierigsten Fragen bewerkstelligt es schneller als andere Lösungen. Hierzu kommt noch die Erweiterbarkeit - mehr braucht man nicht zu erklären.
Funktionales Programmieren
Es ist ein alt-neues Phänomen. Auch wenn die meisten von uns während des Studiums einige Semester Lisp hatten, wird es bei uns nicht systematisch auf Basis von Java Closures sowie Streams eingesetzt, einige von uns kokettieren mit Rx. Maßgeblich ist jedoch der Bereich, wo wir mit der Zeit gerne mehr erreichen möchten.
G Suite (früher Google Apps)
Mit Begeisterung haben wir vor Jahren von den internen „Microsoft Exchange“- und einfachen File-Servern auf G Suite umgestellt. Heute ist der Firmenalltag ohne G-Mail, gemeinschaftlich genutzte Daten auf Drive, Google-Dokumente, Kalender und ohne zusammenhängende Anwendungen aus den Google-Paketen nicht mehr vorstellbar.
GIT
Lange Zeit haben wir CVS verwendet, aber das ist bereits Vergangenheit. Die meisten von uns verwenden täglich GIT. Wir verfügen über ein eingeführtes Branching-Modell, damit an einem Projekt mehrere Mitarbeiter sowie an mehreren Aufgaben gleichzeitig arbeiten können.
GitLab
So was wie unser kleiner GitHub. Neben der übersichtlichen Anordnung der Berechtigungen und der Visualisierung von Änderungen verwenden wir die Schreibmöglichkeiten für Dokumentationen (Markdown ist super). Des Weiteren bemühen wir uns, mehr Merge Requests zu verwenden und darüber hinaus stellt dies eine Lösung für Code Review dar.
Groovy
Wird bei uns bereits seit längerer Zeit zum schnellen Customizing in einfacheren Projekten oder Integrationsteilen unter mehreren Modulen verwendet. In der letzten Zeit bevorzugen wir jedoch Java 8.
Grunt
Automatisierung für Entwickler. Wird bei uns primär zur Automatisierung von Deployment sowie zur Vereinfachung der lokalen Entwicklung verwendet - analog wie Yeoman zum Anlegen eines Projekts.
Gruppen/Teamkommunikation
Im Jahr 2016 haben wir zum ersten Mal das Open-Source-Tool Mattermost eingesetzt - es handelt sich um eine Slack-Alternative. Derzeit überwiegen die positiven Eigenschaften dieser Kommunikationsart.
Gulp/Webpack
Für uns ein untrennbares Paar zur Front-End-Entwicklung und -Einstellung. Die Grundeinstellungen kann jeder Websites-Ersteller leicht weiterentwickeln.
Haproxy
Unabdingbar für all unsere Lösungen, die im Einsatz sind. Dient als Eingangselement, mit welchem jede Konfiguration möglich ist - typischerweise als HTTPS-Terminator oder Balancer.
HTML5
Basistechnologie, um welche herum alle Web-Projekte errichtet werden. Sukzessive sind wir von HTML3, HTML4 (auch sog. DHTML) über XHTML beim heutigen HTML5-Standard gelandet.
IDE
IDE = Integrated Development Editor – ein Tool, das alles für die Entwickler beinhaltet, was sie für ihre Arbeit benötigen (bzw. zumindest das meiste davon). In IDE verbringen wir die meiste Zeit und auch deshalb werden darum Kreuzzüge geführt (ebenso wie bei der Verwendung von Tabulatoren und Leerzeichen für Absätze).
Instant Messaging
Intern betreiben wir einen „Jabber XMPP“-Server. Sogar als es noch nicht sexy war, haben wir eigene Jabberbots implementiert, welche die Arbeitsnachweise protokollieren und weitere Informationen aus dem Informationssystem ermitteln.
IntelliJ Idea
IDE wird von unseren Entwicklern im maximalen Umfang verwendet. Mit diesem können wir uns in der Nähe unseres Codes bewegen und wir mögen dessen Benutzerfreundlichkeit und Intelligenz.
Intranet
Wir betreiben ein eigenes Intranet-Informationsportal namens Jáchym. Es handelt sich um einen Born mit allen möglichen Firmeninformationen und Mitteilungen. Sein jüngerer Bruder Hugo ist in Planung. ;-)
Java
Unsere Lösungen programmieren wir in der JAVA-Sprache. Wir verwenden die Möglichkeiten, welche Java 8 umfasst. Auf Produktebene unterstützen wir derzeit JDK 7, damit unsere Lösungen auch in der Umgebung vom Kunden funktionieren, wo die Upgrades der Java-Version schwieriger vonstatten gehen. Aufmerksam halten wir nach neuen Funktionen in Java 9 Ausschau.
Javascript
Gehört immer zum festen Bestandteil aller Projekte. Die Weiterentwicklung macht uns viel Spaß, auch wenn uns die Lebensdauer von einigen Javascript-Frameworks manchmal viel Kraft und Nerven kostet. Auch die Einführung von ES6 macht uns viel Spaß und die Neuheiten werden von uns verwendet.
jQuery
Ist bei einfachen Websites auch weiterhin der schnellste Weg, um die Websites mit Leben zu füllen.
JVM
Die Tücken von JVM haben wir gut im Griff, einschließlich der Überwachungs-, Sicherheits- und Verfügbarkeitsmöglichkeiten. Seit der Version 1.2 ist Java auf dem Server im Einsatz.
Logging
Zum Speichern und Nachschlagen von Informationen aus den Logdateien verwenden das intern eingesetzte „Open-Source Software NxLog“-Paket sowie Graylog und ElasticSearch. Zur Datenvisualisierung dient uns Kibana. Aber wer möchte (und Zugang dazu hat), kann sich die Logdateien auch auf der Festplatte ansehen.
Maven
Zum Building verwenden wir Maven. Wir halten nach Gradle Ausschau, aber unterm Strich ist Maven einfach schneller - mit maximaler Unterstützung aller Entwicklertools.
Modulare Architektur
Stellt das Fundament für unsere Plattform dar und wurde auf einer Komposition aus Spring-Anwendungskontexten innerhalb eines Classloaders errichtet, was sich möglicherweise mit der Einführung von JigSaw ändert. Die Modularität haben wir relativ weit gezogen - sie deckt alles ab - von der Datenschicht bis Ul. Schlüsselattribute sind die Isolation, die Erweiterbarkeit und die Kombinierbarkeit.
Mongo DB
Derzeit verfügen wir nur über einige Installationen, wo es als effektive Clusterlösung fungiert. Uns gefällt die Einfachheit, der Schemaless-Zugang und die Aggregation Framework. Derzeit erfüllt es unsere Erwartungen zur vollsten Zufriedenheit, auch wenn es uns am Anfang etwas Kopfzerbrechen bereitet hat.
MyBatis
Vereinfacht unsere Arbeit bezüglich der Persistenz der zur Datenbank übertragenen Objekte. Wir mögen es viel mehr als Hibernate. Im Rahmen der Projekte verwenden wir häufig unsere eigene Lösung (Adam). Aber wir begrüßen auch die direkte Arbeit mit der Datenbank über Spring JdbcTemplate.
MySQL
Eine schnelle Datenbank sowie eine vielfältige Auswahl an Tools und Systemen für Entwickler sowie zum Betrieb. Wir können sie auf clevere Weise erweitern sowie speichern, wir kennen die Schwachstellen der Datenbank bzw. die Stellen, wo sie besser als ein Oracle ist
NoSQL
Gehört heute bereits zum gängigen Bestandteil von schwierigeren Lösungen. Meistens kombinieren wir es jedoch mit der klassischen relationalen Datenbank, welche als primärer Speicherort für die Projektdaten dient. NoSQL verfügt über Ansichtsmöglichkeiten, um die Daten anschließend einfach präsentieren zu können.
Objektorientiertes Programmieren
Stellt die Basis für unsere Arbeit dar. Obwohl es aktuell mit vielen Mängeln behaftet ist, sind wir der Meinung, dass es derzeit das Beste ist, was wir zur produktiven Entwicklung von Anwendungen haben. Abstraktion, Delegation und Komposition, GOF Patterns - all dies gehört zu unserer täglichen Arbeit.
Oracle
Bei Großkunden die erste Wahl für eine relationale Datenbank. Wir kennen uns damit aus, machen aber absichtlich nicht von den Möglichkeiten Gebrauch, welche nicht auf andere Plattformen übertragbar sind.
Percona
Eine um Haaresbreite schnellere Implementierung als MySQL, welche wir bereits seit Jahren eher verwenden als dessen Vorlage MySQL. Auf API-Basis und die Funktionalitäten sind mit MySQL identisch, aber Percona ist schneller und bietet mehr Möglichkeiten (Speichern, Cluster).
React
Muss von uns noch weiterentwickelt werden, aber wir mögen es immer mehr. Kann nicht für alles verwendet werden, was wir machen, aber eine größere SPA möchten wir trotzdem nicht machen (hoffentlich bleibt es uns noch lange erhalten).
Responsive Web-Design
Wir garantieren, dass die Websites und Web-Anwendungen von uns für die verschiedenen Geräte optimiert werden - von Telefonen über Tablets bis hin zu Desktops. Dies erreichen wir mit Bootstrap oder mit zum Beispiel dynamischen Abbildungen, wodurch die optimale Datengröße für das gerade verwendete Gerät gewährleistet ist.
Sicherheit
Die automatisierten Penetrationstests (mit Acunetix) gehören zum festen Bestandteil unserer Test-Checkliste. Bei bedeutenderen Lösungen werden Spezialisten aus der Branche (DCIT, Kümmel) zu den manuellen Penetrationstests hinzugezogen. Wenn ein Fehler festgestellt wird, werden all unsere Lösungen berichtigt. Nebenbei bemerkt, niemand auf der Welt kann ein einwandfreies Produkt herstellen… Fernzugang zu den Servern - über OpenSSH nur für eine beschränkte Benutzergruppe (nur über deren SSH-Schlüssel) und nur von den aufgeführten IP-Adressen aus.
Spring
Häufig verwenden wir Spring Framework - nicht nur für „Dependency Injection“-Lösungen, sondern auch für weitere Teile, wie z. B. Spring MVC, Spring Security, Spring Batch. Uns gefällt auch der Testsupport, die Webdienste, die LDAP-Kommunikation - kurz gesagt, einfach fast alles. :-)
Test Driven Development
Damit erleichtern wir uns die Arbeit. Nicht immer ist der Test das Erste, was wir aufschreiben, aber wir geben nicht auf. Ein Großteil der Arbeit der Java-Entwickler erfolgt nur mit Tests, ohne dass die Inbetriebnahme eines App-Servers erforderlich ist.
Tests
Die Entwicklung unserer Projekte und deren Tests sind fest miteinander verbunden. Bei uns erfolgt die mit Unit-Test (JUnit), Integrationstests (JUnit) und End-to-End Tests (Webdriver). Durch unsere Tester erfolgen die finale Überprüfung (anhand der Checkliste) sowie die Penetrationstests (Acunetix) und auch die Performancetests (Gatling). Nach dem Einsatz von neuen Versionen erfolgt immer das automatisierte Smoke-Testing.
Überwachung
Die in Betrieb genommene Lösung muss überwacht werden. Wir verwenden die intern eingesetzte Open-Source-Software Nagios und Zabbix. Zur Außenüberwachung unserer Websites-Lösungen haben wir uns vor Jahren für Pingdom entschieden.
ViM
Drittbeliebteste IDE in unserer Firma. Alle anderen versuchen bereits seit Jahren vergeblich, mit den Funktionen mitzuhalten, über welche dieses magische Tool verfügt, wodurch sie bei den ViM-Benutzern nicht beliebt sind.
Web-Server
Die ursprünglich für unsere Infrastruktur verwendete Lösung Apache wurde sukzessive durch die effektivere Lösung NGINX ersetzt. Wir verwenden sie auch als Reverse Proxy Cache.
Webdriver
Wird von uns zum Schreiben von UI-Tests verwendet, in deren Rahmen die Funktionsfähigkeit aus Benutzersicht überprüft wird (End-to-End-Tests, Akzeptationstests). Tests dieser Art sind vor allem innerhalb der Produktentwicklung von Vorteil, wo sich ein eventueller Fehler auf mehrere Projekte auswirken kann. Das automatisierte Testen erfolgt durch uns in Kombination mit Browser Stack Automate.
Auch Ihr Projekt kann sich langfristig zu einem erfolgreichen Projekt entwickeln!