Was gilt für cloudnative Anwendungen?What about Cloud-Native applications?

Obwohl Cloud-Native-Anwendungen (cloudnativ) nicht der Hauptschwerpunkt dieses Leitfadens sind, ist es hilfreich, ein Verständnis für diesen Modernisierungsreifegrad zu besitzen und ihn von Cloud-Optimized-Anwendungen (cloudoptimiert) zu unterscheiden.Although Cloud-Native applications are not the main focus of this guide, it's helpful to have an understanding of this modernization maturity level, and to distinguish it from Cloud-Optimized applications.

In Abbildung 4–3 werden Cloud-Native-Apps in den Reifegraden für Anwendungsmodernisierung positioniert:Figure 4-3 positions Cloud-Native apps in the application modernization maturity levels:

Diagramm, das die Positionierung von Cloud-Native-Anwendungen zeigt.

Abbildung 4–3. .Figure 4-3. Positionierung von Cloud-Native-AnwendungenPositioning Cloud-Native applications

Der Modernisierungsreifegrad „Cloud-Native“ erfordert normalerweise neue Entwicklungsinvestitionen.The Cloud-Native modernization maturity level usually requires new development investments. Die Umstellung auf den Reifegrad „Cloudnative“ ist in der Regel durch geschäftliche Anforderungen motiviert, um Anwendungen so weit wie möglich zu modernisieren und so die Skalierung in großen Anwendungen drastisch zu verbessern. Dafür werden autonome Subsysteme (Microservices) erstellt, die unabhängig von anderen Bereichen der Anwendung bereitgestellt und skaliert werden können. Zugleich werden langfristig die Kosten gesenkt und die Flexibilität bei der Entwicklung der Teile dieser autonomen App erhöht, die bedeutende Wettbewerbsvorteile bringen.Moving to the Cloud-Native level typically is driven by business need to modernize applications as much as possible to drastically improve scale in large applications by creating autonomous subsystems (microservices) that can be deployed and scale independently from other areas of the application while lowering costs in the long term and increase evolution agility of those autonomous app’s parts that provide significant compete advantages.

Die Hauptpfeiler cloudnativer Anwendungen ruhen auf Ansätzen mit Microservices-Architektur, die sich mit Agilität weiterentwickeln und auf Limits skalieren lassen, die sich in einer monolithischen Architektur, die in einer lokalen oder Cloudumgebung bereitgestellt ist, schwer erzielen ließen.The main pillars of Cloud-Native applications are based on microservices architecture approaches, which can evolve with agility and scale to limits that would be difficult to achieve in a monolithic architecture, deployed to either on-premises or cloud environment.

Abbildung 4–4 zeigt die Haupteigenschaften des Cloud-Native-Modells.Figure 4-4 shows the main characteristics of the Cloud-Native model.

Diagramm, in dem die Haupteigenschaften von „Cloud-Native“ aufgeführt sind.

Abbildung 4–4.Figure 4-4. Eigenschaften von „Cloud-Native“Cloud-Native characteristics

Zusätzlich können Sie einfache moderne Web-Apps und cloudnative Apps erweitern, indem Sie weitere Dienste wie Künstliche Intelligenz (KI), Machine Learning (ML) und IoT hinzufügen.In addition, you can extend basic modern web apps and cloud-native apps by adding other services, like artificial intelligence (AI), machine learning (ML), and IoT. Sie können einen dieser Dienste verwenden, um jeden der möglichen cloudoptimierten Ansätze zu erweitern.You might use any of these services to extend any of the possible Cloud-Optimized approaches.

Der grundlegende Unterschied bei Anwendungen auf der cloudnativen Ebene liegt in der Anwendungsarchitektur.The fundamental difference in applications at the Cloud-Native level is in the application architecture. Cloudnative Anwendungen sind definitionsgemäß Apps, die auf Microservices basieren.Cloud-native applications are, by definition, apps that are based on microservices. Cloudnative Apps erfordern besondere Architekturen, Technologien und Plattformen im Vergleich zu einer monolithischen Webanwendung oder einer herkömmlichen N-schichtigen Anwendung.Cloud-native apps require special architectures, technologies, and platforms, compared to a monolithic web application or traditional N-Tier application.

Details zu Cloud-Native-AnwendungenCloud-native applications details

„Cloud-Native“ ist ein komplexerer oder ausgereifterer Zustand für große und unternehmenskritische Anwendungen.Cloud-Native is a more advanced or mature state for large and mission-critical applications. Cloudnative Anwendungen erfordern in der Regel eine Architektur und ein Design, die von Grund auf neu erstellt werden, anstatt vorhandene Anwendungen zu modernisieren.Cloud-Native applications usually require architecture and design that are created from scratch instead of by modernizing existing applications. Der Hauptunterschied zwischen einer cloudnativen Anwendung und einer einfacheren cloudoptimierten Web-App liegt in der Empfehlung, Microservice-Architekturen in einem cloudnativen Ansatz zu verwenden.The key difference between a Cloud-Native application and a simpler Cloud-Optimized web app is the recommendation to use microservices architectures in a cloud-native approach. Cloudoptimierte Apps können auch monolithische Web-Apps oder N-schichtige Apps sein.Cloud-Optimized apps can also be monolithic web apps or N-Tier apps.

