© Excellent backgrounds/Shutterstock.com
Command Query Responsibility Segregation

Weg vom Schichtenmodell!


Die Schichtenarchitektur ist seit langer Zeit das Standardarchitekturmuster. Eine beachtenswerte Alternative hierzu stellt die CQRS-Architektur dar, bei der lesende und schreibende Datenzugriffe getrennt – durch separate und optimierte Datenmodelle – ausgeführt werden. CQRS ist eine Alternative zur klassischen Dreischichtenarchitektur und eignet sich besonders, aber nicht nur, für verteilte und Systeme mit stark konkurrierenden Zugriffen.

Die richtige Architektur für ein System zu finden, stellt am Anfang eines Projekts immer eine besondere Herausforderung für alle an der Implementierung Beteiligten dar. Die fachlichen Anforderungen sind bekannt und das zu bauende System soll natürlich allen notwendigen Qualitätsanforderungen entsprechen. Es soll die gesetzten Performanceanforderungen erfüllen, im Bedarfsfall gut skalieren sowie leicht wartbar und gut erweiterbar sein. Auf Grundlage der bekannten Anforderungen werden Services konzipiert, und das System wird nach Verantwortlichkeiten geschnitten. Entsprechend der verschiedenen Domänen unterscheiden sich die Architekturen fachlich. Technisch hingegen wird in den allermeisten Fällen die klassische Schichtenarchitektur gewählt.

Erinnern wir uns: Bei der Schichtenarchitektur (Abb. 1) handelt es sich um ein etabliertes technisches Architekturmuster, das ein System in mehrere Schichten unterteilt. Jede Schicht stellt der sich über ihr befindenden Schicht Dienste zur Verfügung, die die Implementierung der Schicht nach für die folgende Schicht abstrahieren. Die Infrastrukturschicht bildet die unterste Schicht und abstrahiert technische Aufgaben wie Kommunikation und Persistenz. Die darüber liegende Domänschicht bildet die Fachlichkeit ab, und die Präsentationsschicht ist für die Benutzeroberfläche und externe Schnittstellen zuständig. Dieses Architekturmuster ist leicht verständlich und gut umzusetzen. Und es schafft die notwendige Abstraktion, erlaubt es also, leichter einzelne Komponenten gegeneinander auszutauschen.

fischer_1.tif_fmt1.jpg Abb. 1: Die Schichtenarchitektur trennt und abstrahiert Komponenten horizontal nach funktionalen Aspekten; der Datenfluss muss sich danach richten

Das Schichtenmodell hat aber auch gravierende Nachteile: schlechte Performance, schwierige Erweiterbarkeit und beschränkte Skalierbarkeit. Diese Probleme treten in der Regel nicht sofort auf, wenn die Applikation in den Betrieb geht, sondern erst später, wenn die Datenmengen den Datensatz der Entwicklung übersteigen, die Applikation um anfangs nicht a...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang