Vier Architektur-Optionen für die Anwendungsentwicklung im digitalen Zeitalter

Softwareentwickler, der im Büro arbeitet

Welches Anwendungsarchitekturmodell ist für Sie im Cloud-Zeitalter am besten geeignet?

Unternehmen durchlaufen zunehmend eine digitale Transformation, um den sich verändernden Bedürfnissen der Verbraucher gerecht zu werden. Kunden nutzen auch immer häufiger soziale Netzwerke, mobile Anwendungen und digitale Technologien. Aufgrund dieses Wandels ist die digitale Strategie nun ein integraler Bestandteil der gesamten Geschäftsstrategie. 

Viele Unternehmen beziehen Computing Power durch Cloud-Service-Plattformen über das Internet und verfolgen für die meisten Anwendungsentwicklungen eine Cloud-First-Strategie. Dies hat zu einer Änderung des Anwendungsdesigns beigetragen – zuvor standen Funktionalität und Zustandhaftigkeit im Vordergrund, aber jetzt werden die meisten verbraucherorientierten Anwendungen auf Software-as-a-Service (SaaS) und digitale Plattformen umgestellt. Der Fokus auf Anwendung liegt jetzt viel mehr auf Erfahrung, Zustandslosigkeit und Agilität.

Die Wahl der richtigen Anwendungsarchitektur hängt von Ihren Geschäftsanforderungen ab. In diesem Beitrag untersuchen wir vier Architekturoptionen, die eine digitale Transformation basierend auf den allgemeinen Geschäftsanforderungen ermöglicht.

 

Die neuesten Tech-News – von Experten bestätigt

Bleiben Sie mit dem Think-Newsletter über die wichtigsten – und faszinierendsten – Branchentrends in den Bereichen KI, Automatisierung, Daten und mehr auf dem Laufenden. Weitere Informationen finden Sie in der IBM Datenschutzerklärung.

Vielen Dank! Sie haben sich angemeldet.

Ihr Abonnement wird auf Englisch geliefert. In jedem Newsletter finden Sie einen Abmeldelink. Hier können Sie Ihre Abonnements verwalten oder sich abmelden. Weitere Informationen finden Sie in unserer IBM Datenschutzerklärung.

Traditionelle 3-Tier-Anwendungsarchitektur

Wir alle kennen die dreistufige Anwendungsarchitektur – es ist eine Client-Server-Architektur mit einer typischen Struktur, die aus der Präsentationsschicht, der Anwendungsschicht und der Datenbankschicht besteht.

Es verfügt über eine Benutzeroberfläche, eine Geschäfts-/Datenzugriffslogik und einen Datenzugriff. Viele Unternehmensanwendungen wurden mit der einfachen dreistufigen Anwendungsarchitektur erstellt.

Anwendungsentwicklung

Steigen Sie ein: Entwicklung von Enterprise-Anwendungen in der Cloud

In diesem Video erläutert Dr. Peter Haumer, wie die moderne Entwicklung von Unternehmensanwendungen in der Hybrid Cloud heute aussieht, indem er verschiedene Komponenten und Praktiken demonstriert, darunter IBM Z Open Editor, IBM Wazi und Zowe. 

Was ist das Problem mit der 3-Tier-Anwendungsarchitektur?

Das dreistufige Anwendungsmodell ist einfach ausgedrückt überholt. Es wurde vor der Verbreitung von öffentlichen Clouds und mobilen Anwendungen für die Anwendungsentwicklung konzipiert und hatte Schwierigkeiten, sich an die Cloud anzupassen.

Im Laufe der Zeit kann eine Anwendung aber auch zu groß und komplex werden, um häufige Änderungen vorzunehmen. Nicht nur das, es erfordert auch die Wartung von mindestens drei Schichten von Hardware und Software, was für das Unternehmen ineffizient sein kann. 

Das 3-Tier-Anwendungsmodell wird auch häufig als monolithische Architektur bezeichnet. Heutzutage gibt es mehrere neue Architekturmodelle, und im Folgenden werden wir einige davon untersuchen, die jetzt im Zeitalter der Cloud verfügbar sind.

1. Microservices-Architektur

In einem Cloud-Modell sind komplexe Anwendungen, die als Sammlung von Services und Daten konzipiert sind, vollständig von der Anwendung entkoppelt. Microservice ist ein Architekturstil, der die Anwendung als Sammlung von Services strukturiert. Jeder Dienst kann in einer anderen Programmiersprache geschrieben und separat getestet werden. Sie sind unabhängig voneinander einsetzbar und nach Geschäftsfunktionen ausgerichtet.

