Entwicklung von ressourcenorientierten Services mithilfe des API-Design-First-Prinzips

Ähnliche Dokumente
Integration von UIS-Webdiensten

Deep-Dive Workshop: Virtualisierung der Softwareentwicklung

Web-API Design mit Java

Azure &.NET Meetup Freiburg

Python VS Perl. Storage Monitoring per API statt SNMP. Björn Müller Marcel Denia. comnet GmbH

Architektur von REST basierten Webservices

SAP NetWeaver Gateway. 2013

API der USecureD-Tools

Entwicklung einer REST-API zur Erstellung und Konfiguration von Microsoft Teams. Jan Kruse, utilitas GmbH

Unified-E Standard WebHttp Adapter

APIC-EM Software Engineering Insight

Web Services. Web Services in the News. Vision: Web of Services. Learning for Results. DECUS Symposium 2002, Vortrag 1K07,

Desktop Management Interface und andere Initiativen der DMTF

Serviceorientiertes Fahrplanauskunfts- und Routingsystem für den ÖPNV auf Basis freier Geodaten und Software

MODERNE WEBANWENDUNGEN MIT PDF

ASP.NET Web-API - Grundlagen

REST-Schnittstellen Dokumentation und Testing. Adrian Moos Technology Advisor Bedag Informatik AG

Vorstellung zu einem Web Desktop: eyeos

Schnittstellenarchitektur in Zeiten sich wandelnder Frontend-Technologien

Webservices. Entwicklercamp Denny Sternberg

Microservices Nur für Big Player oder auch für KMUs?

SODA. Die Datenbank als Document Store. Rainer Willems. Master Principal Sales Consultant Oracle Deutschland B.V. & Co. KG

<Insert Picture Here> Einführung in SOA

Anwendungsentwicklung mit Enterprise SOA

STORYBOARDING ZUR ABLEITUNG VON KONTEXTBASIERTEN INTERACTION-CASES FÜR UBIQUITÄRE SYSTEME

IT S ALL ABOUT THE DOMAIN, HONEY!

Service Engineering. Übung 2a Spezifikation und Nutzung von Web-APIs (Services) Prof. Dr. Andreas Schmietendorf 1

Brandbook. How to use our logo, our icon and the QR-Codes Wie verwendet Sie unser Logo, Icon und die QR-Codes. Version 1.0.1

Web-Services mit Go. Sebastian tokkee Harl OpenRheinRuhr 07. November 2015 Oberhausen

Operationale Daten direkt einbinden

Rendering und Bereitstellung massiver Geodaten unter Verwendung von OpenWebGlobe und MapCache in der Cloud

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

IT SERVICE MANAGEMENT FÜR AGILE PROJEKTE. Zwischen Agilität und Stabilität Herausforderungen in einer agiler werdenden Organisation

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung Reisebeschreibung Zielpublikum Fallbeispiel...

ebusiness Übung 3a Spezifikation und Nutzung von Web-APIs (Services) Prof. Dr. Andreas Schmietendorf 1

Ziele und Tätigkeiten von Architekten

Forms auf Tablets. Vision oder Realität?

Model Driven Architecture

DOORS Schema IBM Rational DOORS Start-Up Training - Teil 3

Masterkurs Verteilte betriebliche Informationssysteme

- Eine dienstbasierte Infrastruktur für mobile elearning-anwendungen - Stefan Kurz und Marius Podwyszynski

VAADIN, SPRING BOOT & REST

DevOps. Alexander Pacnik, Head of DevOps Engineering

Raber+Märcker Techno Summit 2014 Microsoft Dynamics NAV 2013 R2 Überblick und Hintergründe zu aktuellen Version.

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Spatial Data on the Web Geodaten für Jedermann Bereitstellung von Geobasisdaten über gängige Webtechnologien

datenlink-schnittstelle Version 1.0

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

SOAP Integrationstechnologie für verteilte Middlewarearchitekturen?

Grid-Systeme. Betrachtung verschiedener Softwareplattformen zur Realisierung von Grids und Vorstellung des Globus Toolkit Grid Systeme 1

Grundlagen der Web-Entwicklung INF3172

Linked Open Data & Bibliotheken Warum? Was? Wie? FIS Fachtagung, Frankfurt/Main 22. Mai 2012 Adrian Pohl

Open Source als de-facto Standard bei Swisscom Cloud Services

Geschwindigkeit + Qualität

Programmierung im Grossen

Das Entwicklungsteam im agilen Prozess. Aufgaben der Software Architektur. Best Practices & Scrum Integration. Zusammenfassung & Ausblick

Agenda joinit für 7-IT

REST Grundlagen. Seminar Aktuelle Software-Engineering-Praktiken für das World Wide Web. Olga Liskin

