Referenzarchitektur Backend

IFS-Logo 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.

Creative Commons Namensnennung 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.

architektur backend.dn
Abbildung 1. Systemarchitektur eines Backends

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.

anwendungskern.dn
Abbildung 2. Einbettung des Anwendungskerns in die Systemarchitektur

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.

persistenz.dn
Abbildung 3. Einbettung der Persistenzschicht in die Systemarchitektur

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.

Persistente Entitäten im Anwendungskern

Persistente Entitäten dürfen nicht über den Anwendungskern hinaus herausgegeben werden. Sie haben im Anwendungskern zu verbleiben.

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.

service.dn
Abbildung 4. Einbettung der Serviceschicht in die Systemarchitektur

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.

querschnitt.dn
Abbildung 5. Einbettung des Querschnitts in die Systemarchitektur

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