Geekstammtisch   /     GST031 - CORBA in cool

Description

Mit Stefan Tilkov (@stilkov) sprachen wir über Softwarearchitekturen, vor allem REST und Web Services. Wir haben keine 800 Personenjahre gebraucht, um festzustellen, dass Thrift CORBA in cool ist und die Idee "Rechte Maustaste, 'Generate and Deploy Web Service'" nicht wirklich funktioniert. Neben REST im Allgemeinen sprechen wir über Hypermedia und wie alles zusammengreifen kann. Stefan schlägt eine interessante Brücke von der Idee REST als Backend-Thema hin zu REST für das Web, wodurch wir zu ROCA, einem Architekturstil, kommen.

Subtitle
Wir haben mit Stefan Tilkov über Softwarearchitekturen, REST und das Web gesprochen.
Duration
4822
Publishing date
2014-04-14 11:39
Link
http://geekstammtisch.de/8-gst031-corba-in-cool
Contributors
  Dirk Breuer, Sebastian Cohnen
author  
Enclosures
https://cdn.podigee.com/uploads/u235/gst03114822543714dee.m4a?v=1482254509&source=feed
audio/aac

Shownotes

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