Nehmen wir das Beispiel einer E-Commerce-Anwendung, die mit einer Microservices-Architektur entwickelt wurde. Jeder Microservice kann sich auf eine einzelne Geschäftsfunktion konzentrieren (z. B. Warenkorb, Suche, reviews). Jeder dieser Dienste kann ein separater Service sein, der in verschiedenen Programmiersprachen geschrieben, in einer anderen Infrastruktur bereitgestellt und von verschiedenen Teams verwaltet wird.

Jeder Dienst kommuniziert mit den anderen über ein schlankes Protokoll. Für eine 3-Tier-Lösung kennen wir das MVC-Framework (Model View Controller). Sidecar, Ambassador und Adapter sind einige der Frameworks, die Microservices-Architekturen unterstützen.

Microservices-Architektur im Vergleich zu monolithischer Architektur

In einer monolithischen Architektur existieren all diese Komponenten als ein einziges Modul, das (meistens) von einem einzigen Team verwaltet wird – alles ist gebündelt. Wenn Sie ein Update durchführen müssen, müssen Sie die gesamte Anwendung bereitstellen, und das verlangsamt die Änderungen bei größeren komplexen Anwendungen. Für kleinere Anwendungen ist eine monolithische Architektur oft die beste Lösung.

Microservices, Container und Kubernetes

Eine der besten Möglichkeiten für die Erstellung und Ausführung von Microservice-Anwendungsarchitekturen ist die Verwendung von Containers. Container kapseln eine schlanke Virtualisierung-Laufzeitumgebung für Ihre Anwendung und ermöglichen es Ihnen, die Anwendung vom Desktop des Entwicklers bis hin zur Produktionsbereitstellung zu verschieben. In den meisten verfügbaren Betriebssystemen können Sie Container auf virtuellen Maschinen oder physischen Maschinen ausführen. Container bieten eine konsistente Softwareumgebung, und Sie können alle Abhängigkeiten Ihrer Anwendung als bereitstellbare Einheit kapseln. Container können auf einem Laptop, einembare metal server oder in einer Public Cloud ausgeführt werden.

Viele Unternehmen nutzen Kubernetes, um Container zu verwalten und sicherzustellen, dass es nicht zu Ausfallzeiten kommt. Kubernetes bietet Container-Orchestrierung in mehreren Hosts und wird für die Verwaltung des Lebenszyklus von Containern verwendet. Sie können die Bereitstellung automatisieren, Ihre Anwendung automatisch skalieren und mit Kubernetes schnell entwickeln und schnell ausliefern.

Weitere Informationen zu Kubernetes finden Sie in unserem Video „Kubernetes erklärt“.

Red Hat OpenShift ist eine der beliebtesten und führenden Hybrid-Cloud-Containerplattformen für Unternehmen. Viele Public-Cloud-Provider bieten Containers-as-a-Service (CaaS) an. Einige der anderen verfügbaren Kubernetes-Engines sind IBM Cloud Kubernetes Service, Open Source Kubernetes, AWS (EKS, ECS und Fargate), Google GKS und Azure AKS.

Normalerweise wird jeder Microservice von einem anderen kleinen Team erstellt, das seine Programmiersprache und seinen Bereitstellungsplan auswählt. Ein Service Mesh wie Istio wird von Unternehmen eingesetzt, um die Kommunikation zwischen Microservices und dem Management zu steuern. In einem Service Mesh werden Anfragen über Proxys (z. B. Sidecar) zwischen Microservices weitergeleitet.

2. Cloudnative Architektur

Die cloudnative Architektur wurde speziell für Anwendungen entwickelt, die die Bereitstellung in der Cloud planen, und Microservices sind ein wichtiger Bestandteil.

Cloudnativ ist ein Ansatz zur Entwicklung und Ausführung von Anwendungen, der die Vorteile des Cloud Computing -Bereitstellungsmodells ausnutzen. Cloudnativ ist ein Begriff, der zur Beschreibung von containerbasierten Umgebungen verwendet wird, und es geht darum, wie Anwendungen erstellt und bereitgestellt werden, nicht wo.

Cloudnativ Technologien ermöglichen es uns, Anwendungen in öffentlichen, privaten und Hybrid Cloud auszuführen. Cloudnative Entwicklung ist für die schnelle Markteinführung von Anwendungen unerlässlich. Sie hilft Menschen, Prozessen und Technologien bei der Entwicklung, Bereitstellung und Verwaltung von Apps, die für die Cloud bereit sind.

Das cloudnative Architekturmodell nutzt DevOps, Continuous Integration (CI), Continuous Delivery (CD), Microservices und Container. Die meisten Unternehmen nutzen die Zwölf-Faktor-Methode zur Entwicklung skalierbarer und robuster cloudnativer Anwendungen.

