Clean Architecture ist ein Ansatz zur Gestaltung komplexer Softwaresysteme, der die Unabhängigkeit der Geschäftslogik von Frameworks, Datenbanken, Benutzerschnittstellen und anderen externen Faktoren gewährleistet. Im Mittelpunkt steht die Trennung des Codes in Schichten, zwischen denen es möglich ist, minimale gegenseitige Beeinflussung zu vermeiden.
In der klassischen Clean Architecture sehen wir interne Schichten (Use Cases, Entities) und externe (Frameworks, Gateways, Controllers). Der Wechsel von Abhängigkeiten erfolgt ausschließlich nach innen (Umkehrung der Abhängigkeiten), was es ermöglicht, Systeme problemlos zu konfigurieren, zu modifizieren und zu testen, ohne das Risiko einzugehen, die kritische Geschäftslogik zu gefährden.
Beispielcode (in Python):
# Entity class Order: def __init__(self, id, total): self.id = id self.total = total # Use case class CompleteOrderUseCase: def __init__(self, order_repository): self.order_repository = order_repository def execute(self, order_id): order = self.order_repository.get_by_id(order_id) order.completed = True self.order_repository.save(order)
Schlüsselfeatures:
Können alle Schichten der Clean Architecture von getrennten Diensten implementiert werden?
Nicht unbedingt. Manchmal ist es nicht sinnvoll, jede Schicht in einen separaten Dienst zu trennen, aufgrund der hohen Kopplung oder des Overheads bei der Kommunikation. Schichten sind eine logische Trennung, physische Isolation ist nur dann erforderlich, wenn es gerechtfertigt ist.
Kann die Regel der Abhängigkeitsrichtung in der Clean Architecture verletzt werden, wenn dies die Entwicklung beschleunigt?
Nein, da selbst eine kurze Zeitersparnis zu einer komplizierteren Wartung in der Zukunft führt. Die Abhängigkeitsrichtung ist ein Grundprinzip der Clean Architecture und eine Verletzung führt zum Verlust der Vorteile der Struktur.
Müssen Geschäftsregeln immer ausschließlich in der inneren Schicht implementiert werden?
Ja, alle wichtigen Geschäftsregeln sollten sich in der inneren Schicht (Entities oder Use Cases) befinden, damit Änderungen an externen Abhängigkeiten keinen Einfluss auf die Geschäftslogik haben.