Alibaba Cloud Community

Official Alibaba Cloud community on Qualiero, providing everything regarding the Alibaba Cloud services, best practices and expert knowledge

Open Application Model (OAM), ein offener Standard für die Entwicklung und den Betrieb von Anwendungen auf Kubernetes und anderen Plattformen

Marc-David Militz
Expert
Kubernetes hat sich zur führenden Container-Orchestrierungsumgebung entwickelt. Sein Erfolg hat das bemerkenswerte Wachstum von Kubernetes-Diensten in jeder öffentlichen Cloud vorangetrieben. Die Kernressourcen in Kubernetes wie Services und Deployments stellen jedoch unterschiedliche Teile einer Gesamtanwendung dar. Sie stellen nicht die Anwendung selbst dar. Ebenso stellen Objekte wie Helm-Diagramme eine potenziell implementierbare Anwendung dar, aber sobald sie implementiert sind, gibt es kein anwendungszentriertes Modell der ausgeführten Anwendung. Aus diesem Grund haben Alibaba Cloud und Microsoft das Open Application Model (OAM) -Projekt im Rahmen der Open Web Foundation erstellt.

OAM ist eine Spezifikation zum Beschreiben von Anwendungen, sodass die Anwendungsbeschreibung von den Details der Bereitstellung und Verwaltung der Anwendung durch die Infrastruktur getrennt ist. Diese Trennung von Bedenken ist aus mehreren Gründen hilfreich. In der realen Welt ist jeder Kubernetes-Cluster unterschiedlich, von Ingress über CNI bis hin zu Service Mesh. Durch die Trennung der Anwendungsdefinition von den betrieblichen Details des Clusters können sich Anwendungsentwickler auf die Schlüsselelemente ihrer Anwendung konzentrieren und nicht auf die betrieblichen Details des Bereitstellungsorts. Darüber hinaus können Plattformarchitekten durch die Trennung von Bedenken wiederverwendbare Komponenten entwickeln und Anwendungsentwickler können sich darauf konzentrieren, diese Komponenten in ihren Code zu integrieren, um schnell und einfach zuverlässige Anwendungen zu erstellen. Ziel des Open Application Model ist es dabei, einfache und komplexe Anwendungen übersichtlich zu gestalten.

In OAM wird eine Anwendung aus mehreren Konzepten erstellt. Das erste sind die Komponenten, aus denen eine Anwendung besteht. Diese Komponenten können Dienste wie eine MySQL-Datenbank oder ein replizierter PHP-Server mit einem entsprechenden Load Balancer sein. Entwickler können Code verfassen, den sie als Komponente verpacken, und dann Manifeste verfassen, die die Beziehungen zwischen dieser Komponente und anderen Microservices beschreiben. Mithilfe von Komponenten können Plattformarchitekten und andere wiederverwendbare Module erstellen, von denen bekannt ist, dass sie Best Practices in Bezug auf Sicherheit und skalierbare Bereitstellung enthalten. Sie ermöglichen auch die Trennung der Implementierung der Komponente von der Beschreibung, wie diese Komponenten in einer vollständigen verteilten Anwendungsarchitektur zusammenkommen.

Um diese Komponenten in eine konkrete Anwendung umzuwandeln, verwenden Anwendungsoperatoren eine Konfiguration dieser Komponenten, um eine bestimmte Instanz einer Anwendung zu bilden, die bereitgestellt werden soll. Mithilfe der Konfigurationsressource kann ein Anwendungsoperator eine echte Anwendung aus den Komponenten ausführen, die von Entwicklern und Plattformen bereitgestellt werden.

