Show notes
Wir haben mit Stefan Tilkov über Softwarearchitekturen, REST und das Web gesprochen.Unser Gast (00:00:00)Stefan Tilkov, @stilkov, http://www.innoq.com/blog/st/about/REST und HTTP: Einsatz der Architektur des Web für Integrationsszenarien, Stefan Tilkov: http://rest-http.infoMacht zum Teil Management und sonst wozu er so Lust hat: Workshops, Konferenzen, Schulungen, …Hat C, C++, Java und und und gemacht, sein aktueller Favorit ist allerdings: ClojureArchitektur im Wandel (00:02:45)"architect" is Latin for "cannot code anymore.", Ted Neward: http://msdn.microsoft.com/en-us/library/aa905335.aspx"Architektur ist die Menge der wichtigen Entscheidungen", Stefan Tilkov :)Anwendungsarchitektur Anfang der 2000erIrgendwann wurde der Begriff "Architektur" negativ belegtProjekte bei innoQ (00:05:10)60 Leute bei innoQ20% strategische Beratung80% Entwicklungsprojekt, teilweise nur mitarbeiten, teilweise komplett selber verantwortetbei innoQ werden immer wieder die Rollen/Aufgaben und Projekte gewechseltArchitektur: negativ? (00:08:40)Agile Is Dead (Long Live Agility), Dave Thomas: http://pragdave.me/blog/2014/03/04/time-to-kill-agile/Rollen (z.B. "der Architekt") ergeben sich oft automatisch, ohne dass es vorgegeben istArchitektur negativ? "Ist wie ich darf nicht mehr nachdenken!"REST (00:12:05)REST: https://en.wikipedia.org/wiki/RepresentationalstatetransferRepresentational State Transfer (REST), Roy Fielding, Dissertation (2000), Kapitel 5: https://www.ics.uci.edu/~fielding/pubs/dissertation/restarchstyle.htmRoy Fieldings Blog: http://roy.gbiv.com/untangled/REST war eigentlich vor der SOAP/WS-* Welle daRessourcen haben eine URI und sind damit identifizierbarStandard-Interface um mit Ressourcen zu interagieren: GET, PUT, POST, DELETEHypermedia: https://en.wikipedia.org/wiki/HypermediaREST Maturity Models (RMM): http://martinfowler.com/articles/richardsonMaturityModel.htmlDer WS-Weg (00:16:55)Leute müssen für Webservices oft missioniert werden; bei REST ist das deutlich einfacherBei Web Serivces entwirft man permanent neue Protokolle (mit SOAP)WSDL: http://www.w3.org/TR/wsdlEnterprise Service Bus: https://en.wikipedia.org/wiki/EnterpriseservicebusMicroservices vs SOA? (00:22:05)James Lewis, Martin Fowler über Microservices: http://martinfowler.com/articles/microservices.htmlJim Webber "Guerilla SOA": http://www.infoq.com/presentations/webber-guerilla-soaHypermedia Explained (00:23:53)Hypermedia: https://en.wikipedia.org/wiki/HypermediaHeute sind REST APIs relativ gut (kein GET mehr, um eine Ressource zu löschen)URI Templating, http://whatisrest.com/restservicecontracts/uritemplatesandresourcequeriesREST APIs haben eine Startseite, von wo aus der Clients den Links folgen kannDer API Client braucht nicht so festverdrahtet seinLinks für Ressourcen signalisieren dem Client, wie er mit einer Ressource interagieren kannArchitekturstile (https://de.wikipedia.org/wiki/Architekturstil) haben immer Tradeoffs!Apache Thrift: https://en.wikipedia.org/wiki/Apache_ThriftCORBA: https://en.wikipedia.org/wiki/CommonObjectRequestBrokerArchitectureURI Templates sind ein Rezept, um z.B. eine große Menge von Links abzubildenHTML ist ein schönes Beispiel: Mit einem Formular und GETHTML ist ein Hypermedia Format!Ein Browser ist quasi ein Hypermedia ClientREST sollte Standardformate, selbstbeschreibender Nachrichten verwendenIANA Media Types: https://www.iana.org/assignments/media-types/media-types.xhtmlPopuläre Formate: JSON, XMLJSON Schema: http://json-schema.org/JSON & HypermediaCollection+JSON: http://amundsen.com/media-types/collection/Hypertext Application Language: http://stateless.co/hal_specification.htmlSiren: https://github.com/kevinswiber/sirenJon Moore, "Building Hypermedia APIs with HTML": http://www.infoq.com/presentations/web-api-htmlAtomPub, The Atom Publishing Protocol: http://bitworking.org/projects/atom/rfc5023.htmlREST für das Web (00:45:00)REST ist die Architektur des Webs und nicht nur von Web ServicesROCA: Resource-oriented Client Architecture: http://roca-style.orgSingle Page Application Frameworks: http://emberjs.com, http://angularjs.org, http://backbonejs.org, ...Yehuda Katz: http://yehudakatz.com/JSON API: http://jsonapi.org/ROCA: Server-seitiges HTML, App Logik nur im Server, Seite funktioniert ohne JavaScript, JavaScript erweitert nur, Progressive Enhancement (https://en.wikipedia.org/wiki/Progressive_enhancement), ...History API: http://diveintohtml5.info/history.htmlSEO & Single Page Apps: http://backbonetutorials.com/seo-for-single-page-apps/iTunes im Browser? o_O z.B. mit https://vaadin.com/homeMonolithen aufbrechen; die einzelnen Teile sollten auch ein eigenes UI habenBreaking the monolith: Towards a system-of-systems architecture: http://vimeo.com/74354372jQuery UI: https://jqueryui.com/ember.js und AngularJS bieten Konventionen und vermeiden Diskussionen (meint Basti)Web Framework Ansatz: "Wir nehmen entweder JSF oder Grails oder JRuby oder Angular oder jQuery"Architektur sollte unabhängig sein von der ImplementierungBower: http://bower.io/"build for replacement, not for reuse"The Twelve-Factor App: http://12factor.net/Web Services, REST (01:11:30)innoQ macht auch Projekte im klassischen Web Service KontextWeb Service Metadaten mit RESTful HTTP managenUDDI: https://en.wikipedia.org/wiki/UniversalDescriptionDiscoveryandIntegrationWSDL: https://en.wikipedia.org/wiki/WebServicesDescription_LanguageWS-MetadataExchange: https://en.wikipedia.org/wiki/WS-MetadataExchangeAusblick (01:17:20)Alte Ideen tauchen in neuen Konzepten wieder auf; verschiedene Gruppe lernen von einanderJAXconf: http://jaxconf.com/innoQ Timeline: http://www.innoq.com/de/timeline/innoQ Podcast: http://www.innoq.com/de/timeline/?type=podcast_episodes

