Slide 1

Slide 1 text

Bessere Software dank API first Max Beckers đť•Ź @maxbbeckers

Slide 2

Slide 2 text

Kontakt: đť•Ź @maxbbeckers [email protected] linkedin.com/in/maximilianbeckers Max Beckers Solutions Architect • Arbeite fĂĽr / • Wohne in der Nähe von Kiel • Entwickle mit Symfony seit 2012

Slide 3

Slide 3 text

đť•Ź @maxbbeckers Bei API first liegt der Fokus auf der API

Slide 4

Slide 4 text

• Software ist da, um Daten zu verarbeiten • Daten fließen in das System • Daten müssen anderen bereitgestellt werden • Architekturen, die API first gepusht haben • Microservices • Headless Backends • API definieren, bevor wir mit der Entwicklung beginnen 𝕏 @maxbbeckers Wichtige Basics zu API first

Slide 5

Slide 5 text

• Modulare und flexible API, die man einfach erweitern und anpassen kann • API, die zu der Domäne passt • API-Spezifikation ist ein Vertrag, vergleichbar mit Mockups bei UI/UX • Wiederverwendbarkeit von Services • Skalierbarkeit von Applikationen (horizontal wie vertikal) • Sicherheit der Software erhöhen • Konsistente API • Testbarkeit der Software verbessern 𝕏 @maxbbeckers Was sind die Ziele von API first?

Slide 6

Slide 6 text

• HTTP & RESTful APIs • Message Queues • Event-Driven APIs • Web Sockets • Datei Import / Export • … 𝕏 @maxbbeckers Von was für APIs sprechen wir hier?

Slide 7

Slide 7 text

𝕏 @maxbbeckers Das Herausstellen des Worts „first“ bei API first zeigt, es war nicht immer so…

Slide 8

Slide 8 text

• Logisch für Softwareentwicklung, mit dem Programmieren starten • Programmatisch die API auf Basis der internen Objekte und Funktionalität bauen • Funktioniert gut, wenn die Anforderungen klar sind und sich nicht ändern werden (Wasserfall Projektmanagement) • Stößt an seine Grenzen mit immer komplexer werdenden Architekturen und agiler Softwareentwicklung 𝕏 @maxbbeckers Code first ist intuitiv

Slide 9

Slide 9 text

đť•Ź @maxbbeckers Code first Projekte dauerhaft weiterentwickeln

Slide 10

Slide 10 text

• Fokus auf den Daten und nicht auf der Business Logik • Verstehen der Domäne und Use-Cases • Die API für die Nutzer entwickeln • API flexibel anpassbar und erweiterbar aufbauen • Entkoppeln der API von der Technologie • API als wichtigen Bestandteil der Software definieren 𝕏 @maxbbeckers Was ändert sich durch API first?

Slide 11

Slide 11 text

• Produkt Owner und Produkt Manager als zentrale Rollen in die Entwicklung und Definition unserer API involvieren • Ein gutes Produkt bringt Vorteile am Markt • Man kann das Produkt / die API bewerben & vermarkten • Entscheidungen, einen neuen Dienstleister anzubinden werden nicht nur auf Management Ebene gemacht • DX ist ein wichtiges Kriterium • Einfaches Anbinden und Integrieren reduziert die Kosten und Wartung 𝕏 @maxbbeckers Die API als Produkt verstehen

Slide 12

Slide 12 text

𝕏 @maxbbeckers Wichtige Faktoren für eine gute API 1 Performance 2 Sicherheit 3 Zuverlässig- keit 4 Dokumen- tation 5 Usability

Slide 13

Slide 13 text

• Umfänglich, ausführlich und gut strukturiert dokumentiert • Einfach zu verstehen • Konsistent • Basiert auf Standards • PSR-7 und die „4 Maturity Levels of REST API Design“ • Verwendung der passenden HTTP-Methoden & Statuscodes GET /movies 200 // Liste an Filmen laden POST /movies 201 // Neuer Film angelegt GET /movies/{id} 200 // Ein Film laden PATCH /movies/{id} 200 // Update eines Films (auch PUT denkbar) DELETE /movies/{id} 204 // Löschen eines Films, gibt keinen Body zurück 𝕏 @maxbbeckers Was bedeutet eine gute API?

Slide 14

Slide 14 text

𝕏 @maxbbeckers API first – der Weg zum Erfolg

Slide 15

Slide 15 text

