Was ist eine monolithische Anwendung?

Der erste Schritt auf dem Weg zur Umstellung monolithischer Apps auf Kubernetes

 Kris Nova
2. Februar 2018 * 4 min Lesezeit

Im Laufe meiner Karriere als Softwareentwickler habe ich gelernt, einem Kollegen eine der wertvollsten Fragen zu stellen: „Was bedeutet es für Sie, etwas zu tun?“. Es zwingt den anderen Ingenieur, die Auswirkungen der Verwendung eines bestimmten Wortes zu bewerten. Nach dem ersten Aufruf von Moving Monolithic Applications to Kubernetes wollte ich ein paar Minuten darüber sprechen, was eine monolithische Anwendung ist. Oder zumindest, was es für mich bedeutet.

Dies ist ein interessanter Raum, der etwas Aufmerksamkeit erfordert. Während der Betrieb eines zustandslosen Microservices auf Kubernetes relativ einfach ist, hat der Betrieb einer großen zustandsbehafteten Anwendung noch einen langen Weg vor sich. Zu verstehen, was eine monolithische Anwendung ist, ist der erste Schritt, um den Migrationsprozess zu vereinfachen.

Um eine monolithische Anwendung zu definieren, müssen wir zuerst die Komponenten einer Anwendung verstehen, die uns wichtig sind. Die drei Komponenten, an denen wir interessiert sind, sind die Benutzeroberfläche, die Datenzugriffsschicht und der Datenspeicher.

Die Benutzeroberfläche ist der Einstiegspunkt der Anwendung und auch der Punkt des Programms, mit dem ein Benutzer interagieren wird. Dies kann eine main () -Funktion, eine Website, ein Webdienst oder verschiedene andere Einstiegspunkte sein.

Die Datenzugriffsebene ist die Ebene des Programms, die einen Datenspeicher umschließt. In der Regel behandelt die Datenzugriffsschicht Probleme wie die Authentifizierung bei einem Datenspeicher und die Bereinigung von Daten, bevor sie im Datenspeicher gespeichert werden.

Der Datenspeicher ist der grundlegendste Teil des Systems und für die Speicherung beliebiger Informationen (Daten) und deren Abruf verantwortlich. Diese Komponente ist in der Regel nur eine Datenbank.

Diese drei Komponenten bilden einen sehr gebräuchlichen Anwendungstyp, der als zustandsbehaftete Anwendung bezeichnet wird. Das bedeutet, dass die Anwendung Daten im Laufe der Zeit speichert und manipuliert. Deshalb sagen wir, dass die Anwendung Staat hat. Noch wichtiger ist, dass sich der Status der Anwendung im Laufe der Zeit ändern kann.

Im Falle einer monolithischen Anwendung beobachten wir üblicherweise mehrere Schichten der Anwendung, die eng miteinander gekoppelt sind. Im folgenden Beispiel sehen wir, dass die Benutzeroberfläche und die Datenzugriffsschicht gruppiert sind. Dies geschieht normalerweise über ein großes Code-Repository, und beide Ebenen hängen wahrscheinlich davon ab, dass die andere vorhanden ist, um ausgeführt zu werden. Darüber hinaus werden die Benutzeroberflächen- und Datenzugriffsschichten typischerweise zur Laufzeit in demselben Prozess gebündelt. Das heißt, sie kommunizieren auf demselben System und verwenden Systemressourcen (Speicher- und Rechenzyklen), um mit anderen Teilen des Systems zu interagieren.

Im Gegenteil, eine Microservice-basierte Anwendung würde aus kleinen modularen Komponenten bestehen, die leicht ausgetauscht werden können. Dies bietet ein Konzept der Zusammensetzbarkeit für einen Bediener und ist ein Zeichen dafür, dass Sie mit Microservices anstelle einer monolithischen Anwendung arbeiten. Das folgende Beispiel zeigt eine flexible und modulare Anwendung. Beachten Sie, dass wir in diesem Modell die kleineren Komponenten unabhängig voneinander ausführen und ein Netzwerk verwenden können, um unser System miteinander zu verbinden. Dieser Ansatz ist viel skalierbarer.

Was ist eine monolithische Anwendung? Es handelt sich um eine einstufige Softwareanwendung, bei der Benutzeroberfläche und Datenzugriffscode zu einem einzigen Programm auf einer einzigen Plattform kombiniert werden. Es ist auch eine Anwendung, die mehrere Komponenten im selben Prozess auf demselben System ausführt.

In Zukunft möchten wir die Nuancen der Migration monolithischer Anwendungen auf Kubernetes verstehen und hoffen, dass dies ein wertvoller erster Schritt auf unserem Weg ist. Da der Prozess relativ undokumentiert ist, planen wir, die gewonnenen Erkenntnisse zu teilen, damit alle davon profitieren können.



+