Die Twelve-Factor-App (eine Sammlung von Mustern, die in enger Beziehung zu Microservice-Ansätzen stehen) wird ebenfalls als eine Voraussetzung für cloudnative Anwendungsarchitekturen angesehen.The Twelve-Factor App (a collection of patterns that are closely related to microservices approaches) is also considered a requirement for cloud-native application architectures.

Die Cloud Native Computing Foundation (CNCF) ist ein primärer Förderer der cloudnativen Prinzipien.The Cloud Native Computing Foundation (CNCF) is a primary promoter of cloud-native principles. Microsoft ist Mitglied de CNCF.Microsoft is a member of the CNCF.

Eine detaillierte Anleitung zum Entwerfen und Entwickeln cloudnativer Anwendungen finden Sie in den folgenden kostenlosen E-Books:For detailed guidance on how to design and develop cloud-native applications, read the following free e-books:

Der wichtigste Faktor, der bei der Migration einer vollständigen Anwendung zum cloudnativen Modell zu berücksichtigen ist, besteht darin, dass Sie die Architektur vollständig neu auf eine auf Microservices basierende Architektur umstellen müssen.The most important factor to consider if you migrate a full application to the cloud-native model is that you must rearchitect to a microservices-based architecture. Dies erfordert aufgrund des umfangreichen Refactoring-Prozesses natürlich erhebliche Investitionen in die Entwicklung.This clearly requires a significant investment in development because of the large refactoring process involved. Diese Option wird in der Regel für unternehmenskritische Anwendungen gewählt, die neue Skalierbarkeitsniveaus und langfristige Agilität benötigen.This option usually is chosen for mission-critical applications that need new levels of scalability and long-term agility. Sie könnten aber auch mit der Umstellung auf Cloud-Native beginnen, indem Sie Microservices nur für ein paar neue Szenarios hinzufügen und schließlich ein vollständiges Refactoring der Anwendung als Microservices durchführen.But, you could start moving toward cloud-native by adding microservices for just a few new scenarios, and eventually refactor the application fully as microservices. Dies ist ein inkrementeller Ansatz, der in einigen Szenarien die beste Option darstellt.This is an incremental approach that is the best option for some scenarios.

Und Microservices...?What about microservices?

Das Verständnis von Microservices und ihrer Funktionsweise ist wichtig, wenn Sie cloudnative Anwendungen für Ihre Organisation in Erwägung ziehen.Understanding microservices and how they work is important when you are considering cloud-native applications for your organization.

Die Microservices-Architektur ist ein komplexer Ansatz, den Sie für Anwendungen verwenden können, die von Grund auf neu erstellt werden, oder wenn Sie vorhandene Anwendungen in Richtung cloudnative Anwendungen weiterentwickeln.The microservices architecture is an advanced approach that you can use for applications that are created from scratch or when you evolve existing applications toward cloud-native applications. Sie können damit beginnen, dass Sie vorhandenen Anwendungen ein paar Microservices hinzufügen, um mehr über die neuen Paradigmen von Microservices zu erfahren.You can start by adding a few microservices to existing applications to learn about the new microservices paradigms. Natürlich müssen Sie aber auch speziell auf diesen Architekturansatz hin die Architektur entwickeln und programmieren.But clearly, you need to architect and code, especially for this type of architectural approach.

Microservices sind allerdings für keine neue oder moderne Anwendung obligatorisch.However, microservices are not mandatory for any new or modern application. Bei Microservices handelt es sich nicht um eine „Wunderwaffe“, und sie sind nicht die einzige, optimale Methode, um jede Anwendung zu erstellen.Microservices are not a "magic bullet," and they aren't the single, best way to create every application. Wie und wann Sie Microservices verwenden, hängt vom Typ der Anwendung ab, die Sie erstellen müssen.How and when you use microservices depends on the type of application that you need to build.

Die Microservices-Architektur wird zum bevorzugten Ansatz für verteilte und große oder komplexe unternehmenskritische Anwendungen, die auf mehreren unabhängigen Subsystemen in Form von autonomen Diensten basieren.The microservices architecture is becoming the preferred approach for distributed and large or complex mission-critical applications that are based on multiple, independent subsystems in the form of autonomous services. In einer auf Microservices basierenden Architektur wird eine Anwendung als Sammlung von Diensten erstellt, die unabhängig voneinander entwickelt, getestet, mit Versionsangaben versehen, bereitgestellt und skaliert werden.In a microservices-based architecture, an application is built as a collection of services that can be independently developed, tested, versioned, deployed, and scaled. Dies kann alle jegliche verwandte, autonome Datenbank pro Microservice einschließen.This can include any related, autonomous database per microservice.