In der Cloud müssen Anwendungen in der Lage sein, gleichzeitig auf mehreren Knoten ausgeführt zu werden, einen Konfigurations-/Sitzungsstatus gemeinsam zu teilen, über einen zentralen Protokollierungsmechanismus zu verfügen und mit DevOps und einem CI/CD-Prozess bereitgestellt zu werden. Viele Cloud-Provider geben Richtlinien für die cloudnative Entwicklung an – Amazon Web Services (AWS) verfügt über ein gut strukturiertes Framework, Google verfügt über verschiedene Anleitungen zum Aufbau cloudnativer Anwendungen und Microsoft Azure verfügt über einen eigenen Leitfaden zu Cloud Patterns.

Normalerweise sind cloudnative Anwendungen von Natur aus statusunabhängig. Die Services kommunizieren untereinander über REST-basierte Protokolle oder Messaging. Das API Gateway, die container registry, die nachrichtenorientierte Middleware (MOM: Publish/abonnieren oder Request/Response), das Service Mesh und die Orchestrierungen konnten Teil der cloudnativ Architektur sein.

3. Ereignisgesteuerte Serverlose Architektur

Die ereignisgesteuerte Architektur (EDA) basiert auf entkoppelten Systemen, die als Reaktion auf Ereignisse ausgeführt werden. Eine ereignisgesteuerte Architektur verwendet Ereignisse, um entkoppelte Services auszulösen und zwischen ihnen zu kommunizieren. EDA gibt es schon seit langem, aber jetzt hat es in der Cloud mehr Relevanz.

Was also gibt es Neues? Richtig eingesetzt, kann sie die Agilität deutlich steigern, Kosteneinsparungen ermöglichen und operative Nutzen mit sich bringen. Die verteilte Serverlos EDA kann Code ausführen, der als Funktionen bezeichnet wird und als Reaktion auf eine REST-API oder einen Ereignisauslöser automatisch skaliert wird.

Für das Serverlos-Modell ist keine Serververwaltung erforderlich. Das Serverlos-Modell ist außerdem schnell skalierbar (sodass schnelle Aktualisierungen und Bereitstellungen möglich sind) und es ist statusunabhängig.

Hier sind einige der derzeit verfügbaren Cloud Serverlos-Services von verschiedenen Cloud-Providern:

Arten von Serverlos

  • Functions-as-a-Service (FaaS): Laden Sie Teile von Funktionen in die Cloud hoch und lassen Sie diese Teile unabhängig voneinander ausführen.
  • Backend-as-a-Service (BaaS): Nutzen Sie die Dienste eines Drittanbieters, z. B. Anwendungsmanagement, Datenbankmanagement und Cloud-Speicher.
  • Mobil-Backend-as-a-Service (MBaaS): Funktionen für mobile Anwendungen.

4. Cloudbasierte Architektur

Wie können wir dafür sorgen, dass monolithische Anwendungen in einer Cloud-Umgebung gut funktionieren? Eine cloudbasierte Architektur eignet sich am besten für den Bau einer modernen Web-Anwendung, die Bereitstellung einer Web-Anwendung, die Verbindung zu einer Datenbank und die Analyse des Benutzerverhaltens.

Eine herkömmliche Cloud-basierte Anwendungsarchitektur umfasst Lastausgleichsfunktionen, Webserver, Anwendungsserver und Datenbanken. Es kann von Cloud-Funktionen wie Ressourcenelastizität, softwaredefiniertem Netzwerk, automatischer Bereitstellung, hoher Verfügbarkeit und Skalierbarkeit einen Vorteil haben.

Diese Art von Architektur ist ideal für Unternehmen, die sich nicht um die Wartung eines Servers kümmern müssen. Die Serverlosen Funktionen unterstützen verschiedene Programmiersprachen wie PHP, Java, .NET, Node.js, Python, Ruby, Docker und Go.

API Gateway ist ein wichtiger Service, der Entwicklern die Erstellung und Veröffentlichung sicherer APIs erleichtert. Die APIs dienen als Eingangstür für Anwendungen, um auf Daten und Geschäftslogik zuzugreifen. Sie kümmert sich auch um die Autorisierung und Zugriffskontrolle. Entwickler verwenden das API Gateway, um verschiedene serverlose Funktionen für unterschiedliche API-Aufrufe aufzurufen.

So entscheiden Sie, welches Architekturmodell sich für Ihre Anwendung am besten eignet

Die Entscheidung, die Sie bei der Auswahl eines Architekturmodells treffen, kann den Erfolg oder Misserfolg Ihres Projekts beeinflussen. Sie sollten Ihre Wahl auf der Grundlage Ihrer Anwendung und nichtfunktionaler Anforderungen treffen. Zum Beispiel entscheiden Sie sich nicht für den Transport mit dem Flugzeug, wenn Sie nur ein paar Meilen zurücklegen möchten.

