Direkt zum Inhalt

Zwölf-Faktor-Unterstützung für Cloud-native Apps in Mendix

Zwölf-Faktoren-Architektur

Was ist die Zwölf-Faktoren-App-Methodik?

Obwohl es sich strenggenommen nicht um eine Reihe architektonischer Prinzipien handelt, Zwölf-Faktoren-App Die Methodik ist eine Reihe von Best Practices für Cloud-native Anwendungen.

Wie funktioniert das? Mendix Laufzeitunterstützung für Cloud-native Apps mit zwölf Faktoren?

In den folgenden Abschnitten wird beschrieben, wie Mendix entspricht den methodischen Anforderungen der Zwölf-Faktoren-App.

  • Codebasis

    Standardmäßig wird der Quellcode für jede Anwendung, die Sie mit Mendix ist im gespeichert Mendix Code-Repository des Team Servers. Wenn Sie eine App bereitstellen, wird basierend auf Ihrem im Team Server gespeicherten Modell ein Paket erstellt. Dieses Paket wird dann in Ihren verschiedenen Umgebungen bereitgestellt, z. B. Abnahme- oder Produktionsumgebung.

  • Abhängigkeiten

    Alle von den Modulen Ihrer App verwendeten Abhängigkeiten (wie Module und Bibliotheken) sind Teil des App-Modells. Dies bedeutet, dass in Ihrer Umgebung keine impliziten Abhängigkeiten zu Tools bestehen. Dies gewährleistet zuverlässige Bereitstellungen.

  • Konfiguration

    Konfigurationsanforderungen werden in Ihrem Anwendungsmodell durch Konstanten definiert. Diese Werte können zum Bereitstellungszeitpunkt in Ihrer Umgebung oder durch APIs angegeben werden, die in Ihrer CI/CD-Pipeline aufgerufen werden. Die tatsächlichen Konfigurationseinstellungen sind nie Teil Ihres Modells. Dies bedeutet, dass dasselbe Bereitstellungspaket in jeder Umgebung bereitgestellt werden kann, ohne das App-Modell zu ändern.

  • Unterstützende Dienste

    Alle externen Anforderungen (wie die Datenbank zum Speichern Ihrer Anwendungsdaten) und Dienste, die von Ihrer Anwendung aufgerufen werden sollen, können zum Zeitpunkt der Bereitstellung konfiguriert werden. Wie bei den vorherigen Anforderungen wird dadurch sichergestellt, dass dasselbe getestete Bereitstellungspaket in jeder Situation mit jedem zugrunde liegenden Dienst ohne Modelländerungen verwendet werden kann.

  • Erstellen, freigeben, ausführen

    Wenn es möglich wäre, Code in einer Produktionsumgebung zu ändern, würde die Skalierung Ihrer Anwendung unvorhersehbar und unzuverlässig werden. Dies würde auch das Debuggen und die Problemlösung erschweren. Um dieses Problem zu vermeiden, Mendix Die Plattform trennt die Build- und Run-Phasen klar.

    Im Mendix Portal, Sie müssen zuerst ein Paket aus Ihrem Modell erstellen, das dann in Ihren Umgebungen bereitgestellt werden kann. Wenn Sie in der Produktion eine Codeänderung vornehmen möchten, müssen Sie Ihr Modell ändern und dann ein neues Paket erstellen. Mendix bietet auch APIs zum Erstellen und Bereitstellen Ihrer Anwendungen, sodass Sie diesen Ansatz in Ihre benutzerdefinierte CI/CD-Pipeline integrieren können.

  • Prozesse

    Der Mendix Die Runtime ist so konzipiert, dass sie völlig zustandslos ist. Sie teilt Daten über eine Datenbank und gewährleistet so einfache Skalierbarkeit und Ausfallsicherheit.

  • Port-Bindung

    Um die Skalierung und Ausführung derselben App in unterschiedlichen Umgebungen zu erleichtern, sollte die App in sich geschlossen sein (d. h., es sollte konfigurierbar sein, wo sie auf Clientanforderungen lauscht). Mendix Apps können auf diese Weise konfiguriert werden, sodass die zugrunde liegende Platform-as-a-Service (PaaS) – zum Beispiel Cloud Foundry – die Anzahl der Container, die Ihre App hosten, problemlos skalieren kann.

  • Nebenläufigkeit

    Mendix verwendet eine Kombination aus Java-Threads und -Prozessen, um die Skalierung an die Anforderungen Ihrer Endbenutzer anzupassen. Die Twelve-Factor-App-Methodik betont die Notwendigkeit der Skalierung über Prozesse. Andernfalls sind Ihre Skalierungsanforderungen auf das Maximum beschränkt, das eine Java Virtual Machine (JVM) unterstützen kann (vertikale Skalierung). Durch die Unterstützung der Prozessskalierung können jederzeit problemlos zusätzliche Ressourcen hinzugefügt werden (horizontale Skalierung).

  • Verfügbarkeit

    Mendix Laufzeitinstanzen können nach Bedarf angehalten und gestartet werden. In einer Umgebung mit mehreren Instanzen bemerken Benutzer normalerweise nicht, wenn eine Laufzeitinstanz neu gestartet wird. Der Vorteil besteht darin, dass die horizontale Skalierbarkeit einfacher und schneller ist und die Bereitstellung neuer Versionen oder neuer Konfigurationen schneller erfolgt.

  • Entwicklung/Produktionsparität

    Um Qualität zu gewährleisten, sollten sich Apps, die in Testumgebungen eingesetzt werden, in Produktionsumgebungen ähnlich verhalten. Mendix Cloud, alle Umgebungen werden auf die gleiche Weise bereitgestellt. Die einzigen Unterschiede sind Konfiguration, Daten und Ihre Anwendung. Daten können durch Sichern und Wiederherstellen zwischen Umgebungen verschoben werden, um Tests mit repräsentativen Daten sicherzustellen.

  • Logs

    Mendix Cloud verwendet den Cloud Foundry Firehose, um alle Protokollereignisse aller Ihrer Anwendungen zu sammeln. Diese können im Mendix Portal.

  • Admin-Prozesse

    Um Synchronisierungsprobleme zu vermeiden, empfiehlt die Twelve-Factor App-Methode, Verwaltungscode zusammen mit Anwendungscode zu versenden. Mendix erzwingt diese Vorgehensweise, sodass in Ihrer App-Umgebung nur Code ausgeführt wird, der Teil Ihrer App ist. Dies bedeutet, dass Sie Administratorcode in das Modell integrieren müssen. Benutzer implementieren dies häufig mit Administratorlogik auf einer Administratorseite, indem sie entweder einen Mikroflow implementieren, der nach dem Start der App ausgeführt wird, oder APIs erstellen, um Administratoraktionen auszulösen.

Wählen Sie Ihre Sprache