JCON 2017, Düsseldorf: Vortrag von Sonja Wittke (Senior Softwareingenieurin bei QAware).
Abstract: In vielen Projekten ist Maven als Buildtool gesetzt. Entwicklungsteam und Kunde sind daran gewöhnt, die Buildinfrastruktur ist aufgesetzt, alles läuft stabil. Es gibt keinen offensichtlichen Grund, etwas daran zu ändern. Trotzdem haben wir den Build für eines unserer Kunden-Projekte auf Gradle umgestellt, planen die Umstellung weiterer Builds, und setzen für neue Projekte ausschließlich Gradle ein. In diesem Vortrag beschreiben wir, warum wir uns für den Einsatz von Gradle stark gemacht haben, und zeigen dabei die wesentlichen Vorteile und Features. Aus unserer täglichen Arbeit liefern wir faire Vergleichszahlen zwischen Maven und Gradle. Wir zeigen außerdem, was wir bei der Migration richtig, aber auch was wir falsch gemacht haben, und wie wir die Migration unserer weiteren Projekte angehen wollen.
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...GFU Cyrus AG
Kurzbeschreibung
Softwarequalität ist keine Spracheigenschaft. In jeder noch so guten Programmiersprache kann man schlechte Programme schreiben – sogar in Java. Herr Seekamp, Senior Consultant bei der GEDOPLAN GmbH, macht in diesem Vortrag anhand von Fallbeispielen aus seinen Projekten deutlich, was verständlichen und wartbaren Code ausmacht, welche Regeln man dafür beherzigen sollte und welche Analysewerkzeuge dabei unterstützen können.
Inhalt
Regeln für guten Java-Code
Statische Code-Analyse
Refactoring
Werkzeuge zur Sicherung der Qualität
Softwarequalitätssicherung mit Continuous Integration ToolsGFU Cyrus AG
Kurzbeschreibung
Automatische Softwaretests rücken immer mehr in den Mittelpunkt. Gerade die derzeit vielfach eingesetzten agilen Vorgehensweisen benötigen ein teamübergreifendes und reproduzierbares Verfahren zur Sicherung der Softwarequalität. In diesem Vortrag legt Dirk Weil, Geschäftsführer der GEDOPLAN GmbH aus Bielefeld, das Augenmerk auf die Werkzeuge, die in Java-Projekten zum fortlaufenden Build und Test von Software genutzt werden können. Anhand einiger Praxisbeispiele zeigt er den Aufbau und Betrieb einer Continuous-Integration-Umgebung, die GEDOPALN für Softwareprojekte betreibt. Dozent: Dirk Weil, Gedoplan
Inhalt
- Grundlagen und Motivation automatischer Softwaretests
- Testziele und Verfahren (Unit-Tests, Regressionstests, Akzeptanztests etc.)
- Build- und Testautomatisierung
- Beispielumgebung auf Basis von Ant, Maven, Subversion und Hudson
- Code-Analyse
- Extreme Feedback
Agile Oracle database modeling and development - APEX Connect 2020Torsten Kleiber
We try to develop our features agile in branches and to merge them when they are ready for use.
Test Driven Development is on everyone's lips in Java and other languages.
Whether we develop ADF or JET or Spring, we try to apply these techniques in many places.
But what is the real foundation of most of our applications?
That is the Oracle database with its data model and its programming language PL/SQL!
Again and again you hear that merging data model scripts and PL/SQL programs are not practical.
But how are we supposed to develop our frontend according to these techniques if we don't start with it in the backend?
In the presentation I will show you how you can develop your data model and your programs in the database in an agile and test-driven way from the request to the refactoring.
You will see how tools like Git, Liquibase and utPLSQL work together.
GameDuells Software-Architekt Dirk Ehms schildert praxisnahe Lösungsansätze für die Umstellung der modularen Spieleplattform mit über 100 Glassfish-Servern von JEE 6 nach JEE 7.
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...GFU Cyrus AG
Kurzbeschreibung
Softwarequalität ist keine Spracheigenschaft. In jeder noch so guten Programmiersprache kann man schlechte Programme schreiben – sogar in Java. Herr Seekamp, Senior Consultant bei der GEDOPLAN GmbH, macht in diesem Vortrag anhand von Fallbeispielen aus seinen Projekten deutlich, was verständlichen und wartbaren Code ausmacht, welche Regeln man dafür beherzigen sollte und welche Analysewerkzeuge dabei unterstützen können.
Inhalt
Regeln für guten Java-Code
Statische Code-Analyse
Refactoring
Werkzeuge zur Sicherung der Qualität
Softwarequalitätssicherung mit Continuous Integration ToolsGFU Cyrus AG
Kurzbeschreibung
Automatische Softwaretests rücken immer mehr in den Mittelpunkt. Gerade die derzeit vielfach eingesetzten agilen Vorgehensweisen benötigen ein teamübergreifendes und reproduzierbares Verfahren zur Sicherung der Softwarequalität. In diesem Vortrag legt Dirk Weil, Geschäftsführer der GEDOPLAN GmbH aus Bielefeld, das Augenmerk auf die Werkzeuge, die in Java-Projekten zum fortlaufenden Build und Test von Software genutzt werden können. Anhand einiger Praxisbeispiele zeigt er den Aufbau und Betrieb einer Continuous-Integration-Umgebung, die GEDOPALN für Softwareprojekte betreibt. Dozent: Dirk Weil, Gedoplan
Inhalt
- Grundlagen und Motivation automatischer Softwaretests
- Testziele und Verfahren (Unit-Tests, Regressionstests, Akzeptanztests etc.)
- Build- und Testautomatisierung
- Beispielumgebung auf Basis von Ant, Maven, Subversion und Hudson
- Code-Analyse
- Extreme Feedback
Agile Oracle database modeling and development - APEX Connect 2020Torsten Kleiber
We try to develop our features agile in branches and to merge them when they are ready for use.
Test Driven Development is on everyone's lips in Java and other languages.
Whether we develop ADF or JET or Spring, we try to apply these techniques in many places.
But what is the real foundation of most of our applications?
That is the Oracle database with its data model and its programming language PL/SQL!
Again and again you hear that merging data model scripts and PL/SQL programs are not practical.
But how are we supposed to develop our frontend according to these techniques if we don't start with it in the backend?
In the presentation I will show you how you can develop your data model and your programs in the database in an agile and test-driven way from the request to the refactoring.
You will see how tools like Git, Liquibase and utPLSQL work together.
GameDuells Software-Architekt Dirk Ehms schildert praxisnahe Lösungsansätze für die Umstellung der modularen Spieleplattform mit über 100 Glassfish-Servern von JEE 6 nach JEE 7.
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017Torsten Kleiber
Oft fällt die Frage, ob man PL/SQL überhaupt automatisiert testen kann. Deshalb behandelt dieser Vortrag u.a. die folgenden Themen:
- Welche Fehler will ich mit Testautomatisierung überhaupt vermeiden?
- Änderung des Datenmodells
- Änderung bestehender Programme
- Datenbank-Patching/-Upgrade
- Wie sieht eigentlich mein Entwicklungsprozess aus?
- Wie viele Entwickler habe ich?
- Welches Wissen haben meine Entwickler?
- Muss ich branchen?
- Muss ich häufig meinen Code umstrukturieren?
- Welche Frameworks gibt es für die Testautomatisierung?
- SQL Developer
- Quest Code Tester
- utPLSQL
- ruby-plsql-spec
- Welche Voraussetzungen muss ich erfüllen?
- Datenbankversionen
- Infrastruktur
- Für welchen Zweck eignet sich welches Framework?
- Unterstützung von CI-Servern
- Unterstützung von Build Systemen wie z.B. Maven
- Test Driven Development
Neben der Theorie sehen Sie natürlich auch in Demo's, wie sich der Testcode "anfühlt".
Der Vortrag soll Ihnen eine Entscheidungsgrundlage liefern, ob Sie demnächst auch automatisch testen wollen und können!
Bob the Builder - Build & Deploy von ADF Enterprise AnwendungenTorsten Kleiber
Das Team Kreditplattform der IKB entwickelt seit etwa 4 Jahren mit ADF. Wir deployen gegen den WebLogic Server. Mittlerweile arbeiten mittlerweile 15 Entwickler parallel an Projekten und Migrationen. Um dies zu gewährleisten wurden auch eine Menge Architekturentscheidungen neu gefällt und durch entsprechendes Refactoring umgesetzt.
Bereits mit dem ersten Lern-Projekt vor 4 Jahren kam das komplexe Thema Build- und Deployment auf. Da bisher kein Know-How vorhanden war stellte sich schnell die Frage, ob man das automatisieren kann. Aber wer sollte das machen – wir brauchten also „Bob“. Bob kümmert sich seitdem um alle Themen rund um Build und Deployment.
Im Vortrag werden seine bisherigen Entscheidungen und Vorgehensweisen besprochen, aber auch offene Ideen und Punkte angerissen:
- Build-Tools
- Deployment-Tools
- Build-Automatisierungs-Tools
- Branching
- Continuous Integration Server
- Konventionen über Konfigurationen
- Code-Checks
- Build/Deploy Geschwindigkeit
- Eleminieren von Abhängigkeiten
- Minimieren Build/Deployment-Zeiten
- Verfügbarkeiten maximieren
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertGFU Cyrus AG
In agilen Projekten ist funktionierende Software wichtiger als ausufernde Dokumentation. Durch kurze Entwicklungszyklen (Iterationen) werden den Anwendern schon während der Entwicklung Teilpakete der geplanten Softwarelösung mit einem sinnvollen Funktionsumfang bereit gestellt. In agilen Projekten ist die flexible Reaktion auf Änderungen der Anforderungen wichtiger als ein starrer Projektplan. Agilität bei der Entwicklung erfordert aber auch Agilität bei der Beschreibung der funktionalen Anforderungen (Requirements Engineering). Use Case-Modelle eignen sich hervorragend für diese Aufgabe. Durch dieses Vorgehen ist es möglich, Wünsche der Anwender, geänderte Rahmenbedingungen und Erfahrungen aus der bisherigen Entwicklung in der Realisierung zu berücksichtigen. Reinhard Brüggemeyer, Dozent dieses "Treffpunkt Semicolon", zeigt, warum in agilen Projekten der Anwender und seine Aufgaben im Mittelpunkt stehen. Pro und Contra des agilen Vorgehens gegenüber dem klassischen Requirements Engineering werden diskutiert.
Cross-Apps-Entwicklung für iPhone, Android und Co.GFU Cyrus AG
Kurzbeschreibung
Beschreibung: Mit der Veröffentlichung von iPhone, iPod Touch sowie iPad und dem iPhone OS hat Apple den Markt für mobile Endgeräte massenfähig gemacht. Google liefert mit dem Android-Betriebssystem ebenfalls eine stetig wachsende Plattform. Einer der Erfolgsfaktoren ist der auf beiden Systemen verfügbaren Browser "Mobile Safari" bzw. die technologische Basis WebKit. Diese freie HTML-Rendering-Bibliothek wird nicht nur von Apple und Google eingesetzt, sondern auch von anderen Unternehmen, wie Nokia, Adobe und Blackberry verwendet. Dozent: Peter Hecker, GFU Cyrus AG
Inhalt
- Einführung und Motivation
- Die WebKit-Plattform
- Überblick "mobile" Frameworks
- Zusammenfassung und Fazit
Regulatorics: Offside is when the referee whistles - DOAG 2018Torsten Kleiber
The regulatory system has more and more influence on our software development.
Regulatory authorities, external and internal Auditors are increasingly examining our IT and not longer only our business processes and balance sheets. Some of them have better trained IT experts as we can find on the free market.
General standards such as ISO/IEC 2700X but also banking-specific standards such as BAIT and MaRisk now pose challenges that generally only large software manufacturers know. Approximately 40 % of our projects are now regulatory-driven.
Therefore, we are currently redefining our development process in order to implement the following requirements, among others * Unchangeability of the tested artefacts after the test * Functional segregation * Detection of accidental changes or intentional manipulations of the application
The lecture shows the vision of such a safe process. It shows the current status of implementation in SOA and ADF development, for example:
Migration of version management to GIT in Atlassian BitBucket
Application and selection criteria for a branching model
Mandatory code reviews in Atlassian BitBucket
Build and Deployment Pipelines in Jenkins
Automatic documentation in JIRA Issue via Bitbucket and Jenkins.
Maybe you too can minimize the additional work and continue to work agile to meet such requirements.
Virtualisierung ermöglicht es auf einer bestehenden Plattform, dem sogenannten Hostsystem, virtuelle Hardware bereitzustellen. So können auf ein und derselben Hardware mehrere virtuelle Maschinen (VMs) parallel laufen, die dennoch vollständig voneinander isoliert sind.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Torsten Kleiber
Das Team Kreditplattform der IKB entwickelt seit etwa 2 Jahren mit ADF. Wegen der aktuellen Bindung an die SOA Suite verharrten wir seitdem auf der Version 11.1.1.5 mit diversen Bugs. Seit dem Erscheinen der Version 12c wurde die Migration der Anwendung vorbereitet und zum Zeitpunkt des Vortrags gerade abgeschlossen.
Dieser Praxisbericht beleuchtet das Vorgehen und Fallstricke der Migration
- Vorbereitung der Server
- Vorbereitung Entwicklungsumgebung
- Migrationspfad
- Aufgetretene Probleme und deren Lösung
- Bugs & Patches
- Migration MDS
- Automatische und manuelle Tests
Already 4 years we plan the upgrade from 11c to a new supported version.
Somehow, on the one hand business projects were more important, on the other hand the exact technical procedure was not clear.
All databases have to be migrated, but some software vendors did not offer support at all.
The requirements diverged: consolidation to save costs versus dedicated environments to manage security and operations more easily.
When we finally knew how we wanted to proceed, technical details quickly threw the planning off course.
The target platform became 12c, 18 and now 19c
At some point, however, the threat of the final loss of support for 11g and the accumulating other requirements put the necessary pressure on the implementation.
This presentation will show you how and why we proceeded in this way and how we finally reached the finish line.
Maybe our experiences will help some of you to finally take the step!
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Christian Janz
Oft hört man die Aussage, dass man mit JavaScript keine professionellen Geschäftsanwendungen entwickeln kann. In dieser Session möchte ich versuchen, diese Aussage zu widerlegen. Hierzu werde ich zeigen, wie bewährte Konzepte, wie z.B. Continuous Integration, für eine AngularJS-Anwendung verwendet und umgesetzt werden können.
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGTorsten Kleiber
Bei der Nutzung von ADF im Unternehmensumfeld wird man schnell erschlagen von der Fülle der Entscheidungen z. B. zu Architektur, zur Anwendung von Best Practices und Regeln.
Generell gilt das geflügelte Wort one size does not fit all: Jede der getroffenen Vorgaben ist für das Unternehmen, die Applikation oder sogar das einzelne Codefragment zu prüfen und zu hinterfragen. Die Nichtanwendung im Einzelfall sollte dokumentiert werden.
Wenn man sich denn einmal für einzuhaltende Regeln entschieden hat, wie prüft man diese an verschiedenen Stellen im Entwicklungsprozess? Wie sorgt man dafür, dass der Entwickler diese Regeln anwendet, ohne sich ständig weiterentwickelnde Entwicklerhandbücher durchlesen zu müssen?
Der Vortrag geht exemplarisch auf die in der ADF Entwicklung der IKB eingeführten Tools, Prozesse und Regeln ein, um eine qualitative Verbesserung der Code Basis zu erreichen und stellt genutzte Möglichkeiten zur Durchsetzung kritischer Regeln vor.
Bestandteile der aktuellen Lösung sind die Prüfung der Regeln im:
- JDeveloper mit
- Skripten für PMD, Findbugs und Checkstyle zur statischen Codeanalyse
- der integrierten Task View
- der JUnit Extension
- Skripten für JaCoCo zur Testabdeckung
- Continous Integration Server Jenkins mit den Plugins
- PMD, Findbugs und Checkstyle zur statischen Codeanalyse
- Task Scanner zur Prüfung offener Punkte
- Junit zur Testausführung
- JaCoCo zur Testabdeckung
Verteilte Anwendungen bei Azure mit Docker und KubernetesGregor Biswanger
Kubernetes ermöglicht eine Automatisierung der Bereitstellung, Skalierung und Verwaltung von verteilten Docker-Container. Der Einstieg, die Umsetzung und Wartung hingegen ist eine extreme Herausforderung und kostet am Ende nicht nur viel Geld, sondern auch Ihre Nerven. Microsoft Azure bietet mit den Azure Kubernetes Services (Kurz AKS) die Erlösung, der soeben genannten Schmerzen. In dieser Session zeigt Ihnen der Docker- und Azure-Experte Gregor Biswanger einen Überblick von Kubernetes und wie einfach Azure für uns eine Kuberenetes-Landschaft herbeizaubern kann.
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
Das Dokumentieren einer API wird oft als mühsame, aber wesentliche Aufgabe angesehen. Mit OpenAPI / Swagger können wir eine API-Dokumentation angenehm einfach in ASP.NET Core integrieren. Gregor Biswanger zeigt, wie eine API-Dokumentation mit einer Benutzeroberfläche hinzugefügt wird, mit der wir die API testen können.
Als Nächstes erfahren wir, wie wir Attribute und Konventionen verwenden, um die generierte OpenAPI-Spezifikation zu verbessern. Abschließend wird gezeigt, wie wir mit der Authentifizierung, Versionierung und Anpassung der Benutzeroberfläche umgehen.
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017Torsten Kleiber
Oft fällt die Frage, ob man PL/SQL überhaupt automatisiert testen kann. Deshalb behandelt dieser Vortrag u.a. die folgenden Themen:
- Welche Fehler will ich mit Testautomatisierung überhaupt vermeiden?
- Änderung des Datenmodells
- Änderung bestehender Programme
- Datenbank-Patching/-Upgrade
- Wie sieht eigentlich mein Entwicklungsprozess aus?
- Wie viele Entwickler habe ich?
- Welches Wissen haben meine Entwickler?
- Muss ich branchen?
- Muss ich häufig meinen Code umstrukturieren?
- Welche Frameworks gibt es für die Testautomatisierung?
- SQL Developer
- Quest Code Tester
- utPLSQL
- ruby-plsql-spec
- Welche Voraussetzungen muss ich erfüllen?
- Datenbankversionen
- Infrastruktur
- Für welchen Zweck eignet sich welches Framework?
- Unterstützung von CI-Servern
- Unterstützung von Build Systemen wie z.B. Maven
- Test Driven Development
Neben der Theorie sehen Sie natürlich auch in Demo's, wie sich der Testcode "anfühlt".
Der Vortrag soll Ihnen eine Entscheidungsgrundlage liefern, ob Sie demnächst auch automatisch testen wollen und können!
Bob the Builder - Build & Deploy von ADF Enterprise AnwendungenTorsten Kleiber
Das Team Kreditplattform der IKB entwickelt seit etwa 4 Jahren mit ADF. Wir deployen gegen den WebLogic Server. Mittlerweile arbeiten mittlerweile 15 Entwickler parallel an Projekten und Migrationen. Um dies zu gewährleisten wurden auch eine Menge Architekturentscheidungen neu gefällt und durch entsprechendes Refactoring umgesetzt.
Bereits mit dem ersten Lern-Projekt vor 4 Jahren kam das komplexe Thema Build- und Deployment auf. Da bisher kein Know-How vorhanden war stellte sich schnell die Frage, ob man das automatisieren kann. Aber wer sollte das machen – wir brauchten also „Bob“. Bob kümmert sich seitdem um alle Themen rund um Build und Deployment.
Im Vortrag werden seine bisherigen Entscheidungen und Vorgehensweisen besprochen, aber auch offene Ideen und Punkte angerissen:
- Build-Tools
- Deployment-Tools
- Build-Automatisierungs-Tools
- Branching
- Continuous Integration Server
- Konventionen über Konfigurationen
- Code-Checks
- Build/Deploy Geschwindigkeit
- Eleminieren von Abhängigkeiten
- Minimieren Build/Deployment-Zeiten
- Verfügbarkeiten maximieren
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertGFU Cyrus AG
In agilen Projekten ist funktionierende Software wichtiger als ausufernde Dokumentation. Durch kurze Entwicklungszyklen (Iterationen) werden den Anwendern schon während der Entwicklung Teilpakete der geplanten Softwarelösung mit einem sinnvollen Funktionsumfang bereit gestellt. In agilen Projekten ist die flexible Reaktion auf Änderungen der Anforderungen wichtiger als ein starrer Projektplan. Agilität bei der Entwicklung erfordert aber auch Agilität bei der Beschreibung der funktionalen Anforderungen (Requirements Engineering). Use Case-Modelle eignen sich hervorragend für diese Aufgabe. Durch dieses Vorgehen ist es möglich, Wünsche der Anwender, geänderte Rahmenbedingungen und Erfahrungen aus der bisherigen Entwicklung in der Realisierung zu berücksichtigen. Reinhard Brüggemeyer, Dozent dieses "Treffpunkt Semicolon", zeigt, warum in agilen Projekten der Anwender und seine Aufgaben im Mittelpunkt stehen. Pro und Contra des agilen Vorgehens gegenüber dem klassischen Requirements Engineering werden diskutiert.
Cross-Apps-Entwicklung für iPhone, Android und Co.GFU Cyrus AG
Kurzbeschreibung
Beschreibung: Mit der Veröffentlichung von iPhone, iPod Touch sowie iPad und dem iPhone OS hat Apple den Markt für mobile Endgeräte massenfähig gemacht. Google liefert mit dem Android-Betriebssystem ebenfalls eine stetig wachsende Plattform. Einer der Erfolgsfaktoren ist der auf beiden Systemen verfügbaren Browser "Mobile Safari" bzw. die technologische Basis WebKit. Diese freie HTML-Rendering-Bibliothek wird nicht nur von Apple und Google eingesetzt, sondern auch von anderen Unternehmen, wie Nokia, Adobe und Blackberry verwendet. Dozent: Peter Hecker, GFU Cyrus AG
Inhalt
- Einführung und Motivation
- Die WebKit-Plattform
- Überblick "mobile" Frameworks
- Zusammenfassung und Fazit
Regulatorics: Offside is when the referee whistles - DOAG 2018Torsten Kleiber
The regulatory system has more and more influence on our software development.
Regulatory authorities, external and internal Auditors are increasingly examining our IT and not longer only our business processes and balance sheets. Some of them have better trained IT experts as we can find on the free market.
General standards such as ISO/IEC 2700X but also banking-specific standards such as BAIT and MaRisk now pose challenges that generally only large software manufacturers know. Approximately 40 % of our projects are now regulatory-driven.
Therefore, we are currently redefining our development process in order to implement the following requirements, among others * Unchangeability of the tested artefacts after the test * Functional segregation * Detection of accidental changes or intentional manipulations of the application
The lecture shows the vision of such a safe process. It shows the current status of implementation in SOA and ADF development, for example:
Migration of version management to GIT in Atlassian BitBucket
Application and selection criteria for a branching model
Mandatory code reviews in Atlassian BitBucket
Build and Deployment Pipelines in Jenkins
Automatic documentation in JIRA Issue via Bitbucket and Jenkins.
Maybe you too can minimize the additional work and continue to work agile to meet such requirements.
Virtualisierung ermöglicht es auf einer bestehenden Plattform, dem sogenannten Hostsystem, virtuelle Hardware bereitzustellen. So können auf ein und derselben Hardware mehrere virtuelle Maschinen (VMs) parallel laufen, die dennoch vollständig voneinander isoliert sind.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Torsten Kleiber
Das Team Kreditplattform der IKB entwickelt seit etwa 2 Jahren mit ADF. Wegen der aktuellen Bindung an die SOA Suite verharrten wir seitdem auf der Version 11.1.1.5 mit diversen Bugs. Seit dem Erscheinen der Version 12c wurde die Migration der Anwendung vorbereitet und zum Zeitpunkt des Vortrags gerade abgeschlossen.
Dieser Praxisbericht beleuchtet das Vorgehen und Fallstricke der Migration
- Vorbereitung der Server
- Vorbereitung Entwicklungsumgebung
- Migrationspfad
- Aufgetretene Probleme und deren Lösung
- Bugs & Patches
- Migration MDS
- Automatische und manuelle Tests
Already 4 years we plan the upgrade from 11c to a new supported version.
Somehow, on the one hand business projects were more important, on the other hand the exact technical procedure was not clear.
All databases have to be migrated, but some software vendors did not offer support at all.
The requirements diverged: consolidation to save costs versus dedicated environments to manage security and operations more easily.
When we finally knew how we wanted to proceed, technical details quickly threw the planning off course.
The target platform became 12c, 18 and now 19c
At some point, however, the threat of the final loss of support for 11g and the accumulating other requirements put the necessary pressure on the implementation.
This presentation will show you how and why we proceeded in this way and how we finally reached the finish line.
Maybe our experiences will help some of you to finally take the step!
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Christian Janz
Oft hört man die Aussage, dass man mit JavaScript keine professionellen Geschäftsanwendungen entwickeln kann. In dieser Session möchte ich versuchen, diese Aussage zu widerlegen. Hierzu werde ich zeigen, wie bewährte Konzepte, wie z.B. Continuous Integration, für eine AngularJS-Anwendung verwendet und umgesetzt werden können.
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGTorsten Kleiber
Bei der Nutzung von ADF im Unternehmensumfeld wird man schnell erschlagen von der Fülle der Entscheidungen z. B. zu Architektur, zur Anwendung von Best Practices und Regeln.
Generell gilt das geflügelte Wort one size does not fit all: Jede der getroffenen Vorgaben ist für das Unternehmen, die Applikation oder sogar das einzelne Codefragment zu prüfen und zu hinterfragen. Die Nichtanwendung im Einzelfall sollte dokumentiert werden.
Wenn man sich denn einmal für einzuhaltende Regeln entschieden hat, wie prüft man diese an verschiedenen Stellen im Entwicklungsprozess? Wie sorgt man dafür, dass der Entwickler diese Regeln anwendet, ohne sich ständig weiterentwickelnde Entwicklerhandbücher durchlesen zu müssen?
Der Vortrag geht exemplarisch auf die in der ADF Entwicklung der IKB eingeführten Tools, Prozesse und Regeln ein, um eine qualitative Verbesserung der Code Basis zu erreichen und stellt genutzte Möglichkeiten zur Durchsetzung kritischer Regeln vor.
Bestandteile der aktuellen Lösung sind die Prüfung der Regeln im:
- JDeveloper mit
- Skripten für PMD, Findbugs und Checkstyle zur statischen Codeanalyse
- der integrierten Task View
- der JUnit Extension
- Skripten für JaCoCo zur Testabdeckung
- Continous Integration Server Jenkins mit den Plugins
- PMD, Findbugs und Checkstyle zur statischen Codeanalyse
- Task Scanner zur Prüfung offener Punkte
- Junit zur Testausführung
- JaCoCo zur Testabdeckung
Verteilte Anwendungen bei Azure mit Docker und KubernetesGregor Biswanger
Kubernetes ermöglicht eine Automatisierung der Bereitstellung, Skalierung und Verwaltung von verteilten Docker-Container. Der Einstieg, die Umsetzung und Wartung hingegen ist eine extreme Herausforderung und kostet am Ende nicht nur viel Geld, sondern auch Ihre Nerven. Microsoft Azure bietet mit den Azure Kubernetes Services (Kurz AKS) die Erlösung, der soeben genannten Schmerzen. In dieser Session zeigt Ihnen der Docker- und Azure-Experte Gregor Biswanger einen Überblick von Kubernetes und wie einfach Azure für uns eine Kuberenetes-Landschaft herbeizaubern kann.
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
Das Dokumentieren einer API wird oft als mühsame, aber wesentliche Aufgabe angesehen. Mit OpenAPI / Swagger können wir eine API-Dokumentation angenehm einfach in ASP.NET Core integrieren. Gregor Biswanger zeigt, wie eine API-Dokumentation mit einer Benutzeroberfläche hinzugefügt wird, mit der wir die API testen können.
Als Nächstes erfahren wir, wie wir Attribute und Konventionen verwenden, um die generierte OpenAPI-Spezifikation zu verbessern. Abschließend wird gezeigt, wie wir mit der Authentifizierung, Versionierung und Anpassung der Benutzeroberfläche umgehen.
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...Marc Müller
Mittlerweile haben sich im VS-Umfeld immer mehr Nicht-MSTest-Testframeworks etabliert. Im Vortrag wollen wir auf mögliche Alternativen zu MSTest und Coded UI eingehen (z. B. Selenium, Ranorex, Protractor, …). Es geht dabei um Vor-/Nachteile, sinnvolle Szenarien und wie man es geschickt in die TFS-Werkzeugwelt integriert. Das Ziel ist dabei, das Beste aus beiden Welten zu bekommen.
http://www.opitz-consulting.com/go/3-6-11 --- Softwareentwicklung, -test und -betrieb können durch Virtualisierung viele Vorteile erzielen. In diesem Zusammenhang werden häufig Werkzeuge für die Bereitstellung von Umgebungen eingesetzt. Verschiedene Werkzeuge adressieren aber unterschiedliche Einsatzszenarien. Wo im Applikationslebenszyklus können diese Werkzeuge sinnvoll eingesetzt werden und wie sieht es mit Kosten und Nutzen aus? ---- Unser Senior Software Architect Richard Attermeyer stellte bei der W Jax am 5.11.2014 in München die Tools Vagrant, Puppet und Docker im Einzelnen vor und erläuterte ihren Nutzen anhand von Use Cases und Live Demos. ---- Weitere Infos: https://jax.de/wjax2014/sessions/vagrant-puppet-docker-fuer-entwickler-und-architekten ---- Über uns: Als führender Projektspezialist für ganzheitliche IT-Lösungen tragen wir zur Wertsteigerung der Organisationen unserer Kunden bei und bringen IT und Business in Einklang. Mit OPITZ CONSULTING als zuverlässigem Partner können sich unsere Kunden auf ihr Kerngeschäft konzentrieren und ihre Wettbewerbsvorteile nachhaltig absichern und ausbauen.---- Über unsere IT-Beratung: http://www.opitz-consulting.com/go/3-8-10 ---- Unser Leistungsangebot: http://www.opitz-consulting.com/go/3-8-874 ---- Karriere bei OPITZ CONSULTING: http://www.opitz-consulting.com/go/3-8-5
Forms and Reports 12c - Processes and Automation in Development and OperationsTorsten Kleiber
The current target architecture of IKB's credit and loan management is based on Oracle ADF and SOA and of course the database. But how can you protect in this time your Oracle Forms & Reports longtime investments, can you support their Development Lifecycle by Automation?
Many supporting technologies from the Java environment, such as branching models, automated build and deploy procedures or code review were established with the Oracle technologies and in the course of the regulatory process.
But there is still a large part of the Oracle Forms & Reports that have grown over 25 years and have not yet been replaced. Actually, we hoped that we would no longer need a version higher than 11g. Forms & Reports had been running very stably for years. A bug brought the migration to 12c back into focus to further run supported versions. The regulatory environment did the rest to revise the current processes and, where possible, to automate them.
So how do supporting technologies and automation fit in here?
I will show you a selection of these processes from IKB's development and operations life cycle:
* Installation of application server
* Regular patching
* Packaging of the local development environment
* Requirements documentation
* Branching
* Development
* Code Review
* Merge
* Deployment
* Traceability for Regulatory Purposes
The following tools are used, among others
* Jenkins
* Scripting with Bash and Powershell
* Git
* Bitbucket
* JIRA
* FormsAPI Master
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...Marc Müller
Mittlerweile haben sich im VS-Umfeld immer mehr Nicht-MSTest-Testframeworks etabliert. Im Vortrag wollen wir auf mögliche Alternativen zu MSTest und Coded UI eingehen (z. B. Selenium, Ranorex, Protractor, …). Es geht dabei um Vor-/Nachteile, sinnvolle Szenarien und wie man es geschickt in die TFS-Werkzeugwelt integriert. Das Ziel ist dabei, das Beste aus beiden Welten zu bekommen
Im alltäglichen Einsatz verwenden wir eine potentiell steigende Anzahl an immer größeren Bibliotheken. Diese helfen uns schneller und effizienter unsere Ziele zu erreichen, werden ständig gewartet und ersparen nebenbei auch jede Menge Fehlerlösungs- und Dokumentationsaufwand. Gleichzeitig bedeuten sie jedoch einen unmittelbar höheren Aufwand für das Build und Dependency Management. Wie bekommt man dieses Problem in den Griff?
In der letzten Dekade hat das BuildSystem CMake diesbezüglich große Fortschritte bei der schnellen und alltäglichen Wiederverwendbarkeit von C++ Code bewirkt. So fördert zum Beispiel die Unabhängigkeit von spezifischen BuildSystemen zusammen mit Git und innovativen Hostern wie GitHub insbesondere die Entstehung und Verwendung von OpenSource
Software. Wie sieht die Zukunft aus?
Dependency Manager wie biicode zeigen einen noch komfortableren Weg auf, mit eigenem oder Drittanbieter Code zu arbeiten. Download, Build und Einbindung von Dependencies wird damit so einfach wie das Installieren einer App aus dem AppShop. Doch welche Vor- und Nachteile hat dieses System? Welche Alternativen gibt es?
Das Build-Tool Apache Maven hält zunehmend Einzug in Projekte. Es ist aber mehr als "nur" ein Build-Tool. In seinem Vortrag „Automatischer Build mit Maven“ stellt Stefan Scheidt Maven vor und beleuchtet einige fortgeschrittene Themen.
The article "WebLogic Server verwendet die Basis 12 - Das Dutzend ist voll" was published in the German Java Magazin 9.2012 and introduces WebLogic Server 12c with the complete Java EE 6 certification. Now WebLogic Server 12.1.3 supports Java SE 8 since JavaOne 2014 and WebLogic Server 12.1.3 supports some of the Java EE 7
specifications until it's fully Java EE 7 certified with WLS 12.2.1.
Nur wenn Softwaretests einfach durchzuführen sind, werden sie im Projekt auch wirklich eingesetzt und verhelfen zu mehr Softwarequalität. Idealerweise geschieht dies automatisiert.
Ähnlich wie Von Maven zu Gradle in 45 Minuten (20)
Mit ChatGPT Dinosaurier besiegen - Möglichkeiten und Grenzen von LLM für die ...QAware GmbH
Generative AI for Developers, 27.05.2024, Bonn (Martin Binder, Lead IT Consultant bei QAware)
Die kritische Infrastruktur wird nach wie vor von Dinosauriersystemen aus dem letzten Jahrtausend getragen. Die Ablösung dieser Altsysteme ist ein drängendes Problem der Digitalisierung in Deutschland. In meinem Projekt musste ich in wenigen Wochen ein 30 Jahre altes System auf Basis von IBM iSeries (AS/400) mit RPG-Code analysieren. Überraschenderweise kannte ChatGPT die RGP-Referenz von IBM. Mithilfe von ChatGPT konnte ich mich schnell einarbeiten und so ein brauchbares Arbeitsverständnis des Systems erreichen. Aber wo Licht ist, ist auch Schatten: ChatGPT hat kein Kontextverständnis, ist unvollständig und neigt zu Fehlschlüssen. Als Vorgeschmack hier der Powermove: ChatGPT nach jeder Antwort grundsätzlich danach fragen, was es falsch gemacht hat. Du wirst überrascht sein!
50 Shades of K8s Autoscaling #JavaLand24.pdfQAware GmbH
JavaLand 2024, April 2024, Mario-Leander Reimer
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Abstract:
Elasticity and unlimited scalability are the holy grail for any cloud-native application. Now you might think: “That’s easy!!! I just run my containers on a Kubernetes cluster and I am done.” But is it really that simple?
Turns out it’s not! Your application as well as your cloud infrastructure and K8s cluster need to address and support these non-functional requirements.
This session will have a detailed and also practical look at the different ways of autoscaling in Kubernetes. We will give an overview of the technical foundations and prerequisites, and then showcase several frameworks and technologies that can be used to flexibly autoscale your cluster and your cloud-native workloads.
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...QAware GmbH
GPM Regionalgruppe Chemnitz (Patrick Albert)
Wegen ihres Umfangs und Komplexität sind größere SAFe-Programme bereits in Präsenz hinsichtlich ihres Managements und ihrer Steuerung anspruchsvoll. Aufgrund von COVID19 jedoch war eine Verlegung in den virtuellen Raum im beschriebenen Praxisfall unausweichlich. Das Management hatte hierbei sicherzustellen, dass die Programmziele trotz des verminderten Kontaktes allen beteiligten Teams dauerhaft klar und präsent sind und dass die in den Teams umgesetzten Funktionen außerdem den genannten Programmzielen dienen.
Besonders wichtig ist dieses Alignment im Rahmen der regelmäßigen PI-Plannings, in welchen alle Teams gleichzeitig die jeweils kommenden Iterationen planen und dabei auch teamübergreifende Abhängigkeiten zuverlässig berücksichtigen müssen.
Es werden Erfolgsfaktoren für den virtuellen Einsatz von SAFe herausgearbeitet und beleuchtet.
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN MainzQAware GmbH
When it comes to the question: "Where do we actually store our application data?", we are spoilt for choice, especially when it comes to the major cloud providers.
The simple and often completely valid answer is still the classic relational database! It is very suitable for many areas of application, as the technology is tried and tested and can cover a very broad spectrum. It is therefore not surprising that all major cloud providers offer this as a "managed service".
For some years now, however, there have also been so-called cloud-native databases that have been specially developed for the requirements of the cloud. The big promise: "Infinite scalability"
In a large customer project, we have been using such a database productively for over 4 years with Azure CosmosDB. The presentation will deal with the following questions, among others
What does "upscalability" mean in practice ?
What do you have to pay attention to when designing?
What are the actual limits?
What other special features do I get?
When do I need a cloud-native database?
But that's not all! We also look beyond Azure to the other two major cloud providers: AWS and Google Cloud. With DynamoDB and Datastore/Firestore, they have similar products on offer.
Down the Ivory Tower towards Agile ArchitectureQAware GmbH
iSAQB Software Architecture Gathering – Digital 2023, November 2023
Architecture for agile projects must be defined and described differently, as well as continuously developed and evolved. Not all decisions are made at once, nor are they all known right from the start of the project. This sessions presents various useful and lightweight methods, tools and team topologies that can be applied in (large) agile projects to avoid uncontrolled growth and architectural erosion but without acting from the ivory tower and thus suffocating team autonomy.
"Mixed" Scrum-Teams – Die richtige Mischung macht's!QAware GmbH
IT-Tage 2023, Frankfurt am Main (Patrick Albert)
Die Rollen und insbesondere deren Zuständigkeiten sind in Scrum recht klar geregelt: Der Product Owner sorgt für das "Was", der Scrum Master für das "Wie" und die Developer für die eigentliche Umsetzung. Solange es sich dabei um ein internes Projekt mit einem komplett internen Team handelt, sind damit bereits die zentralen Fragen beantwortet. Ein wenig differenzierter zu betrachten sind allerdings Teams mit mehreren Parteien wie etwa beim Einsatz von Dienstleistern. Muss etwa zwingend der Kunde den Product Owner stellen oder kann dieser auch auf der Seite des Dienstleisters stehen? Falls alle Developer vom gleichen Dienstleister bereitgestellt werden, würde diese Konstellation sicherlich einige Kommunikationswege verkürzen. Allerdings hat ein Product Owner auf der Seite eines Dienstleisters sicher nicht die gleichen Verbindungen zu den Stakeholdern (Nutzer, Geldgeber, ...) des Produkts wie ein interner Product Owner – wie also könnte er ihre Anforderungen dann gut vor dem Team vertreten? Ähnliche Fragen stellen sich auch für den Scrum Master und das Development-Team. In den meisten Fällen gibt es für verschiedene Konstellationen jeweils Vor- und Nachteile – und zwar sowohl für den Kunden als auch für den Dienstleister. Wichtig bei der Entscheidung für eine dieser Konstellationen ist außerdem die Art des Projekts, der Kreis der Stakeholder, das zur Verfügung stehende Budget, der Zeitrahmen und noch einiges mehr.
Dieser Vortrag beleuchtet verschiedene dieser Varianten und zeigt Vorteile, Nachteile und Risiken auf.
Make Developers Fly: Principles for Platform EngineeringQAware GmbH
Make Developers Fly – Helping developers to build better applications
Cloud Native Night, Mainz, November 2023, Alex Krause
Platform Engineering is the next stage of DevOps and accelerates software developers even more to build applications faster and bring products rapidly to the customers. In this meetup, we show you the key principles of platform engineering, as we experienced them in our projects, and additionally show you a better way to manage your internal software platforms.
PRINCIPLES FOR PLATFORM ENGINEERING, Alex Krause
How do we help our developers to fly instead of crashing miserablely? The answer is Platform Engineering, a discipline for building internal developer platforms (IDPs) to simplify software delivery for product teams. In this talk, you'll learn how Platform Engineering evolved from the DevOps movement and what principles and best practices make for a good implementation. Finally, we'll take a look at reference architectures that can support your platform.
Der Tod der Testpyramide? – Frontend-Testing mit PlaywrightQAware GmbH
Codineers Rosenheim Meetup, 2. November 2023 (Dominik Haas, QAware)
Wer kennt es nicht: Langsame, instabile und wartungsintensive Tests von Frontends und die Schmerzen damit.
Aber in den letzten Jahren und Monaten hat sich hier viel getan und Playwright ist der vielversprechende neue Stern der Web-Automatisierung.
Ich werde in meinem Talk über das Testen von Frontends sprechen und speziell auf Playwright als spannendes Werkzeug eingehen.
Neben der praktischen Einführung möchte ich auch mit Euch über Best Practices sprechen und einen Versuch wagen die Testpyramide zu töten (oder sie zumindest etwas zu beschädigen).
Sie kennen doch bestimmt das "Gesetz des Instruments": Wer als Werkzeug nur ein modernes Frontend-Framework hat, löst jedes Problem mit einer Single Page-Applikation. So oder so ähnlich, nur halt mit Hammer und Nagel lautet es, beschreibt jedoch ganz gut die aktuelle Situation der JavaScript-Welt. Auf nahezu jede Anforderung wird mit einer aufgeblähten, clientseitig gerenderten SPA geantwortet. Doch ist es schön langsam an der Zeit, dass wir uns fragen sollten: Ist das wirklich alles? Und die Antwort lautet ziemlich sicher "Nein". Doch genau diesem Thema widmen wir uns und werfen einen Blick auf die Alternativen und da gibt es viele.
Im React-Ökosystem findet aktuell ein kleiner Umbruch statt. Mit Server Side Rendering, Static Site Generation, Server Components und Frameworks wie Next verschiebt sich ein Teil der Arbeit in Richtung Server. Dieser Trend ist auch bei Vue, Svelte und Angular zu beobachten. Und genau das ist es, was die sogenannten Meta-Frameworks ausmacht. Uns als EntwicklerInnen gibt das mehr Flexibilität, um auf Anforderungen reagieren zu können. Sie müssen nicht mehr den kompletten Quellcode zum Client übertragen, haben bessere Caching-Möglichkeiten und auch die Suchmaschinen sind Ihnen dankbar.
Dieser Vortrag gibt Ihnen einen Überblick über die wichtigsten Features von Meta-Frameworks und wo und vor allem wie sie gewinnbringend eingesetzt werden können.
Digital Future Congress (DFC) 2023, September 2023, München, Andreas Zitzelsberger (Business Unit Director bei QAware)
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Alt-Systeme in die Cloud migrieren – mit sechs Leitplanken geht das effizient und sicher. Neu: Künstliche Intelligenz kann jetzt zum Turbo werden! Wir nutzen KI bei der Cloud-Migration und zeigen in diesem Vortrag, was geht und was nicht.
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...QAware GmbH
MedTech Stars, Webkonferenz, September 2023, Josef Adersberger (CEO bei QAware)
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Der Vortrag „Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die Seele verkaufen oder Himmel auf Erden?“ erkundet das wachsende Bedürfnis und die Herausforderungen, medizinische Anwendungen in die Cloud zu migrieren.
Bei den entsprechenden Anwendungen stellt laut einer Umfrage der Datenschutz für 82% der Anwendungen die größte Herausforderung dar, um den Schritt in die Cloud zu machen. Trotzdem wächst der Druck, diesen Schritt zu vollziehen, aufgrund des Innovations- und Digitalisierungsbedarfs, der durch gesetzliche Initiativen wie das Krankenhaus-Zukunftsgesetz, gestiegene Patientenerwartungen und den immer klareren medizinischen Impact der Digitalisierung angetrieben wird.
Die zentrale Frage, die in diesem Vortrag erörtert wird, ist, wie man hochregulierte Anwendungen schrittweise in die Cloud migrieren kann. Hierzu werden wir einen Ansatz vorstellen und anhand von exemplarischen Anwendungen demonstrieren, wie eine solche Migration erfolgreich durchgeführt werden kann. Abschließend fassen wir den Vortrag mit fünf leitenden Prinzipien zusammen, die bei der Migration von stark regulierten Anwendungen in die Cloud beachtet werden sollten. Diese Prinzipien bieten einen nützlichen Leitfaden für Unternehmen und Institutionen, die den Umzug ihrer Anwendungen in die Cloud erwägen, und sollen dazu beitragen, die Herausforderungen der Cloud-Migration in diesem hochregulierten Bereich erfolgreich zu bewältigen.
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster QAware GmbH
SAA 2023 | Software Architecture Alliance, September 2023, München, Mario-Leander Reimer (@LeanderReimer, CTO bei QAware)
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Die Cloud hat bereits heute einen größeren CO2-Fußabdruck als die Luftfahrtindustrie, mit steigender Digitalisierung und Cloudifizierung wird sich dieser Trend fortsetzen, wenn wir nichts dagegen unternehmen. Viele Kubernetes-basierte Installationen sind gemessen am eigentlich benötigten Ressourcen Bedarf stark überdimensioniert und tragen so unnötig zur globalen Erwärmung bei. Wie sieht die Energiebilanz Ihres Clusters und Workloads aus?
In diesem Vortrag zeigen wir Ansätze und Technologien, die dabei helfen K8s-Cluster grün(er) zu machen. Zunächst braucht es Transparenz: Wie sieht die Energiebilanz des Clusters und seiner Workloads aus? Erst danach lassen sich diese gezielt auf ihre Energiesparsamkeit hin optimieren. Und das ist gar nicht so schwer, also packen wir es an!
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.QAware GmbH
SAA 2023 | Software Architecture Alliance, September 2023, München, Ildikó Tárkányi (Senior Software Engineer bei QAware)
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Der Traum von den unendlichen Weiten der Daten ist schnell ausgeträumt, wenn wir unsere APIs nicht im Griff haben. Dabei ist es egal, ob wir uns APIs zwischen unseren Services, zwischen Frontend und Backend oder zu Fremdsystemen anschauen - APIs sind ein fundamentaler Bestandteil unserer Softwarearchitektur und ohne Testautomatisierung geht gar nichts.
Schlecht geschriebene Integrationstests mit selbst erfundenen Testfällen für unsere APIs können richtig nerven: Wir rufen die APIs auf und hoffen, dass genau das zurückkommt, was wir erwarten.
Das geht auch anders: Wir werfen einen Blick auf andere Testansätze, bewerten, welche Aspekte diese jeweils testen und schauen zum Beispiel auf:
• Contract Based Testing
• Black Box Testing der OpenAPI Specs
• Trace-basiertes Testing
Kubernetes with Cilium in AWS - Experience Report!QAware GmbH
Cloud Native Night, Munich, September 2023, Bernhard Schaidhammer
=== Please download slides if blurred! ===
Cilium is a powerful tool for network policies and also encryption between the Kubernetes nodes. Cilium hooks deep into Kubernetes in the network stack as an plugin and can even replace the AWS CNI Plugin. This talk will share our project experiences.
Topics involve:
- Network Policies
- Encryption
- Hubble (Observability)
- Installation
- CLI Usage (Hubble / Cilium)
Container Days 2023, September 2023, Hamburg, Mario-Leander Reimer (@LeanderReimer, CTO @QAware).
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Elasticity and unlimited scalability are the holy grail for any cloud-native application. Now you might think: “That’s easy!!! I just run my containers on a Kubernetes cluster and I am done.” But is it really that simple?
Turns out it’s not! Your application as well as your cloud infrastructure and K8s cluster need to address and support these non-functional requirements.
This session will have a detailed and also practical look at the different ways of autoscaling in Kubernetes. We will give an overview of the technical foundations and prerequisites, and then showcase several frameworks and technologies that can be used to flexibly autoscale your cluster and your cloud-native workloads.
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAPQAware GmbH
Heise DevSec 2023, September 2023, Karlsruhe, Mario-Leander Reimer (@LeanderReimer, CTO @QAware).
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Continuous Delivery ist allgegenwärtig. Wirklich? Viele Teams straucheln immer noch dabei, regelmäßig gut getestete und vor allem sichere Software auszuliefern. Immer mit der gleichen, guten alten Ausrede: die nicht-funktionalen Tests seien zu aufwändig und zu teuer umzusetzen. Doch genau das Gegenteil ist der Fall!
In diesem Vortrag gehen wir kurz auf die aktuellen Bedrohungen und die Bedeutung früher und regelmäßiger Sicherheitstests von APIs ein. Anschließend zeigen wir, wie einfach es ist, diese Tests kontinuierlich und asynchron mit OWASP ZAP und Testkube gegen REST- und GraphQL-APIs direkt auf einem Kubernetes-Cluster auszuführen; immer dann wenn sich die API und der Service ändern.
Service Mesh Pain & Gain. Experiences from a client project.QAware GmbH
Cloud Native Night, Mainz, September 2023, Markus Zimmermann
=== Please download slides if blurred! ===
The topic of service mesh is still present at every major DevOps conference and is the subject of controversial discussions.
A service mesh comes with the promise of implementing cross-functional requirements of microservices such as observability or secure communication without changes within the services. The operational effort and the integration of the services within the service mesh should also be problem-free.
But do the common service mesh implementations keep these promises? In a client project we have gained experience with Linkerd and can say: we did not achieve the benefits without pain. We want to share these experiences and what you can take away for your next project!
WeAreDevelopers World Congress 2023, July 2023, Mario-Leander Reimer
=== Please download slides if blurred! ===
Elasticity and unlimited scalability are the holy grail for any cloud-native application. Now you might think: “That’s easy!!! I just run my containers on a Kubernetes cluster and I am done.” But is it really that simple?
Turns out it’s not! Your application as well as your cloud infrastructure and K8s cluster need to address and support these non-functional requirements.
This session will have a detailed and also practical look at the different ways of autoscaling in Kubernetes.
We will give an overview of the technical foundations and prerequisites, and then showcase several frameworks and technologies that can be used to flexibly autoscale your cluster and your cloud-native workloads.
Blue turns green! Approaches and technologies for sustainable K8s clusters.QAware GmbH
Kubernetes Community Days Munich 2023, Juli 2023, Mario-Leander Reimer
The cloud already has a larger CO2 footprint than the worldwide aviation industry. With increasing digitalization and cloudification this trend will continue if we don't do anything about it. Many Kubernetes installations are greatly oversized in terms of the resources actually required and thus contribute unnecessarily to global warming. What is the energy balance of your cluster and its workloads?
In this session we will discuss approaches and technologies that help to make K8s clusters green(er). First of all, transparency is needed: what is the energy balance of the cluster and its workloads? Only then we can start to optimize for better energy efficiency. And it's not that difficult, so let's get started!
Per Anhalter zu Cloud Nativen API GatewaysQAware GmbH
Mastering Kubernetes 2023, Juli 2023, Sonja Wegner
Gute APIs sind das Herzstück erfolgreicher digitaler Produkte und Cloud-nativer Anwendungen. Doch schlecht verwaltete APIs werden schnell zum Albtraum. Damit es kein böses Erwachen gibt, setzen wir auf API Gateways: Diese sind etabliert und bekannt und helfen uns bei der Verwaltung der APIs. Sie regeln unter anderem Traffic Management, Rollout-Szenarien, Versionierung, Zugriffskontrolle und Diagnostizierbarkeit.
In diesem Vortrag werden wir das Cloud-native API-Gateway-Ökosystem näher betrachten: Gloo, KrakenD, Kong, Envoy et al. Aber welches davon ist das Richtige für den Einsatz im nächsten Projekt? Lasst es uns herausfinden!
3. Ist Gradle wirklich
so viel schneller?
Mal wieder etwas
Neues ausprobieren
wäre nett.
Wäre eine gute
Einstiegsaufgabe…
4. Jetzt müssen wir nur noch
unseren Kunden überzeugen…
Foto: George Marks
5. Gradle als Buildtool – Einordnung und Features
5
Eigene groovy-basierte DSL, einfach erweiterbar
Polyglott mit einheitlichen Cross-Platform-Builds (Java, Groovy, Scala, Clojure,
Android, C++, ObjectiveC, JavaScript, CSS, Grunt, …)
Sprachbasiert
Problemlose IDE-Integration (Intellij, Eclipse, NetBeans, Android Studio, …)
Maven Repositories können problemlos angebunden werden
Problemlose Integration in bestehende Build-Infrastruktur
Einfach integrierbar
Schnelle inkrementelle BuildsPerformant
6. Gradle ist etabliert und hat im Thoughtworks Techradar
schon seit Mai 2013 den Status ADOPT.
6
https://www.thoughtworks.com/radar/tools/gradle
https://www.thoughtworks.com/radar/tools/maven
8. Gradle ermöglicht performante inkrementelle Builds.
Das belegen Benchmarks und unsere Experimente.
8
https://gradle.org/gradle-vs-maven-performance/
Task Maven Gradle
Build mvn clean install
5:25 min
gradlew
clean build
3:45 min
Build nach 1 Änderung
(inkrementell)
mvn install
4:21 min
gradlew
build
0:39 min
Build ohne Tests 1:14 min 0:41 min
Build nach 1 Änderung
ohne Tests
0:41 min 0:10 min
11. Unser Masterplan:
11
Foto: Mike Powell
Code kompiliert & Tests laufen1
Dependencies sind überführt2
Alle Plugins sind migriert3
Spezialaufgaben4
12. <name>esb</name>
<description>ESB application</description>
<modules>
<module>esb-modules</module>
<module>esb-adapter</module>
<module>esb-runtime</module>
</modules>
Wir setzen zuerst die Projektstruktur auf.
12
rootProject.name = 'esb'
include 'esb-modules'
include 'esb-adapter'
include 'esb-adapter:esb-vehicle-adapter'
include 'esb-adapter:esb-finance-adapter‘
include 'esb-runtime'
include 'esb-runtime:esb-bdr-runtime'
include 'esb-runtime:esb-bdr-runtime-it-tests'
<artifactId>esb-adapter</artifactId>
<version>1.5.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<artifactId>esb</artifactId>
<groupId>de.qaware.esb</groupId>
<version>1.5.0-SNAPSHOT</version>
</parent>
<modules>
<module>esb-vehicle-adapter</module>
<module>esb-finance-adapter</module>
</modules>
In der pom eines
Moduls:
Definition von
Untermodulen
Gradle:
Gesamte Projektstruktur
in einer Settings-Datei
Maven:
Modul-Definition in
der root pom
15. Maven and Gradle walk into a bar (by Rafael Cordones):
Maven: I’d like a coffee, please.
Gradle: I’d like a coffee too, please.
Bartender: Here’s your coffee, Maven.
Bartender: And here’s your coffee with a croissant, Gradle.
Maven: Why don’t I get a croissant too?!
Bartender: For you Maven? Just the nearest explicitly stated
dependency.
17. Und wie lösen wir jetzt Konflikte auf?
17
configurations.all {
exclude group: "org.springframework", module: "spring-asm"
resolutionStrategy {
force "org.apache.logging.log4j:log4j-slf4j-impl:$depVersions.log4j"
force "org.apache.logging.log4j:log4j-api:$depVersions.log4j"
force "org.apache.logging.log4j:log4j-core:$depVersions.log4j"
force "org.apache.logging.log4j:log4j-1.2-api:$depVersions.log4j"
force "org.apache.logging.log4j:log4j-jcl:$depVersions.log4j"
force "org.apache.logging.log4j:log4j-jul:$depVersions.log4j"
. . .
force "org.slf4j:slf4j-api:$depVersions.slf4j"
}
}
Wir können
globale
Exclusions
definieren
Oder über den
Resolution Manager
bestimmte Versionen
forcieren
18. Sind wir schon da?
18
Foto: Mike Powell
Code kompiliert & Tests laufen
Dependencies sind überführt
Alle Plugins sind migriert3
Spezialaufgaben4
19. Was machen wir jetzt mit den Plugins?
19
switch(mavenPlugin) {
case IN_GRADLE_API_INTEGRIERT:
return ALLES_GUT;
case OFFIZIELLES_GRADLE_PLUGIN_EXISTIERT:
return ALLES_GUT;
case INOFFIZIELLES_GRADLE_PLUGIN_EXISTIERT:
return MAESSIG_GUT;
case ANT_TASK_EXISTIERT:
return MAESSIG_GUT;
default:
// Es gibt noch gar nichts. Oder ich finde es einfach nicht...
return DUMM_GELAUFEN;
}
21. <plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.9</version>
<executions>
{Ein paar Unit-Test spezifische Konfigurationen ...}
<execution>
<id>pre-integration-test</id>
<phase>pre-integration-test</phase>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<destFile>${project.build.directory}/jacoco-it.exec</destFile>
</configuration>
</execution>
{Noch mehr Konfigurationen, um die Coverage-Reports für Integrationstests zu generieren ...}
</executions>
</plugin>
</plugins>
case OFFIZIELLES_GRADLE_PLUGIN_EXISTIERT:
21
Setup des
Jacoco-Agents
Konfiguration zur
Generierung von
Reports
22. subprojects {
apply plugin: 'jacoco'
task jacocoIntegrationTestReport(type: JacocoReport) {
group = 'verification'
dependsOn integrationTest
executionData integrationTest
sourceDirectories = files(sourceSets.main.java.srcDirs)
classDirectories = files(sourceSets.main.output.classesDir)
reports.html.destination = file("$buildDir/reports/jacoco/integration")
}
check.dependsOn(jacocoTestReport)
check.dependsOn(jacocoIntegrationTestReport)
}
case OFFIZIELLES_GRADLE_PLUGIN_EXISTIERT:
22
Die Generierung der
Reports lässt sich in
Gradle sehr einfach
konfigurieren.
Inoffizielle Plugins lassen
sich genauso einbinden.
Man muss sich nur darum
kümmern, dass das
Plugin auch verfügbar ist.
24. class XSD2JavaTask extends DefaultTask {
{...}
@TaskAction
public void generateSourcesFromXSD() {
ant.taskdef(
name: 'xjc',
classname: 'com.sun.tools.xjc.XJCTask',
classpath: project.configurations.jaxb.asPath
)
ant.xjc(
removeOldOutput: 'yes',
destdir: outputDir,
package: packageName,
extension: extension
) {
schema(dir: schemaDirPath, includes: '**/*.xsd')
if (extension) classpath(path: project.configurations.xjc.asPath)
for (argument in arguments) {arg(line: argument)}
}
}
}
case ANT_TASK_EXISTIERT:
24
Wir schreiben einen
CustomTask und
binden den Ant-Task
ein
Wir machen eigentlich
das Gleiche wie das
Maven Plugin
25. apply plugin: 'xsd2java'
import com.bmw.iap.april.plugins.xjc.tasks.XSD2JavaTask
task generateESBModelSources(type: XSD2JavaTask) {
schemaDirPath = "src/main/resources/de/qaware/demo/esb/commercial/xsd"
packageName = „de.qaware.demo.esb.model"
extension = true
arguments.add("-Xxew")
arguments.add("-Xxew:instantiate lazy")
}
compileJava {
dependsOn generateAPRILModelSources
source generateAPRILModelSources.outputDir
}
case ANT_TASK_EXISTIERT:
25
Im Build binden wir
den Task dann richtig
konfiguriert ein
26. Und wenn
es noch gar
nichts gibt,
bauen wir
es selbst.
Foto: Martin Poole
27. Sind wir schon da?
27
Foto: Mike Powell
Code kompiliert & Tests laufen
Dependencies sind überführt
Alle Plugins sind migriert
Spezialaufgaben4
28. Was machen wir mit den Profilen?
28
Wir erstellen für jedes
Profil ein eigenes Build-
Skript
Über eine Variable
aktivieren wir das
gewünschte Profil
29. Jetzt sind wir da!
29
Foto: Mike Powell
Code kompiliert & Tests laufen
Dependencies sind überführt
Alle Plugins sind migriert
Spezialaufgaben
33. task generateServiceClassesPortalIntegrationProviderServiceV2(type: WSDL2JavaTask) {
ext {
wsdl = "$projectDir/src/main/resources/PortalIntegrationProviderService_v2.wsdl"
sourceRoot = file("$buildDir/generated-sources/cxf")
location = "PortalIntegrationProviderService_v2.wsdl"
}
args '-wsdlLocation', location
args '-d', sourceRoot
args '-client'
args '-verbose'
args wsdl
}
compileJava{
dependsOn generateServiceClassesPortalIntegrationProviderServiceV2
source generateServiceClassesPortalIntegrationProviderServiceV2.sourceRoot
}
Wenn man nicht aufpasst, kann man die Performance-
Vorteile von Gradle sehr schnell verlieren.
33
Task „wsdl2java“ wird
in jedem Build
ausgeführt
Dadurch ändern sich für
Gradle die generierten
Klassen
Das ganze Modul wird
neu gebaut
Alle Tests werden
nochmal ausgeführt.
Der Build dauert
genauso lange wie mit
Maven.