Eclipse User Interface Guidelines

Dirk von der Weiden, Olaf Meyer C1 SetCon. REST in the Enterprise

Auf den Elch gekommen

GIS GRAVITY UND ROADMAP. Tony Wehrstein

CLARIN-D. Überblick, Metadaten, Demo. Christoph Kuras. Abt. Automatische Sprachverarbeitung Institut für Informatik, Universität Leipzig

Präsentationsorientierte Komposition von Service Frontends durch den Endanwender

Tutorium Softwaretechnik I

Forum ö 2017: Digitale Wirtschaft und Nachhaltigkeit. Digitale Nachhaltigkeit: Gesellschaftlichen Nutzen des digitalen Wissens erschliessen

Microsoft.NET XML-Webdienste Schritt für Schritt

Technologische Analysen im Umfeld Sozialer Netzwerke

Web Services Die Definition von Web Services in der Theorie und FNT-Command als Web Service in der Praxis

Bachelorarbeit. Claus Torben Haug. Konzeptionierung und Umsetzung eines Werkzeugs zum Vergleichen verschiedener Versionen einer Swagger-Definition

Gemeinsam mehr erreichen.

4. RADAR-WORKSHOP RADAR APPLICATION PROGRAMMING INTERFACE KARLSRUHE, 25./26. JUNI Matthias Razum, FIZ Karlsruhe

Neue Welten: Externe Daten mit APEX nutzen

Softwaremodellierung innerhalb eines SAP ABAP Projekts im agilen Umfeld

Stefan Zörner. Portlets. Portalkomponenten in Java. ntwickier

Spring & OSGi: Plattform der Zukunft. Bernd Kolb (Kolbware) Martin Lippert (akquinet agile GmbH) Gerd Wütherich (comdirect bank AG)

Scrum for Management Praxis versus Theorie oder Praxis dank Theorie. ALM Day 26.Oktober 2011 Urs Böhm

Software & Schnittstellen (1/28)

API-Gateway bringt Ordnung in Microservices-Wildwuchs. Frank Pientka, Dortmund

Styleguides als Werkzeug für bessere Software-Usability im Gesundheitswesen

Service Engineering. IVS Arbeitsgruppe Softwaretechnik. Abschnitt: Einführung zur Vorlesung

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder

FOLIO EINFÜHRUNG. Richard Redweik Universitätsbibliothek Leipzig

!"#$"%&'()*$+()',!-+.'/',

ZWISCHENPRÄSENTATION. Technologische Analysen im Umfeld Sozialer Netzwerke. Peter Schnitzler

Von der Prozessanalyse zur Prozessautomatisierung

Service Engineering. IVS Arbeitsgruppe Softwaretechnik. Abschnitt: Einführung zur Vorlesung

Plattformübergreifende Benutzeroberflächen mit Python und Qt

Seminararbeit. Konzept einer Schnittstelle zur Benutzerverwaltung in RiskShield-Server. Christoph Laufs INFORM GmbH INFORM GmbH 1

Wir öffnen Benutzerkonten

RESTful Web. Representational State Transfer

2 Softwarearchitektur in der Organisationsstruktur 25

Creating OpenSocial Gadgets. Bastian Hofmann

E-Business Architekturen

NotesSession.GetPropertyBroker( )

Docker & DevOps.

Transkript:

Entwicklung von ressourcenorientierten s mithilfe des API-Design-First-Prinzips Pascal Giessler, Reinhard Herzog, Sebastian Abeck COOPERATION & MANAGEMENT (C&M, PROF. ABECK), INSTITUT FÜR TELEMATIK, FAKULTÄT FÜR INFORMATIK KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu

Beteiligte Partner und SmartCampus (1) Die KIT-Forschungsgruppe C&M und das Fraunhofer IOSB kooperieren im Bereich der Web-Technologien (1) orientierte Architekturen, RESTful Web-s, Internet der Dinge, Ontologien (2) SmartCampus ist eine aus verschiedenen gemeinsamen Projekten hervorgegangene und kontinuierlich weiterentwickelte serviceorientierte Web-Anwendung 2 14.06.16

GRUNDLAGEN Kurz und knapp (1) API (Application Programming Interface) (1) Vertrag zwischen Dienstnehmer und Dienstgeber (2) Ermöglicht Zugriff auf Daten oder Funktionalitäten (3) Web-API als Ausprägung einer API, welche den Zugriff über das Web ermöglicht (2) Ressourcenorientierung (1) Bestandteil des Architekturstils REST von Fielding (2) Zweite Ebene des Richardson Maturity Modells (3) (1) Geschäftsentitäten Ressourcen (2) Geschäftsmethoden = HTTP-Methoden (1) Bereitstellung von Informationen und Funktionalitäten (2) Web- als Ausprägung eines mit einer Web-API 3 14.06.16

