Praktisches & Grundsätzliches zur Informatik

Anwendungsarchitektur, Softwarearchitektur, Schichtenstruktur

Anzustrebende Applikationsarchitektur

Moderne (Standard-) Applikationsarchitektur kombiniert

  • unterschiedlichste Datenbanken
  • mit Application Services (technisch sind das per REST ansprechbare SOA Services)
  • und client-spezifische, in HTML5 und JavaScript implementierte Endanwender-Schnittstellen:





    Applikationsarchitektur im Unternehmen und darüber hinaus





    Die alte (aussterbende) und
    die neue — nun sehr modulare, integrationsfreundliche — Schichtenstruktur

    Letztere besteht aus:


    End-Benutzer-Schnittstelle (= Webportal)

    darunter einer Menge durch das Portal per REST API ansprechbarer Services

    zur Pflege und Verarbeitung von Daten

    sowie (als unterster Schicht) Datenbanken



    Damit die Services sich auch untereinander so einfach und so performant wie nur irgend möglich auf­rufen lassen, sollte jeder Service auch Teil einer Programmbibliothek sein, als der er dann per API in den Code der ihn aufrufenden Services eingebunden sein kann. Sein REST API ist einfach nur Wrapper um jenes direktere API.

    Hatte man noch bis etwa 2012 als Datenformat fast immer XML gewählt, wird man heute — um etwas performanteren Code zu bekommen — eher JSON wählen. Optimal implementiert sind Services, die dem Aufrufer gestatten, das Format, in dem der Service sein Ergebnis abliefert, per Parameter zu spezifizieren (einzeln für jeden Serviceaufruf). Dies macht zudem noch den Code, welcher den Service implementiert, transparenter und kostengünstiger wartbar.


    Sehr wichtig:

    Jede der Komponenten — und ganz besonders jede, die einen Service implementiert (und wenn es nur einer ist, der Daten verwaltet) — muss so implementiert sein, dass bestmögliches Information Hiding gegeben ist. REST kommt dem sehr entgegen, denn alles, was der Aufrufer abrufen kann, ist einfach nur per URL identifiziert. Dies gilt für Daten ebenso wie für Funktionalität jeder Art (so dass ihre Implemen­tierung sich jederzeit optimieren lässt  o h n e  dass Anwendungen sich anpassen müssen).



    Information Hiding (Definition)




    Man lese auch:
    • Why EAI is necessary
    • EAI vs. SOA vs. ESB vs. Microservices (as of 2014)
    • Microservices Architecture: What, When, and How
         
        Heute (2016) hört man recht oft sagen, SOA sei durch Microservices überholt. Das aber ist falsch, denn:

        Microservices sind einfach nur ein Spezialfall von SOA, über den man zunächst kaum gesprochen hat. Tatsache ist: Es kommt immer darauf an, die Granularität der Services geeignet zu wählen. Microservices als konkurrenzlos zu sehen, wird selten zu einer wirklich optimalen Lösung führen.

        Bei recht grober Granularität der Services, werden Clients die Services häufig über einen ESB ansprechen, bei eher kleiner Granularität aber direkt per REST. Wo nichts dagegen spricht, Client und Service im selben Prozess zu haben, den Service also einfach in Form einer direkt aufrufbaren Klasse oder Code-Bibliothek zu implementieren, wird diese Lösung natürlich stets die beste sein.

        Martin Fowler (der erstmals von Microservices sprach) definiert: "The microservices archi­tectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP REST API. These services are built around business capabilities and independently deployable by fully automated deployment machinery."

        Lies auch Fowlers Notiz Microservices and SOA.

        In a world with constantly changing business requirements and a growing number of appli­cation clients, centralized infrastructures are getting too expensive to operate and scale towards unpredictable load or load peaks. The key idea with microservices is supporting their independence from the rest of the application landscape so that they can evolve quickly. They are to scale independently and will require fewer resources than application server-based applications.
         
    • Integration Guide 2016
    • Integration Guide 2017
    • API Style Guides
    • Cloud Native Applications will soon become the rule.
    Wissenswertes zu "Schichtenstruktur, Softwarearchitektur, Anwendungsarchitektur" zusammengestellt durch Gebhard Greiter.
    tags: Service1gegreit REST1gegreit Microservices1gegreit