Geekstammtisch
Geekstammtisch
Dirk Breuer, Sebastian Cohnen
GST031 - CORBA in cool
1 hour 20 minutes Posted Apr 14, 2014 at 11:39 am.
Unser Gast
Architektur im Wandel
Projekte bei innoQ
Architektur: negativ?
REST
Der WS-Weg
Microservices vs SOA?
Hypermedia Explained
REST für das Web
Web Services, REST
Ausblick
0:00
1:20:22
Download MP3
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.info
Macht 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: Clojure
Architektur 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 2000er
Irgendwann wurde der Begriff "Architektur" negativ belegt
Projekte bei innoQ (
00:05:10)
60 Leute bei innoQ
20% strategische Beratung
80% Entwicklungsprojekt, teilweise nur mitarbeiten, teilweise komplett selber verantwortet
bei innoQ werden immer wieder die Rollen/Aufgaben und Projekte gewechselt
Architektur: 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 ist
Architektur negativ? "Ist wie ich darf nicht mehr nachdenken!"
REST (
00:12:05)
REST: https://en.wikipedia.org/wiki/Representationalstatetransfer
Representational State Transfer (REST), Roy Fielding, Dissertation (2000), Kapitel 5: https://www.ics.uci.edu/~fielding/pubs/dissertation/restarchstyle.htm
Roy Fieldings Blog: http://roy.gbiv.com/untangled/
REST war eigentlich vor der SOAP/WS-* Welle da
Ressourcen haben eine URI und sind damit identifizierbar
Standard-Interface um mit Ressourcen zu interagieren: GET, PUT, POST, DELETE
Hypermedia: https://en.wikipedia.org/wiki/Hypermedia
REST Maturity Models (RMM): http://martinfowler.com/articles/richardsonMaturityModel.html
Der WS-Weg (
00:16:55)
Leute müssen für Webservices oft missioniert werden; bei REST ist das deutlich einfacher
Bei Web Serivces entwirft man permanent neue Protokolle (mit SOAP)
WSDL: http://www.w3.org/TR/wsdl
Enterprise Service Bus: https://en.wikipedia.org/wiki/Enterpriseservicebus
Microservices vs SOA? (
00:22:05)
James Lewis, Martin Fowler über Microservices: http://martinfowler.com/articles/microservices.html
Jim Webber "Guerilla SOA": http://www.infoq.com/presentations/webber-guerilla-soa
Hypermedia Explained (
00:23:53)
Hypermedia: https://en.wikipedia.org/wiki/Hypermedia
Heute sind REST APIs relativ gut (kein GET mehr, um eine Ressource zu löschen)
URI Templating, http://whatisrest.com/restservicecontracts/uritemplatesandresourcequeries
REST APIs haben eine Startseite, von wo aus der Clients den Links folgen kann
Der API Client braucht nicht so festverdrahtet sein
Links für Ressourcen signalisieren dem Client, wie er mit einer Ressource interagieren kann
Architekturstile (https://de.wikipedia.org/wiki/Architekturstil) haben immer Tradeoffs!
Apache Thrift: https://en.wikipedia.org/wiki/Apache_Thrift
CORBA: https://en.wikipedia.org/wiki/CommonObjectRequestBrokerArchitecture
URI Templates sind ein Rezept, um z.B. eine große Menge von Links abzubilden
HTML ist ein schönes Beispiel: Mit einem Formular und GET
HTML ist ein Hypermedia Format!
Ein Browser ist quasi ein Hypermedia Client
REST sollte Standardformate, selbstbeschreibender Nachrichten verwenden
IANA Media Types: https://www.iana.org/assignments/media-types/media-types.xhtml
Populäre Formate: JSON, XML
JSON Schema: http://json-schema.org/
JSON & Hypermedia
Collection+JSON: http://amundsen.com/media-types/collection/
Hypertext Application Language: http://stateless.co/hal_specification.html
Siren: https://github.com/kevinswiber/siren
Jon Moore, "Building Hypermedia APIs with HTML": http://www.infoq.com/presentations/web-api-html
AtomPub, The Atom Publishing Protocol: http://bitworking.org/projects/atom/rfc5023.html
REST für das Web (
00:45:00)
REST ist die Architektur des Webs und nicht nur von Web Services
ROCA: Resource-oriented Client Architecture: http://roca-style.org
Single 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.html
SEO & Single Page Apps: http://backbonetutorials.com/seo-for-single-page-apps/
iTunes im Browser? o_O z.B. mit https://vaadin.com/home
Monolithen aufbrechen; die einzelnen Teile sollten auch ein eigenes UI haben
Breaking the monolith: Towards a system-of-systems architecture: http://vimeo.com/74354372
jQuery 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 Implementierung
Bower: 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 Kontext
Web Service Metadaten mit RESTful HTTP managen
UDDI: https://en.wikipedia.org/wiki/UniversalDescriptionDiscoveryandIntegration
WSDL: https://en.wikipedia.org/wiki/WebServicesDescription_Language
WS-MetadataExchange: https://en.wikipedia.org/wiki/WS-MetadataExchange
Ausblick (
01:17:20)
Alte Ideen tauchen in neuen Konzepten wieder auf; verschiedene Gruppe lernen von einander
JAXconf: http://jaxconf.com/
innoQ Timeline: http://www.innoq.com/de/timeline/
innoQ Podcast: http://www.innoq.com/de/timeline/?type=podcast_episodes