Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Bessere Software dank API First

Max Beckers
October 06, 2023

Bessere Software dank API First

Software hat den Zweck Daten zu verarbeiten - über unterschiedlichste Datenflüsse kommen Daten in die Applikation rein oder müssen anderen Diensten bereitgestellt werden. Deshalb brauchen wir APIs, was der Kern des API First Ansatzes ist. Es wird von Beginn an der Fokus auf die API gelegt.

Heutzutage denken wir oft in Microservices und entwickeln Headless Systeme - zwei Architekturansätze, die den API First Ansatz entscheidend vorantreiben.

Was ändert sich im Entwicklungsprozess? Wie wird die Qualität der Software gesteigert? Und wie macht API First alle Beteiligten glücklicher? Ich werde versuchen, diese Fragen in meinem Vortrag zu beantworten. Außerdem möchte ich einige praktische Tipps und Werkzeuge für APIs vorstellen.

Max Beckers

October 06, 2023
Tweet

More Decks by Max Beckers

Other Decks in Technology

Transcript

  1. 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
  2. • 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
  3. • 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?
  4. • HTTP & RESTful APIs • Message Queues • Event-Driven

    APIs • Web Sockets • Datei Import / Export • … 𝕏 @maxbbeckers Von was für APIs sprechen wir hier?
  5. • 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
  6. • 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?
  7. • 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
  8. 𝕏 @maxbbeckers Wichtige Faktoren für eine gute API 1 Performance

    2 Sicherheit 3 Zuverlässig- keit 4 Dokumen- tation 5 Usability
  9. • 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?
  10. • 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
  11. • 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
  12. • Ä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
  13. 𝕏 @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
  14. • 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
  15. • 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?
  16. • 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?
  17. 𝕏 @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!" } }
  18. 𝕏 @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
  19. 𝕏 @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
  20. 𝕏 @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
  21. 𝕏 @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
  22. 𝕏 @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
  23. 𝕏 @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
  24. 𝕏 @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
  25. 𝕏 @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
  26. 𝕏 @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