• Brainstorming, Planung, Analyse, Austausch mit den Stakeholdern • Ziel ist es die Domain zu verstehen • Auf Basis dieses Wissens die API entwickeln • Zusammenarbeit von Entwicklern mit Produkt Managern und Produkt Ownern • Feedback einholen und einarbeiten • API-Spezifikation als Vertrag 𝕏 @maxbbeckers Veränderungen im Prozess

Slide 16

Slide 16 text

• Flüssigere Implementierung durch vorgegebene, übersichtliche Struktur der API • Signifikant höhere Qualität im Code • Gut strukturierter Code • Eine Test-Guideline für das QA-Team • Frühes Einbinden von Security Experten möglich • Zahlt sich aus im Hinblick auf Wartung und Erweiterungen der Software • Zeitgleiche Entwicklung von Server und Client(s) • Einfache Integration 𝕏 @maxbbeckers Abgestimmte und sauber definierte API

Slide 17

Slide 17 text

đť•Ź @maxbbeckers Lebenszyklus einer API Definieren Designen Implementieren Testen Deployen Beobachten Ausrollen Feedback einholen

Slide 18

Slide 18 text

𝕏 @maxbbeckers Wenn man etwas verändert lauern Herausforderungen

Slide 19

Slide 19 text

• Änderung der Projektplanung • Umdenken von den Entwicklern und Architekten erforderlich • Diese Veränderung kann nicht allein von den Entwicklern gemeistert werden • Entwicklung und Produkt Management müssen geschult werden • Definieren von Standardprozessen zur API-Entwicklung • Mehr APIs bedeuten auch mehr Fokus auf Versionierung und Abwärtskompatibilität • Mitarbeiter benötigen ein höheres technisches Skill-Set 𝕏 @maxbbeckers Herausforderungen der Einführung von API first

Slide 20

Slide 20 text

𝕏 @maxbbeckers Tools & Techniken • Es gibt viele Wege und Tools, um eine API zu designen • Es gibt oft viele vergleichbare Tools • Dies ist nur eine Liste an Vorschlägen für Tools

Slide 21

Slide 21 text

đť•Ź @maxbbeckers Brainstorming

Slide 22

Slide 22 text

đť•Ź @maxbbeckers Brainstorming

Slide 23

Slide 23 text

• Kollaborative Technik, zum Verstehen der Domain • Von Stakeholdern und Domänen Experten lernen • Analyse der… … Domänenkonzepte … Prozesse innerhalb dieser Domäne … geltenden Regeln der Domäne • Egon.io ist ein OpenSource Tool • https://domainstorytelling.org/ 𝕏 @maxbbeckers Domain Storytelling

Slide 24

Slide 24 text

đť•Ź @maxbbeckers Designen einer API mit OpenAPI

Slide 25

Slide 25 text

• Standard zur Definition und Beschreibung von APIs im YAML oder JSON-Format • Entwickelt für HTTP & RESTful APIs • Vereinfacht auf einem standardisierten Weg das Teilen von APIs • Definition der API • Endpunkte incl. HTTP-Methode • Request Format • Response Format • Autorisierung 𝕏 @maxbbeckers Was ist OpenAPI?

Slide 26

Slide 26 text

• Viele sind mit OpenAPI vertraut • Es gibt viele Tools (z.B. Statische Analyse der API-Beschreibung, Mocken) • Codegenerierung für Client und Server • Weniger Code zu warten • Validierung wird einem geschenkt • Weniger manuelle Schritte = weniger Fehler können sich einschleichen • Automatisierung macht uns Entwicklern das Leben einfacher • Die Dokumentation wird immer aktuell gehalten 𝕏 @maxbbeckers Was gewinnt man mit OpenAPI?

Slide 27

Slide 27 text

đť•Ź @maxbbeckers Swagger UI / Swagger Editor

Slide 28

Slide 28 text

đť•Ź @maxbbeckers Redoc

Slide 29

Slide 29 text

đť•Ź @maxbbeckers OpenAPI Linter Vacuum

Slide 30

Slide 30 text

𝕏 @maxbbeckers Mocks • Prism • OpenSource Tool • Mocks auf Basis der Examples und Fakedaten direkt aus der Spezifikation • Wiremock { "request": { "method": "GET", "url": "/test" }, "response": { "status": 200, "body": "Hello World!" } }

Slide 31

Slide 31 text

đť•Ź @maxbbeckers Erkenntnisse

Slide 32

Slide 32 text