MOTIVATION (1) Autonome Entwicklungsteams (1) Zuständigkeit des Teams gegeben durch Bounded Context << Server >> B API << Server >> << Client >> A API Anwendung << Server >> C API Ressourcenorientierung 4 14.06.16

HERAUSFORDERUNGEN (1) Sicherstellung der Autonomie einzelner Entwicklungsteams (1) Reduktion des Koordinationsaufwands (2) Reduktion des Kommunikationsaufwands << Server >> B << Server >> << Client >> << Server >> A Anwendung C Unter der eigenen Kontrolle Außerhalb der eigenen Kontrolle 5 14.06.16

LÖSUNGSANSATZ (1) Reduktion des Koordinationsaufwands / Kommunikationsaufwands (1) Vertrag für die Kommunikation zwischen Dienstnehmer und geber (1) Fester Bestandteil des Entwurfsprozesses und Grundlage für die Implementierungsphase (2) Diese Entwicklungsmethodik wird auch als API-First bezeichnet (1) API-Spezifikation als zentrales Entwurfsartefakt { } API Spezifikation Anwendung Dienstgeber Dienstnehmer 6 14.06.16

Werkzeuge und Sprachen für die API-Spezifikation (1) Zahlreiche Werkzeuge/ Sprachen zur Spezifikation von APIs (1) WADL, WSDL 2.0 (2) RAML, Swagger (OpenAPI), API Blueprint, apidoc, slate (2) Neuere Ansätze unterstützen meist folgende Inhaltstypen: (1) YAML, JSON, (Markdown) (3) Relevante Kriterien für die Auswahl bei C&M (1) Spezifikation unabhängig von der eingesetzten Technologie (2) Generierung von menschenlesbarer u. verständlicher Dokumentation (3) Großes Ökosystem (Generierung von Quellcode, API Konsole u.s.w) (4) Open-Source 7 14.06.16

Open API-Spezifikation (ehemals Swagger) (1) Herstellerneutraler Standard für die Beschreibung von RESTful APIs (2) Entwicklung vorangetrieben von der Open API Initiative (1) Zusammenschluss einiger Firmen (u.a. Google, Microsoft) (2) Unter dem Dach der Linux Foundation (3) "The goal [ ] is to define a standard, language-agnostic interface to REST APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection." 1 (4) Hervorgegangen aus Swagger (1) Formale Spezifikation (Grundlage der Open API Specification) (2) Großes Ökosystem aus Werkzeugen und Bibliotheken 1 OpenAPI Initiative: Website, https://openapis.org 8 14.06.16

Beispiel: API Spezifikation im Open API-Format (1) Nutzt YAML(hier) oder JSON 1. swagger: "2.0" 2. info: 3. version: "1.0" 4. title: "Hello World API" 5. paths: 6. /hello/{user}: 7. get: 8. description: Returns a greeting to the user! 9. parameters: 10. - name: user 11. in: path 12. type: string 13. description: The name of the user to greet. 14. responses: 15. 200: 16. description: Returns the greeting. 17. schema: 18. type: string 19. 400: 20. description: Invalid characters in "user" were provided 9 14.06.16

Anfertigen einer API-Spezifikation (1) Beispiel: Inkonsistente API-Spezifikationen 1. swagger: "2.0" 2. info: 3. version: "1.0" 4. title: "Sales API" 5. paths: 6. /salesorders/{id}: 7. get: 8. description: { } 9. parameters: 10. - name: id 11. in: path 12. type: integer 13. /cart/{id} 14. post: 15. description: { } 16. parameters: 17. - name: articlename 18. - in: body 1. swagger: "2.0" 2. info: 3. version: "1.1" 4. title: "Sales API" 5. paths: 6. /sales-orders/{uuid}: 7. get: 8. description: { } 9. parameters: 10. - name: uuid 11. in: path 12. type: string 13. /carts/{uuid} 14. post: 15. description: { } 16. parameters: 17. - name: article_name 18. - in: body 10 14.06.16

Identifiziertes Problem (1) Die Spezifikation von APIs erlaubt sehr viele Freiräume (1) REST ist ein Architekturstil und keine Schnittstellenspezifikation (2) Keine existierenden Standards oder genaue Richtlinien (1) Kann zu inkonsistenten APIs führen (2) Der Entwurf und die Spezifikation von APIs ist Teil eines Entscheidungsprozesses (1) Attraktivität und Mehrwert einer API (2) Qualitätseigenschaften eines Web- (3) Die Gestaltung von "guten" APIs ist bis heute eine Herausforderung (1) "It is very easy to create a bad API and rather difficult to create a good one. Even minor and quite innocent design flaws have a tendency to get magnified out of all proportion because APIs are provided once, but are called many times.", Henning 11 14.06.16

