API-Definition mal anders – Schnittstellen mit Consumer Driven Contracts aus Client-Sicht definieren und testen

23. April 2021, 9-17 Uhr (online)



Mit Consumer Driven Contracts (CDC) wird die Herangehensweise der API-Definition umgedreht und auf das wesentliche reduziert. Nicht der Dienstanbieter sagt, was er kann, jeder Client definiert, was er braucht. Und mehr bekommt er auch nicht. Eine Möglichkeit, dies zu tun, ist die Beschreibung der gewünschten Interaktionen und das Testen derselben mittels PACT.

In diesem Workshop lernen Teilnehmerinnen und Teilnehmer am praktischen Beispiel, wie sie PACT Files schreiben, wie diese sowohl zur Client- als auch zur Provider-Verifikation oder zum Mocking verwendet werden können und was sie z.B. von Tools wie Swagger unterscheidet.

Vorkenntnisse

* Kenntnisse in Java und TypeScript sind von Vorteil

Lernziele

* Vorteile, aber auch Grenzen der Interaktionsbeschreibung mittels PACT kennenlernen
* PACT-Tests in den CI-Build integrieren und sogar im Rahmen von CD-Pipelines zur Sicherstellung der Consumer/Provider-Kompatibilität nutzen

Agenda

09:00 - 10:30
Kurze Vorstellungsrunde
Motivation - Warum CDC?
Was ist PACT?
HelloWorld mit PACT (inkl. Übung)
Tolerant Reader am Beispiel
Einsatz eines Pact Mock Servers

11:00 - 12:30
Compatibility Tests mit PACT
Verträge im Unit Test generieren (Java und Typescript) (inkl. Übung)
Provider gegen Vertrag verifizieren (Java) (inkl. Übung)

13:30 - 14:30
Zustände abbilden mit Provider States
Compatibility Tests vs. Acceptance Tests
Kompatibilität des Providers mit Matchern + Typverifikation sicherstellen (inkl. Übung)

15:00 - 16:00
PACT im komplexen Microservices-System
PACT mit externen Systemen
Unterschied zu Swagger/OpenAPI
PACT Broker kurz vorgestellt

 

Technische Anforderungen

Benötigte Rechnerausstattung
====================
Akt. Laptop mit Windows 10/Linux/MacOS X und Administrator-Rechten
Zugriff auf Mikrofon und Kamera
mind. 8 GB (besser 16 GB) RAM
50 GB freier Festplattenplatz
Internetzugang

Installationen
=========
Apache Maven 3.6 oder höher (mandatorisch)
Java 8 oder höher (https://openjdk.java.net - JDK, nicht die JRE!) - bitte JAVA_HOME richtig setzen! (mandatorisch)
IDE der Wahl (z.B. https://code.visualstudio.com/download ) (mandatorisch)
ZIP-Tool der Wahl (WinZIP, 7-ZIP, ...) ( https://7-zip.de/download.html ) (mandatorisch)
Acrobat Reader (mandatorisch)
Chrome (akt. Version) + REST Plugin (Advanced REST client) (mandatorisch)

node.js 11.6.0 oder höher (https://nodejs.org/en/download - zur Ausführung des Angular Beispiels)
npm 6.2.5 oder höher (i.d.R. im node-Download enthalten - zur Ausführung des Angular Beispiels)

Docker 19.03 oder höher (optional - für erweiterte Beispiele mit Pact Broker und Mock Service)
Docker Compose 1.25.5 oder höher (optional - für erweiterte Beispiele mit Pact Broker und Mock Service)

Beispiele und Folien
=============
Bitte Materialien vorab von https://github.com/wern/cdc-ws-hc-20 klonen oder herunterladen und das Projekt Uebungen/MusterloesungenFinal/greeting-consumer einmal per mvn clean install bauen (zum Aufbau des mvn repositories).
Die Folien werden in den nächsten zwei Wochen auch noch in das Repository hochgeladen.

Speaker

 

Werner Eberling
Werner Eberling ist Principal Consultant/Trainer bei der MATHEMA GmbH. Seit 1999 beschäftigt er sich mit verteilten Systemen – von C++/CORBA in den Anfangstagen über die Java EE hin zu Microservice- und Cloud-Architekturen in aktuellen Projekten. Zurzeit ist er als Architekt in größeren Scrum-Projekten tätig. Zusätzlich hält er Technologietrainings in Deutschland und der Schweiz.

betterCode-Newsletter

Sie möchten über die betterCode() API und weitere unserer betterCode()-Events auf dem Laufenden gehalten werden?

 

Anmelden