Ein neuer Hype zieht seit einigen Monaten durch die Software-Architektur-Welt: Die Self-contained Systems; abgekürzt SCS. Wie so oft in der IT handelt es sich hierbei um teils bekannte Konzepte mit neuem Namen.
Das Ziel von SC-Systemen ist eine saubere Modularisierung von Softwarekomponenten. Es sollen möglichst unabhängige und kleine Softwareeinheiten erschaffen werden. Ein SCS beinhaltet per Definition den Fullstack. Das heißt, Datenbank, Logik und (Web-)Frontend müssen Bestandteil eines solchen Systems sein. Jedes “geschlossene System” soll weitgehend autonom und unabhängig entwickelt werden können, um maximale Freiheit, Beschleunigung und Agilität in der Softwareentwicklung zu erreichen. In diesem Sinne ist die Zielsetzung der Self-Contained Systems absolut vergleichbar mit den Zielen der Microservice-Architekturen:
Was unterscheidet nun ein SCS von einem Microservice (MS)? Primär fällt auf, dass ein SCS wesentlich konkreter definiert ist als ein MS. Was ein Microservice beinhalten darf und was nicht, ist offen gelassen und wird in jedem Umfeld neu definiert. So finden sich in einigen Firmen sehr feingranulare Microservices, bei welchen jede kleine Teilfunktion extra gekapselt wird. Anforderungen wie “Ein Mikroservice darf nicht mehr als 30 Klassen und 5.000 Zeilen-Code erhalten” wären in so einem Umfeld üblich. Andere Firmen haben diese Einschränkungen nicht, sondern schneiden ihre Mircoservices horizontal. Das heißt, es werden eigenständige Microservices für Datenbankzugriffe, Logik/Services und Oberflächenfunktionen gebaut. Die Dritte Variante ist das vertikale Schneiden. Diese Services beinhalten eine komplett autarke (Mini-)Anwendung inkl. Datenhaltung, Logik und Oberfläche.
“Vertikal” ist das richtige Stichwort um ein Self-contained System einzuordnen. Ein SCS ist per Definition vertikal geschnitten und somit ein eigenständige Applikation über alle Layer.
Ein SCS ist ein Microservice der vertikal geschnitten ist.
Weitere Abgrenzungen eines Self-contained Systems (SCS) zu Microservices (MS):
Wer erinnert sich noch an die Serviceorientierte Architektur (SOA)? 1996 durch das Marktforschungsunternehmen Gartner “erfunden” und in den ersten 10 Jahren dieses Jahrtausends stark in Mode. Die Definition von einer SOA ist recht abstrakt und laut Wikipedia wie folgt:
SOA ist ein Paradigma für die Strukturierung und Nutzung verteilter Funktionalität, die von unterschiedlichen Besitzern verantwortet wird.
Betrachtet man nun SOA, Microservices und SCS, so ist festzustellen, dass die Architekturen quasi aufeinander aufbauen und jede Ausbaustufe in ihrer Definition ein Stück konkreter wurde:
Wird die SCS-Architektur sich durchsetzen können und eine ähnlich hohe Akzeptanz erfahren, wie es mit Microservices der Fall war? Es gibt bereits große Vorzeigeprojekte die teilweise (Otto-Group) und auch fast vollständig (Galeria Kaufhof) die SCS- Richtlinien implementieren.
Ich persönlich glaube jedoch, dass der SCS-Ansatz kein Mainstream wird. Der promotete Ansatz, Mini-Awendungen zu bauen, die sich untereinander mittels GUI-Integration verbinden, ist nicht trivial. Die Anforderungen an das User-Interface sind heute extrem hoch: Einheitliches Design und Nutzerführung, schnelle Antwortzeiten und Responsive Webdesign. Der Trend geht Richtung Single-Page-Applications (SPA), die einen großen Teil der Logik clientseitig implementieren. Unter diesen Rahmenbedingungen ist es schwer vorstellbar, dass eine komplexe Webanwendung, die sich über frontend-integrierte Self-contained Systems zusammensetzt, die Anforderungen zufriedenstellend erfüllt. Eine Anwendungsarchitektur, die ein zentral implementiertes Frontend vorsieht, wird stets im Vorteil sein.
Viele andere Ansätze, wie iFrames und auch Portlets konnten sich nie im großen Stil durchsetzen, da sie in Sachen einheitliches Design und Usability stets benachteiligt waren. Mit den gleichen Problemen kämpft die SCS-Architektur.
In bestimmten Bereichen, z.B. für Enterprise-Anwendungen mit reduzierten Anforderungen an ein einheitliches Frontend, ist der SCS-Ansatz aus meiner Sicht sehr charmant. Hier spielt die Architektur ihre Vorteile aus und sorgt für eine robuste und wartbare Softwarelandschaft.
Weitere Informationen zu SCS finden sich auf der Website der geschätzten Kollegen der Firma innoQ: http://scs-architecture.org/