đť•Ź @maxbbeckers API first macht glĂĽcklich 0 20 40 60 80 100 120 Are happier Create better code Waste less time in meetings Launch new products faster Integrate with partners faster Eliminate security risks faster Spend less time debugging code Are more productive Onboard faster Postman survey about API first companies Strongly disagree Disagree somewhat Agree somewhat Strongly agree https://www.postman.com/state-of-api/api-first-strategies/#API-first-strategies

Slide 33

Slide 33 text

đť•Ź @maxbbeckers API first macht glĂĽcklich 0 20 40 60 80 100 120 Are happier Create better code Waste less time in meetings Launch new products faster Integrate with partners faster Eliminate security risks faster Spend less time debugging code Are more productive Onboard faster Postman survey about API first companies Strongly disagree Disagree somewhat Agree somewhat Strongly agree https://www.postman.com/state-of-api/api-first-strategies/#API-first-strategies

Slide 34

Slide 34 text

đť•Ź @maxbbeckers API first macht glĂĽcklich 0 20 40 60 80 100 120 Are happier Create better code Waste less time in meetings Launch new products faster Integrate with partners faster Eliminate security risks faster Spend less time debugging code Are more productive Onboard faster Postman survey about API first companies Strongly disagree Disagree somewhat Agree somewhat Strongly agree https://www.postman.com/state-of-api/api-first-strategies/#API-first-strategies

Slide 35

Slide 35 text

đť•Ź @maxbbeckers API first macht glĂĽcklich 0 20 40 60 80 100 120 Are happier Create better code Waste less time in meetings Launch new products faster Integrate with partners faster Eliminate security risks faster Spend less time debugging code Are more productive Onboard faster Postman survey about API first companies Strongly disagree Disagree somewhat Agree somewhat Strongly agree https://www.postman.com/state-of-api/api-first-strategies/#API-first-strategies

Slide 36

Slide 36 text

đť•Ź @maxbbeckers API first macht glĂĽcklich 0 20 40 60 80 100 120 Are happier Create better code Waste less time in meetings Launch new products faster Integrate with partners faster Eliminate security risks faster Spend less time debugging code Are more productive Onboard faster Postman survey about API first companies Strongly disagree Disagree somewhat Agree somewhat Strongly agree https://www.postman.com/state-of-api/api-first-strategies/#API-first-strategies

Slide 37

Slide 37 text

đť•Ź @maxbbeckers API first macht glĂĽcklich 0 20 40 60 80 100 120 Are happier Create better code Waste less time in meetings Launch new products faster Integrate with partners faster Eliminate security risks faster Spend less time debugging code Are more productive Onboard faster Postman survey about API first companies Strongly disagree Disagree somewhat Agree somewhat Strongly agree https://www.postman.com/state-of-api/api-first-strategies/#API-first-strategies

Slide 38

Slide 38 text

đť•Ź @maxbbeckers API first macht glĂĽcklich 0 20 40 60 80 100 120 Are happier Create better code Waste less time in meetings Launch new products faster Integrate with partners faster Eliminate security risks faster Spend less time debugging code Are more productive Onboard faster Postman survey about API first companies Strongly disagree Disagree somewhat Agree somewhat Strongly agree https://www.postman.com/state-of-api/api-first-strategies/#API-first-strategies

Slide 39

Slide 39 text

đť•Ź @maxbbeckers API first macht glĂĽcklich 0 20 40 60 80 100 120 Are happier Create better code Waste less time in meetings Launch new products faster Integrate with partners faster Eliminate security risks faster Spend less time debugging code Are more productive Onboard faster Postman survey about API first companies Strongly disagree Disagree somewhat Agree somewhat Strongly agree https://www.postman.com/state-of-api/api-first-strategies/#API-first-strategies

Slide 40

Slide 40 text

đť•Ź @maxbbeckers API first macht glĂĽcklich 0 20 40 60 80 100 120 Are happier Create better code Waste less time in meetings Launch new products faster Integrate with partners faster Eliminate security risks faster Spend less time debugging code Are more productive Onboard faster Postman survey about API first companies Strongly disagree Disagree somewhat Agree somewhat Strongly agree https://www.postman.com/state-of-api/api-first-strategies/#API-first-strategies

Slide 41

Slide 41 text

Kontakt: đť•Ź Vielen Dank fĂĽr eure Aufmerksamkeit! @maxbbeckers [email protected] linkedin.com/in/maximilianbeckers