Referenzarchitektur Backend
Diese Seite ist ein Teil der IsyFact-Standards. Alle Inhalte der Seite, insbesondere Texte und Grafiken, sind urheberrechtlich geschützt. Alle urheberrechtlichen Nutzungs- und Verwertungsrechte liegen beim Bundesverwaltungsamt.
Die Nutzung ist unter den Lizenzbedingungen der Creative Commons Namensnennung 4.0 International gestattet.
Ein Backend ist ein IT-Systemtyp, der hauptsächlich Geschäftslogik umsetzt und diese in Form von Services bereitstellt. Dabei kann es sich um Nachbarsystemschnittstellen einer Anwendung handeln, die von anderen Anwendungen verwendet werden, oder um interne Schnittstellen, die von anderen IT-Systemen derselben Anwendung verwendet werden. Backends setzen, auf die fachliche Referenzarchitektur bezogen, maßgeblich Anwendungskomponenten und Nachbarsystemschnittstellen um.
Backends sind technisch gleichartig aufgebaut. Sie setzen auf eine Drei-Schichten-Architektur, ergänzt um eine "Säule" querschnittlicher Funktionalität.
1. Übergreifende Aspekte
Die Schichten beinhalten einen Großteil der Funktionalität eines Backends. Trotzdem gibt es Aspekte, die übergreifend geregelt sind, damit die Schichten zusammen ein lauffähiges Backend ergeben.
1.1. Strukturierung des Backends
Die Schichten des Backends sind maßgeblich in Fachkomponenten strukturiert. Die Fachkomponenten entsprechen den durch das Backend umgesetzten Anwendungskomponenten. Neben den Fachkomponenten enthält jede Schicht ein Framework, das maßgeblich zur Umsetzung ihrer Kernaufgabe beiträgt.
Backends setzen für die Verwaltung, Konfiguration und Kopplung der Fachkomponenten nach dem Prinzip der Dependency Injection Spring Boot und weitere Bestandteile von Spring ein. Details hierzu werden über die Vorgaben zur Verwendung von Spring festgelegt.
1.2. Transaktionssteuerung
Die Veränderung des Datenbestands gehört zur Kernaufgabe eines Backends. Hierzu setzen Backends Transaktionen ein. Transaktionen müssen die ACID-Eigenschaften erfüllen, um grundlegende Anforderungen an Datenqualität zu erfüllen.
In Backends ist der Anwendungskern für die Transaktionssteuerung zuständig. In Ausnahmefällen kann die Transaktionssteuerung auch über die Serviceschicht erfolgen.
1.3. Caching
Anwendungsspezifische Caches sind mit der Spring Cache Abstraction und einem geeigneten Caching Provider zu implementieren.
Die Spring Cache Abstraction bietet eine effiziente und flexible Möglichkeit, Caching in Anwendungen zu implementieren. Durch ihre Verwendung wird das Hinzufügen von Caching, zum Beispiel über die Nutzung von Annotationen, zu bestehenden Methoden erleichtert. Der zugrundeliegende Code ist nicht wesentlich zu verändern.
Mit dem so abstrahierten Caching ist die Cache-Implementierung unabhängig vom genutzten Cache-Provider. Die Wahl des Cache-Providers ist gemäß einer notwendigen Skalierung und betrieblichen Gegebenheiten abzustimmen. Der Produktkatalog empfiehlt EHCache. Weitere Informationen zu EHCache sind in der offiziellen Dokumentation einzusehen.
2. Anwendungskern
Der Anwendungskern ist der zentrale Bestandteil eines Backends. Hier werden die fachlichen Funktionen der zugehörigen Anwendung realisiert. Der Aufbau des Anwendungskerns sowie seine Kommunikation mit anderen Schichten ist in folgender Grafik dargestellt.
2.1. Fachkomponenten
Fachkomponenten setzen die Anwendungskomponenten aus der fachlichen Architektur um. Sie bilden damit den Schnitt der Anwendungskomponenten in die technische Architektur ab. Fachkomponenten beinhalten möglichst wenig Technik und trennen so Anwendungslogik von Technologie.
Fachkomponenten sind der Schlüssel für gute Wartbarkeit und einfache Weiterentwickelbarkeit des Anwendungskerns. Die Trennung von Anwendungslogik und Technik ist deshalb auch in anderen Schichten der technischen Architektur vorgesehen, z. B. in der Persistenz. |
2.2. Anwendungskern-Framework
Für querschnittliche Funktionalität innerhalb des Anwendungskerns wird das Spring-Framework genutzt. Hauptaufgabe des Frameworks ist es, die Komponenten zu konfigurieren und miteinander bekanntzumachen. Dadurch wird die Trennung zwischen Fachlichkeit und Technik verbessert. Beispiel für querschnittliche Funktionalität ist die deklarative Steuerung von Transaktionen.
2.3. Service Consumer
Wenn Backends Services anderer IT-Systeme zur Erfüllung ihrer fachlichen Aufgaben benötigen, so werden diese als Komponente ("Service Consumer") im Anwendungskern abgebildet. Dabei ist es für ein Backend unerheblich, ob der Service innerhalb oder außerhalb der Anwendungslandschaft beheimatet ist. Service Consumer verhalten sich wie Fachkomponenten des Anwendungskerns. Sie übernehmen die technische Kommunikation mit dem Service sowie die Abbildung von Transportobjekten des Services auf Geschäftsobjekte und Exceptions des Backends. Dadurch ist ihre Funktionalität sauber gekapselt, sodass technische Änderungen am Service im Idealfall nur zu Änderungen am Service Consumer führen.
2.4. Umsetzung
Zur Konzeption und Umsetzung des Anwendungskerns definiert die Referenzarchitektur weitere Vorgaben.
3. Persistenz
Die Persistenzschicht umfasst den Teil eines Backends, der den Datenbestand verwaltet. Sie kommuniziert hierzu in der Regel mit einer Datenbank und, mittels persistenten Entitäten, mit dem Anwendungskern. Der Aufbau der Persistenzschicht sowie ihre Kommunikation mit anderen Schichten ist in folgender Grafik dargestellt.
3.1. Fachkomponenten
Die Persistenzschicht gliedert sich, wie der Anwendungskern, in Fachkomponenten. Die Fachkomponenten der Persistenzschicht entsprechen vom fachlichen Schnitt her denen des Anwendungskerns. Sie beinhalten das Datenmodell (das heißt Modellkomponenten, Entitäten und Attribute) der fachlichen Architektur und bilden es auf der technischen Ebene ab.
Die Fachkomponenten des Anwendungskerns besitzen die Datenhoheit auf die entsprechenden Fachkomponenten in der Persistenzschicht. Nur die Fachkomponente mit Datenhoheit darf Änderungen an den jeweiligen persistenten Entitäten vornehmen.
Andernfalls ist nicht sichergestellt, dass andere Komponenten keine Änderungen an den persistenten Entitäten vornehmen. Für den Transfer über Komponentengrenzen hinweg - oder aus dem Anwendungskern hinaus - müssen alle Komponenten des Anwendungskerns persistente Entitäten auf Geschäftsobjekte abbilden.
3.2. Persistenz-Framework
Die Persistenzschicht kommuniziert in Richtung Datenbank auf Basis der Standards JDBC und SQL. In Richtung des Anwendungskerns stellt sie persistente Entitäten mittels Spring Data JPA bereit. Zur Umsetzung des objekt-relationalen Mapping verwendet die Persistenzschicht das Produkt Hibernate.
3.3. Umsetzung
Zur Konzeption der Persistenzschicht definiert die Referenzarchitektur weitere Vorgaben. Die Umsetzung geschieht mithilfe des Bausteins JPA/Hibernate.
4. Serviceschicht
Die Serviceschicht stellt Services von Backends innerhalb einer Systemlandschaft zur Verfügung. Sie regelt die Autorisierung von Aufrufen, validiert die übergebenen Daten und ruft die entsprechenden fachlichen Operationen des Anwendungskerns auf. Der Aufbau der Serviceschicht sowie ihre Kommunikation mit anderen Schichten ist in folgender Grafik dargestellt.
4.1. Fachkomponenten
Die Fachkomponenten der Serviceschicht spiegeln die Fachkomponenten aus dem Anwendungskern wider. Sie nehmen die Daten der Anfragen von außen entgegen und stellen die Funktionalität und Daten des Anwendungskerns nach außen hin zur Verfügung.
4.2. Service-Framework
Das Service-Framework definiert die Service-Endpunkte des Backends und stellt diese zur Verfügung. Es wandelt die in der HTTP-Anfrage übertragenen Daten in Transportobjekte um und ruft die entsprechende Fachkomponente auf. Ebenso erledigt es die Umwandlung des Ergebnisses in eine HTTP-Antwort. Zur Definition der Service-Endpunkte wird Spring Web MVC verwendet. Zur Konfiguration der Serviceschicht wird das Spring-Framework genutzt.
4.3. Umsetzung
Zur Konzeption von Services definiert die Referenzarchitektur weitere Vorgaben. Die Umsetzung der Serviceschicht geschieht mithilfe des Bausteins REST.
5. Querschnitt
Neben der Geschäftslogik müssen Backends ebenso querschnittliche Funktionalität bereitstellen.
Die IsyFact hilft hierbei durch eigens entwickelte Bausteine sowie durch den Einsatz von Standard-Produkten aus dem Technologiestack: Java/Spring.
- Fehlerbehandlung
-
Vorgaben und Umsetzung mithilfe des Bausteins Fehlerbehandlung
- Konfiguration
-
Vorgaben aus der Referenzarchitektur, Umsetzung mithilfe von Spring
- Logging & Tracing
-
Vorgaben und Umsetzung mithilfe des Bausteins Logging
- Autorisierung
-
Vorgaben und Umsetzung mithilfe des Bausteins Security
- Monitoring
-
Vorgaben und Umsetzung mithilfe des Bausteins Überwachung