Festlegen von API-Richtlinien (1) Befolgen von grundlegenden Eigenschaften einer API (1) Einfaches Verständnis (2) Technologieunabhängig (3) Konsistent in der Benutzung (4) Robust gegenüber Evolution (2) Aufstellen von Richtlinien für die Spezifikation von APIs (1) Bewährte Methoden aus Praxis und Forschung 12 14.06.16

Beispiel: Richtlinie 3.8.2 Nutzung eines allgemeingültigen Error-Objekts 13 14.06.16

Weitere Vorteile für qualitätsgesicherte APIs (1) Die Bereitstellung von Funktionalitäten über (öffentliche) APIs kann heutzutage als ein eigenständiges Geschäftsfeld angesehen werden (1) Salesforce (50% / Umsatz), Expedia (90% / Umsatz), Ebay (60% / Umsatz) (2) Nutzungsaufkommen durch APIs pro Jahr um fast das Dreifache (1) Zentraler Bestandteil der digitalen Transformation (2) Ermöglichen neue Geschäftsfelder (z.b. FinTech) 14 14.06.16

Erweiterter Lösungsansatz (1) Reduktion des Koordinationsaufwands (1) Vertrag zwischen Dienstnehmer und -geber vor der Entwicklung (2) Vermeidung von nicht abwärtskompatiblen API-Änderungen (2) Reduktion des Kommunikationsaufwands (1) Verständliche und nachvollziehbare Dokumentation (2) Verständliche und klare Fehlermeldungen (3) Sicherstellung von Qualitätseigenschaften { } API Spezifikation + Richtlinien Anwendung 15 14.06.16

Iterativer Prozess für die Anfertigung oder Überarbeitung einer API-Spezifikation Identifizieren von Anforderungen Richtlinien <<benutzt>> <<benutzt>> Entwerfen/ Modifizieren der API Überprüfen der API Operationen API- Spezifikation (Entwurf) API- Spezifikation (Vertrag) -Nutzer implementieren implementieren 16 14.06.16

Einordnung in Softwareentwicklung bei C&M Anforderungen erheben Szenarien und Wireframes Analysemodell erstellen Domänenmodelle Eventuell Überarbeitung der Analyse- und Entwurfsartefakte Entwicklung planen User Stories Sprint durchführen Architektur entwerfen API-Spezifikation Vorgaben für den Scrum-Prozess Scrum-basierte Entwicklung Kleine Iteration Getestetes und qualitätsgesichertes Software-Inkrement Qualitätsbericht 17 14.06.16

VORZÜGE DURCH API-FIRST UND AUFGESTELLTER RICHTLINIEN (1) Sicherstellung der Autonomie unabhängiger Entwicklungsteams (1) Autonome Abarbeitung möglich (2) Klar definierte Anforderungen (3) Verständliche und aktuelle Dokumentation (2) Verkürzung der Ramp-up-Phase von Entwicklungsprojekten (1) Einsatz von Modelgetriebener Softwareentwicklung (1) Generierung von Applikations- und -Schablonen (2) Spezifikation möglich, wenn nicht mit Technologie-Stack vertraut (3) Veröffentlichung von APIs für Drittanbieter möglich (1) Neue Geschäftsfelder (FinTechs), z.b. Number26 (4) Qualität einer API steigern und sicherstellen (1) Evolvierbarkeit, Performanz, Konsistenz, Kompatibilität, Wartbarkeit 18 14.06.16

ZUSAMMENFASSUNG (1) Problemstellung bei der Entwicklung einer -Landschaft (1) Autonome Entwicklungsteams (2) Vorstellung eines API-First orientierten Lösungsansatzes (1) Reduktion des Koordination- und Kommunikationsaufwands (1) API-Spezifikation vor Implementierungsphase (2) Sicherstellung von Qualitätseigenschaften (1) Notwendigkeit von Richtlinien (3) Entwicklungsprozess und -werkzeuge für die API-Spezifikation (1) Iterativer und inkrementeller Prozess (2) Open API und Swagger (4) Einblick in SmartCampus (1) Demonstration und Tragfähigkeitsnachweis 19 14.06.16

AUSBLICK (1) Entwicklung von weiteren s als Teil des SmartCampus (2) Entwicklung einer -Registry und Discovery-Lösung (1) Unterstützung des API-First-Ansatzes (2) Wiederfinden von bestehenden Funktionalitäten (1) Semantische Ableitung von Informationen möglich (3) Unterstützung zur Laufzeit- als auch Entwicklungszeit (4) Qualitätssicherung zur Einhaltung von API-Richtlinien (3) Tragfähigkeitsnachweis bei mehreren Unternehmen geplant 20 14.06.16