Berücksichtigen Sie Folgendes, bevor Sie eine Architektur für Ihr App-Projekt auswählen:

  • Ist es Monolithic-First oder Microservice-First? (Für kleinere Projekte mit einer einfachen Anwendung kann die monolithische Bauweise die richtige Wahl sein.)
  • Ist Ihr Team bereit, Microservices zu nutzen?
  • Verfügt Ihr Team bereits über einen Cloud-basierten DevOps- und CI/CD-Prozess?
  • Was ist Ihr Hosting-Modell? Privat, öffentlich, hybrid?
  • Wie wirkt sich die Anwendungsarchitektur auf Ihr Projekt aus?
  • Funktioniert eine Kombination mehrerer Architekturmodelle für Sie?
  • Benötigen Sie Persistenz und Sitzungen für Ihre Anwendungen?

Zusammenfassung

Die Architektur von Webanwendungen entwickelt sich ständig weiter, um den Anforderungen des digitalen Geschäfts und der sich verändernden IT-Infrastrukturumgebung gerecht zu werden. Technologien wie künstliche Intelligenz, Analyse, Automatisierung, Advanced Robotertechnik, Edge Computing, Blockchain, Internet der Dinge (IoT), und APIs definieren neu, was in vielen Branchen möglich ist. Die zunehmende Komplexität von Infrastruktur, Anwendungen und Datengröße erfordert neue Architekturansätze. Die meisten Unternehmen verfolgen einen Multicloud-Ansatz, indem sie einen oder mehrere Cloud-Provider nutzen. Unternehmen nutzen Cloud-Services, indem sie entweder private, öffentliche oder hybride mit SaaS-, PaaS- oder IaaS-Modellen nutzen.

Früher war die Bereitstellung von Anwendungen ein schwieriger Prozess und konnte nicht während der normalen Geschäftszeiten durchgeführt werden. Verschiedene Bereitstellungsmethoden (z. B. Blue-Green- und Canary-Deployment) zusammen mit DevOps und CI/CD (Continuous Integration und Continuous Delivery) ermöglichen nun die Bereitstellung zu jedem Zeitpunkt ohne Anwendungsausfälle.

Monolithische Architekturen sind für viele Anwendungen immer noch gültig, aber für Ihren digitalen Anwendungsfall muss die richtige Architektur verwendet werden, um Agilität und Markteinführungszeit zu erreichen. Für eine einfache Anwendung sollten Sie einen traditionellen monolithischen Ansatz wählen. Die cloudnativen oder Microservices-Muster eignen sich hervorragend für sich entwickelnde Anwendungen mit Komplexität. Es ist sinnvoll, eine Microservices-Architektur zu verwenden, wenn Sie über mehrere erfahrene Teams verfügen, die mehrere Sprachen und Bereitstellungspläne verwenden. Im Folgenden wird ein Vergleich zwischen traditionellen 3/N-Tier-Anwendungen und cloudbasierten Architekturmodellen als Referenz vorgestellt.

Um mit der Entwicklung zu beginnen, registrieren Sie sich für eine IBMid und erstellen Sie ein IBM Cloud-Konto.

Autor

Ravi Saraswathi

IBM Chief Architect

IBM Blog

Weiterführende Lösungen
IBM Enterprise Application Service für Java

Ein vollständig verwalteter, mandantenfähiger Service für die Entwicklung und Bereitstellung von Java-Anwendungen.

Java-Apps erkunden
DevOps-Lösungen

Verwenden Sie DevOps-Software und -Tools, um cloudnative Anwendungen für mehrere Geräte und Umgebungen zu erstellen, bereitzustellen und zu verwalten.

DevOps-Lösungen erkunden
Services für die Entwicklung von Unternehmensanwendungen

Die Entwicklung von Cloud-Anwendungen bedeutet: einmal erstellen, schnell iterieren und überall bereitstellen.

Services für die Anwendungsentwicklung
Machen Sie den nächsten Schritt

IBM Cloud Application Development Consulting Services bieten fachkundige Beratung und innovative Lösungen zur Optimierung Ihrer Cloud-Strategie. Arbeiten Sie mit den Cloud- und Entwicklungsexperten von IBM zusammen, um Ihre Anwendungen zu modernisieren, skalieren und beschleunigen und so transformative Ergebnisse für Ihr Unternehmen zu erzielen.

Mehr zu Services zur Anwendungsentwicklung Erste kostenlose Schritte beim Erstellen auf IBM Cloud