Das endgültige Konzept ist eine Sammlung von Merkmalen, die die Merkmale der Anwendungsumgebung beschreiben, einschließlich Funktionen wie automatische Skalierung und Ingress, die für den Betrieb von Anwendungen wichtig sind, aber in verschiedenen Umgebungen auf unterschiedliche Weise implementiert werden können. Ein einfaches Beispiel für solche Unterschiede könnte ein von einer Hyperscale-Cloud bereitgestellter Lastenausgleich im Vergleich zu einem lokalen Hardware-Lastenausgleich sein. Aus Sicht eines Anwendungsentwicklers sind sie völlig identisch, während sie aus Sicht des Bedieners völlig unterschiedlich sind. Merkmale ermöglichen diese Trennung von Bedenken, wodurch die Anwendung überall dort ausgeführt werden kann, wo die erforderlichen Merkmale bereitgestellt werden. Diese Merkmale können dann von Infrastrukturbetreibern so konfiguriert werden, dass sie den besonderen Betriebsanforderungen ihrer Umgebung (z. B. Compliance und Sicherheit) entsprechen.

Im Gegensatz zu einem traditionelleren PaaS-Anwendungsmodell weist OAM einige einzigartige Merkmale auf. Vor allem ist es plattformunabhängig. Während unsere erste offene Implementierung von OAM mit dem Namen Rudr auf Kubernetes basiert, ist das Open Application Model selbst nicht eng an Kubernetes gebunden. Es ist möglich, Implementierungen für zahlreiche andere Umgebungen zu entwickeln, einschließlich Formfaktoren für kleine Geräte, z. B. Edge-Bereitstellungen und andere Umgebungen, in denen Kubernetes möglicherweise nicht die richtige Wahl ist, oder Umgebungen ohne Server, in denen Benutzer die Komplexität von Kubernetes nicht möchten oder benötigen.

Ebenso wichtig ist, dass die Spezifikation durch das Design erweiterbar ist - und nicht durch den ummauerten Garten eines PaaS oder einer Anwendungsumgebung, in der die einzigartigen Merkmale des Ausführungsorts verborgen sind. Ebenso ermöglicht OAM Plattformanbietern, die einzigartigen Merkmale ihrer Plattform über das Traitsystem bereitzustellen, sodass Anwendungsentwickler plattformübergreifende Apps erstellen können, wo immer die erforderlichen Merkmale unterstützt werden. Hardwareanbieter können auf ähnliche Weise die einzigartigen Eigenschaften ihrer Hardwareplattformen anhand von Merkmalen offenlegen. Das gesamte OAM wurde entwickelt, um das Problem des kleinsten gemeinsamen Nenners zu vermeiden, das auf tragbaren Plattformen auftreten kann. Stattdessen soll OAM Portabilität ermöglichen und gleichzeitig sicherstellen, dass auf jeder Plattform die Funktionen verfügbar sind, die sie einzigartig und nützlich machen. OAM bietet Entwicklern die Freiheit, auf standardmäßige Weise ein Gleichgewicht zwischen Portabilität und Funktionalität zwischen Plattformen herzustellen.

Wir sind gespannt auf die ersten Arbeiten, die wir an der Entwicklung dieses anwendungsorientierten offenen Modells und an der Implementierung für Kubernetes durchgeführt haben. Die Spezifikation wird derzeit im Rahmen der Open Web Foundation-Vereinbarung entwickelt. Unser Ziel ist es, das Open Application Model auf eine herstellerneutrale Grundlage zu stellen, um eine offene Governance und Zusammenarbeit zu ermöglichen. Wenn Sie mehr erfahren möchten, werfen Sie einen Blick auf die OAM-Spezifikation https://github.com/oam-dev/spec/ und Rudr https://github.com/oam-dev/rudr/ - die offene Implementierung für Kubernetes - auf Github. Dies ist wirklich nur ein Anfang. Wir freuen uns auf Ihr Feedback und Ihre enge Zusammenarbeit, um Kubernetes und die Cloud mit einem einfachen, portablen und wiederverwendbaren Anwendungsmodell auszustatten.

https://www.alibabacloud.com/blog/announcing-the-open-application-model-oam-an-open-standard-for-developing-and-operating-applications-on-kubernetes-and-other-platforms_595450
https://cloudblogs.microsoft.com/opensource/2019/10/16/announcing-open-application-model/

Latest member activities

Tags

Recommend this community post