Einen detaillierten Einblick in eine Microservice-Architektur, die Sie mithilfe von .NET Core implementieren können, finden Sie in dem herunterladbaren PDF-e-Book .NET-Microservices: Architektur für containerisierte .NET-Anwendungen.For a detailed look at a microservices architecture that you can implement by using .NET Core, see the downloadable PDF e-book .NET microservices: Architecture for containerized .NET applications. Das Handbuch steht auch online zur Verfügung.The guide also is available online.

Doch selbst in Szenarios, in denen Microservices viele leistungsstarke Funktionen bieten, wie unabhängige Bereitstellung, starke Subsystemgrenzen und technologische Vielfalt, bringen sie auch viele neue Herausforderungen mit sich.But even in scenarios in which microservices offer powerful capabilities-independent deployment, strong subsystem boundaries, and technology diversity-they also raise many new challenges. Die Herausforderungen stehen im Zusammenhang mit der Entwicklung von verteilten Anwendungen, z. B. fragmentierte und unabhängige Datenmodelle, dem Erzielen von robuster Kommunikation zwischen Microservices, der letztendlichen Notwendigkeit von Konsistenz sowie der operativen Komplexität.The challenges are related to distributed application development, such as fragmented and independent data models; achieving resilient communication between microservices; the need for eventual consistency; and operational complexity. Microservices führen einen höheren Komplexitätsgrad ein im Vergleich zu herkömmlichen monolithischen Anwendungen.Microservices introduce a higher level of complexity compared to traditional monolithic applications.

Aufgrund der Komplexität einer Microservices-Architektur sind nur bestimmte Szenarien und bestimmte Anwendungstypen für auf Microservices basierende Anwendungen geeignet.Because of the complexity of a microservices architecture, only specific scenarios and certain application types are suitable for microservice-based applications. Dazu gehören große und komplexe Anwendungen mit mehreren sich entwickelnden Subsystemen.These include large and complex applications that have multiple, evolving subsystems. In diesen Fällen lohnt es sich, in komplexere Softwarearchitektur zu investieren, da damit für bessere langfristige Flexibilität und eine effizientere Anwendungswartung gesorgt wird.In these cases, it's worth investing in a more complex software architecture, for increased long-term agility and more efficient application maintenance. Für weniger komplexe Szenarien kann es jedoch möglicherweise besser sein, mit einem monolithischen Anwendungsansatz Herangehensweise oder einfacheren N-schichtigen Ansätzen fortzufahren.But for less complex scenarios, it might be better to continue with a monolithic application approach or simpler N-Tier approaches.

Abschließend sei zu diesem Konzept bemerkt, auch auf die Gefahr, sich zu wiederholen, dass Sie die Verwendung von Microservices in Ihren Anwendungen nicht als „Ganz oder garn nicht“-Lösung betrachten sollten.As a final note, even at the risk of being repetitive about this concept, you shouldn't look at using microservices in your applications as "all-in or nothing at all." Sie können vorhandene monolithische Anwendungen erweitern und weiterentwickeln, indem Sie neue, kleine Szenarios hinzufügen, die auf Microservices basieren.You can extend and evolve existing monolithic applications by adding new, small scenarios based on microservices. Sie müssen nicht von Grund auf neu beginnen, um die Arbeit mit einem Microservices-Architekturansatz zu beginnen.You don't need to start from scratch to start working with a microservices architecture approach. De facto empfehlen wir, dass Sie sich von der Verwendung einer vorhandenen monolithischen oder n-schichtigen Anwendung durch Hinzufügen neuer Szenarien weiterentwickeln.In fact, we recommend that you evolve from using an existing monolithic or N-Tier application by adding new scenarios. Als letzten Schritt können Sie dann die Anwendung in autonome Komponenten und Microservices aufteilen.Eventually, you can break down the application into autonomous components or microservices. Mit der Weiterentwicklung Ihrer monolithischen Anwendungen in Richtung von Microservices können Sie schrittweise beginnen.You can start evolving your monolithic applications in a microservices direction, step by step.

Auf jeden Fall konzentriert sich der Rest der vorliegenden Anleitung vorwiegend auf „nicht auf Microservices basierende Anwendungen“, da diese Anleitung hauptsächlich auf die Modernisierung vorhandener Anwendungen abzielt, die in der Regel monolithische oder N-schichtige Architekturen aufweisen.In any case, the rest of this present guidance focuses most of all on "no microservices-based apps" because this guidance is mainly targeting the modernization of existing apps that usually have monolithic or N-Tier architectures.