.NET-Workloads in AWS App Runner

MODUL 1

Modul 1: Container und Serverless-Computing in AWS

 LERNMODUL

Übersicht

AWS AppRunner ist ein vollständig verwalteter AWS-Compute-Service, der es Entwicklern erleichtert, schnell Webanwendungen und APIs in großem Maßstab und ohne vorherige Infrastrukturerfahrung bereitzustellen.

Lernziele

In diesem Modul werden Sie:

  • mehr über Container und Serverless erfahren.
  • die AWS-Compute-Services untersuchen, die Container und Serverless unterstützen.
  • erfahren, wie Sie feststellen können, wann AWS App Runner für Ihre Workloads geeignet ist.

Zwei beliebte Themen von heute sind Container und Serverless. Container erleichtern die Verwaltung Ihrer zugrundeliegenden Infrastruktur, unabhängig davon, ob sie lokal ist oder in der Cloud. Nahezu 80 Prozent aller Container in der Cloud nutzen aktuell AWS. Serverless verwaltet die Infrastruktur für Sie, sodass sich Ihr Team auf die Geschäftsprioritäten konzentrieren kann. AWS bietet mehrere Services für Container und Serverless-Services. Der richtige Service für Ihren Anwendungsfall kann nach Prüfung einiger wichtiger Überlegungen ermittelt werden.

 Veranschlagte Zeit

30 Minuten

Container

Wäre es nicht schön, Ihre Anwendung zusammen mit ihrer Konfiguration, Laufzeit und Abhängigkeiten in einem übersichtlichen Paket zusammenzufassen? Das sind Container: Container bieten ein gängiges Verfahren, um Code, Konfigurationen und Abhängigkeiten Ihrer Anwendung in einem einzigen Objekt zu bündeln. Sie teilen sich ein auf dem Server installiertes Betriebssystem und laufen als ressourcenisolierte Prozesse ab, so dass die Inhalte unabhängig von der Umgebung schnell, zuverlässig und einheitlich bereitstehen. 

Container vs. Virtuelle Maschinen

Um Container zu verstehen, sollten wir zunächst über virtuelle Maschinen sprechen, damit wir sie einander gegenüberstellen können. In der Zeit, als physische Server dominierten, war ein Server eine singuläre Umgebung. Er war mit einer bestimmten Menge an Arbeitsspeicher, Speicher und Netzwerkhardware ausgestattet, lief mit einem bestimmten Betriebssystem und diente einer Organisation. Dann kam die Virtualisierung, die es ermöglichte, einen Computer in Software nachzubilden. Jetzt konnte Ihr „Server“ eine virtuelle Maschine (VM) sein, die auf das Betriebssystem und die Ressourcen zugeschnitten ist, die Ihr Unternehmen und Ihre Anwendung benötigen. Eine Softwarebene, Hypervisor genannt, erstellt, betreibt und verwaltet sehr effizient virtuelle Maschinen und verknüpft sie mit physischer Hardware. Der physische Server kann mehrere VMs für mehrere Mandanten ausführen, was die Gesamtkosten der Infrastruktur senkt. Heute dominieren virtuelle Maschinen in Unternehmen und sind für Cloud-Computing von grundlegender Bedeutung.

Container bieten einige der gleichen Vorteile wie VMs, sind jedoch portabler und effizienter. Container sind eine Möglichkeit, eine App zusammen mit ihren Abhängigkeiten, Bibliotheken und Einstellungen zu verpacken. Mehrere Container teilen sich ein Host-Betriebssystem und werden als isolierte Prozesse ausgeführt. Während VMs die Hardware virtualisieren und normalerweise in Gigabyte gemessen werden, virtualisieren Container das Betriebssystem und werden normalerweise in Megabyte gemessen. Das macht sie leicht, portabel und effizient. Container eignen sich besonders gut für Microservices mit einer gemeinsamen Philosophie leichter, unabhängiger Softwarekomponenten.

Mehr noch als virtuelle Maschinen verändern Container die Arbeitsweise von Entwicklern, da sie als Einheit der Softwarebereitstellung konzipiert sind. Entwickler erstellen Container und stellen sie im Rahmen ihrer Arbeit bereit. Sie müssen sich nicht zwischen Containern und virtuellen Maschinen entscheiden. Sie können sie oft zusammen verwenden und so die Vorteile von beiden nutzen. Die vielen AWS-Services, die Container unterstützen, führen sie auf virtuellen Maschinen aus.

Container teilen sich ein auf dem Server installiertes Betriebssystem und laufen als ressourcenisolierte Prozesse ab, so dass die Inhalte unabhängig von der Umgebung schnell, zuverlässig und einheitlich bereitstehen. Unabhängig davon, ob Sie die Bereitstellung lokal auf Ihrem Laptop oder in der Produktion durchführen, bleibt die Erfahrung dieselbe, abgesehen von Secrets und Umgebungseinstellungen.

Referenz: AWS-Container

Arten von Containern

Docker-Plattform

Docker ist eine Softwareplattform, mit der Sie Anwendungen schnell erstellen, testen und bereitstellen können. Docker definiert einen Container als „einen Sandbox-Prozess auf Ihrem Computer, der von allen anderen Prozessen auf dem Host-Computer isoliert ist. Diese Isolierung nutzt Kernel-Namespaces und Kontrollgruppen – das sind Features, die es in Linux schon lange gibt. Docker hat daran gearbeitet, diese Funktionen zugänglich und benutzerfreundlich zu machen.“

Zu den Vorteilen der Verwendung von Docker gehören der schnellere Versand von Code, die Standardisierung von Anwendungsabläufen, das reibungslose Verschieben von Code und die Einsparung von Kosten durch effiziente Ressourcennutzung. Docker-Benutzer versenden Software im Durchschnitt siebenmal so häufig wie Benutzer, die Docker nicht verwenden. Sie können Ihre Abläufe für die Bereitstellung, Fehlerbehebung und das Rollback von Containern standardisieren. Der Übergang von lokalen Maschinen zur Produktion ist einfach und unkompliziert. Sie können auf jedem Server mit Containern mehr Code ausführen, wodurch Sie Geld sparen.

Moderne .NET-Anwendungen (geschrieben in .NET Core 3.1 oder .NET 5+) können in Linux ausgeführt werden und sind mit Docker-Containern kompatibel.

Zu den AWS-Services, die Docker-Container unterstützen, gehören AWS App Runner, Amazon Elastic Container Service (ECS) und Amazon Elastic Kubernetes Service (EKS), AWS Fargate in ECS oder EKS sowie AWS Lambda.

Referenz: AWS Docker

Linux-Container

Docker-Linux-Container laufen auf Linux-Hosts. Moderne .NET-Anwendungen (geschrieben in .NET Core 3.1 oder .NET 5+) können auf Linux-Containern ausgeführt werden, nicht jedoch auf veralteten .NET-Framework-Anwendungen, für die Windows erforderlich ist.

Zu den AWS-Services, die Linux-Container unterstützen, gehören AWS App Runner, Amazon Elastic Container Service (ECS), Amazon Elastic Kubernetes Service (EKS), AWS Fargate in ECS oder EKS sowie AWS Lambda.

Windows-Container

Windows-Container unterstützen Microsoft-Windows-Betriebssysteme. Windows-Container können nicht auf Linux-Container-Instances ausgeführt werden, und umgekehrt ist es ebenfalls nicht möglich.

Zu den AWS-Services, die Windows-Container unterstützen, gehören Amazon Elastic Container Service (ECS), Amazon ECS in AWS Fargate und Amazon Kubernetes Service (EKS). AWS App Runner unterstützt keine Windows-Container.

Referenz: Amazon-EC2-Windows-Container

Vorteile von Containern

Container bieten viele greifbare Vorteile:

Funktionsreduzierung

Container sind leichte Softwarepakete. Sie sind deutlich kleiner als virtuelle Maschinen, da sie kein Gastbetriebssystem-Image enthalten. Stattdessen teilen sich Container ein Betriebssystem mit ihrem Host. Aus diesem Grund lassen sich Container in der Regel schneller starten als virtuelle Maschinen.

Standardisiert und portabel

Container bieten eine einheitliche und portable Softwareumgebung. Auf diese Weise können Sie die Abläufe für Bereitstellung, Problemuntersuchung und Rollback standardisieren.

Nahtlos bewegen

Container bewegen sich nahtlos. Sie können containerisierte Anwendungen von lokalen Maschinen in Produktionsumgebungen und von lokalen Umgebungen in die Cloud verschieben. Container können die Implementierung von CI/CD-Pipelines aufgrund ihrer Konsistenz- und Versionskontrollfunktionen vereinfachen.

Schneller versenden

Der kombinierte Effekt leichter, portabler Container, die sich nahtlos bewegen lassen, sorgt für Agilität. Sie können schneller entwickeln, wenn Sie mit Containern arbeiten, da sie den Zeitaufwand für Softwareabhängigkeiten, das Einrichten von Umgebungen und die Behebung von Umgebungsunterschieden aufheben. Docker-Benutzer versenden beispielsweise im Durchschnitt siebenmal so häufig wie Benutzer, die Docker nicht verwenden.

Geld sparen

Container ermöglichen es Ihnen, mehr Code auf jeder Server-Instance auszuführen. Das verbessert die Auslastung und spart Geld.

Referenzen: AWS | Was ist Docker?, AWS | Container

Vorteile von Containern in AWS

AWS ist ein beliebtes Cloud-Ziel für Container. Nahezu 80 Prozent aller Container in der Cloud nutzen aktuell AWS. Zusätzlich zu den inhärenten Vorteilen von Containern profitieren Sie auch von diesen Vorteilen, wenn Sie Container auf AWS hosten. 

Sicher

AWS bietet über 200 Services und wichtige Features für Sicherheit, Compliance und Governance. AWS betreibt Ihre Container mit starker Sicherheitsisolierung und den neuesten Sicherheitsupdates. Sie können detaillierte Sicherheitsberechtigungen für jeden Container festlegen.

Zuverlässig

AWS bietet eine globale Infrastruktur, die 69 Availability Zones in 22 Regionen umfasst, sodass Sie Container weltweit ausführen können. Alle AWS-Containerservices haben ein Service Level Agreement (SLA).

Auswahl

AWS bietet eine breite Auswahl an Container-Services, darunter verwaltete Services und Serverless-Services. Dazu gehören Amazon Elastic Container Registry Service (ECR), Amazon Elastic Container Service (ECS), Amazon Elastic Kubernetes Service (EKS), AWS Fargate, Amazon Elastic Compute Cloud (EC2) und AWS App Runner.

AWS bietet auch das App2Container-Tool (A2C), das bei der Containerisierung und Migration vorhandener .NET- und Java-Anwendungen hilft.

AWS-Integration

Die Container-Services von AWS sind gemäß Konzeption stark in AWS integriert. Auf diese Weise können Ihre Containeranwendungen AWS-Services für automatische Skalierung, Netzwerke, Sicherheit und Überwachung nutzen. Sie erhalten die Agilität von Containern in Kombination mit der Elastizität und Sicherheit von AWS.

Referenz: Detaillierter Einblick in AWS-Container

Anwendungsfälle für Container

Hier sind einige häufige Anwendungsfälle für Container.

Microservices

Microservices sind ein Ansatz in der Softwareentwicklung, bei dem Software aus kleinen unabhängigen Services besteht, die über sorgfältig definierte APIs kommunizieren. Diese Services gehören kleinen, eigenständigen Teams. Durch Microservice-Architekturen lassen sich Anwendungen einfacher skalieren und schneller entwickeln. Dies ermöglicht Innovationen und beschleunigt die Markteinführung neuer Features. Container sind eine beliebte Strategie für Microservices. Monolith-Anwendungen können in Microservices, also unabhängige Komponenten in Containern, zerlegt werden.

Batch-Verarbeitung

Batch-Verarbeitungs- und ETL (Extract-Transform-Load)-Aufträge eignen sich gut für Container. Sie können schnell gestartet werden und nach einem Zeitplan oder als Reaktion auf Ereignisse ausgeführt werden. Sie können in Reaktion auf die Nachfrage dynamisch skalieren.

Machine Learning

Mithilfe von Containern können Sie Modelle zum Machine Learning für Training und Folgerung in kürzester Zeit skalieren und auf beliebigen Plattformen in der Nähe Ihrer Datenquellen ausführen.

Hybridanwendungen

Mit Containern können Sie die Bereitstellung von Code vereinheitlichen und so auf einfache Weise Workflows für Anwendungen erstellen, die zwischen lokalen und Cloud-Umgebungen laufen. 

Anwendungsmigration zur Cloud

Container unterstützen bei der „Lift-and-Shift“ -Migration in die Cloud. Sie können ganz einfach ganze Anwendungen in Container packen, sodass Sie sie ohne Codeänderungen in die Cloud verschieben können. Sie können die Cloud-Elastizität für die Skalierung von Containern nutzen.

Referenz: AWS | Microservices

Serverless

Serverless-Technologien ermöglichen es Ihnen, Anwendungen zu erstellen und auszuführen, ohne sich Gedanken um Server machen zu müssen. AWS bietet verwaltete Services für das Hosten von Code, die Verwaltung von Daten und die Integration von Anwendungen, für die Sie keine Serververwaltung benötigen. Sie verfügen über automatische Skalierung, integrierte Hochverfügbarkeit und ein nutzungsabhängiges Abrechnungsmodell. 

Vorteile von Serverless

Dank Serverless-Technologien können Sie sich auf Ihre Anwendung und Ihre Kunden konzentrieren, anstatt die Infrastruktur zu verwalten.

Betriebsaufwand beseitigen

Mit Serverless-Technologien müssen Sie sich nicht um Infrastrukturmanagement, Kapazitätsbereitstellung und Patching kümmern. Durch Beseitigung des Betriebsaufwands können Ihre Teams schnell freigeben, Feedback erhalten und iterieren, und so eine schnellere Markteinführung erreichen.

Im Maßstab anpassen

Serverless-Technologien können automatisch von Null auf Spitzenlasten skaliert werden. So können Sie sich zeitnah an die Kundenbedürfnisse anpassen.

Ihre Kosten senken

Serverless-Technologien können automatisch von Null auf Spitzenlasten skaliert werden. So können Sie sich schneller als je zuvor an Kundenbedürfnisse anpassen.

Bessere Anwendungen einfacher erstellen

Serverless-Technologien verfügen über integrierte Integrationen mit anderen AWS-Services. Sie können sich darauf konzentrieren, Ihre Anwendung zu erstellen, anstatt sie zu konfigurieren.

Referenz: AWS | Serverless

Anwendungsfälle für Serverless

Serverless-Technologien eignen sich gut für diese häufigen Anwendungsfälle:

Webanwendungen

Webanwendungen, einschließlich Web-APIs und Microservices, lassen sich problemlos mit Serverless-Technologien erstellen. Serverless-Computing-Services werden automatisch an Ihren Web-Datenverkehr angepasst.

Datenverarbeitung

Mit Serverless-Datentechnologien wie Amazon Simple Storage Service (S3), Amazon DynamoDB, Amazon Relational Database Service Proxy (RDS Proxy) und Amazon Aurora Serverless können Sie Daten in nahezu jedem Umfang verarbeiten.

Batch-Verarbeitung

Serverless-Technologien können Batch-Aufgaben nach einem Zeitplan oder als Reaktion auf ein Ereignis ausführen.

Ereignisaufnahme

Sie können Serverless-Funktionen ausführen, um eingehende unstrukturierte Daten zu verarbeiten, zu indexieren oder zu analysieren und Machine-Learning-Services anzuwenden.

AWS-Compute-Services für Container

Nachdem Sie sich mit Containern und Serverless vertraut gemacht haben, wollen wir uns die AWS-Compute-Services ansehen, die Container unterstützen, von denen einige auch Serverless unterstützen. Alle diese Services unterstützen Docker-Linux-Container, und einige unterstützen auch Windows-Container. Eine vollständige Liste der AWS-Services und -Tools für Container finden Sie auf der AWS-Container-Seite. Sie müssen nicht jedes Detail über diese Services wissen, aber Sie sollten verstehen, was sie voneinander unterscheidet.

Container Registry: Amazon ECR

Mit Amazon Elastic Container Registry (ECR) können Sie Container-Software öffentlich oder privat speichern, teilen und bereitstellen. In der Regel verschieben Sie Ihre Container an ECR, wo sie sich in unmittelbarer Nähe zu AWS-Container-Compute-Services wie AWS App Runner, Amazon ECS oder Amazon EKS befinden.

Container-Orchestrierung: Amazon ECS, Amazon EKS und AWS Fargate

Diese Services hosten Container und orchestrieren sie auch, was bedeutet, dass sie die Bereitstellung, Implementierung, Vernetzung, Skalierung, Verfügbarkeit und Lebenszyklusverwaltung von Containern automatisieren.

Amazon Elastic Container Service (ECS) ist ein vollständig verwalteter Service zur Container-Orchestrierung, der das Bereitstellen, Verwalten und Skalieren von containerisierten Anwendungen, einschließlich Microservices, vereinfacht. Sie können hochsichere, zuverlässige und skalierbare Container in ECS ausführen.

Amazon Elastic Kubernetes Service (Amazon EKS) ist ein verwalteter Container-Service für die Ausführung und Skalierung von Kubernetes-Anwendungen in der Cloud oder On-Premises. Kubernetes ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von Anwendungen in Containern. EKS ist der zuverlässigste Weg, Kubernetes zu starten, auszuführen und zu skalieren.

AWS Fargate ist Serverless-Computing für Container. Sowohl Amazon ECS als auch Amazon EKS sind in Serverless-Form und in einem anderen Preismodell erhältlich, wenn Sie sie mit AWS Fargate kombinieren.

Neben der Verwaltung von Containern in der Cloud können sowohl Amazon ECS als auch Amazon EKS Container-Anwendungen vor Ort über die Services Amazon ECS Anywhere oder Amazon EKS Anywhere verwalten.

Serverless-Funktionen: AWS Lambda

AWS Lambda ist ein ereignisgesteuerter Serverless-Service zur Ausführung von Funktionen. Es unterstützt Container.

Steuerung auf Serverebene: Amazon EC2 und EC2-Spot-Instances

Diese Optionen bieten die meiste Kontrolle über Infrastrukturdetails, sind aber auch die am wenigsten verwaltete Methode für das Ausführen von Containern in AWS.

Amazon Elastic Compute Cloud (Amazon EC2) ist ein Service, der sichere, skalierbare Rechenkapazitäten in der Cloud bereitstellt. Sie können Container mit Steuerung auf Serverebene in EC2 ausführen. Dazu weisen Sie EC2-Instances zu und installieren Docker auf ihnen.

Wenn Ihre Anwendungen fehlertolerant sind, können Sie sie auf Amazon-EC2-Spot-Instances ausführen, die mit einem Rabatt von bis zu 90 % erhältlich sind. Mit Spot Instances können Sie die Vorteile nicht genutzter EC2-Kapazitäten in der AWS Cloud nutzen. Um Spot Instances verwenden zu können, muss Ihre Anwendung unterbrechbar sein. Sie könnten Spot Instances für Datenanalysen, Batch-Aufträge, Hintergrundverarbeitung oder optionale Aufgaben in Betracht ziehen.

Einfache Webanwendungen: AWS Lightsail

AWS Lightsail eignet sich für einfache containerisierte Anwendungen, die Sie zu einem festen monatlichen Preis ausführen möchten. Es ist eine gute Wahl für Studenten, kleine Unternehmen und Startups, die über eine kleine Website und Datenbank verfügen und mit der Cloud starten wollen. 

Vollständig verwaltet: AWS App Runner

Endlich sind wir beim Thema dieses Kurses angekommen: AWS App Runner. App Runner ist ein vollständig verwalteter Service, der es Entwicklern erleichtert, schnell containerisierte Webanwendungen und APIs in großem Maßstab und ohne vorherige Infrastrukturerfahrung bereitzustellen. App Runner ist auch serverlos, sodass Sie die Vorteile von Containern und Serverless gleichzeitig nutzen können. App Runner kann moderne .NET-Workloads auf Linux-Containern ausführen.

Auswahl eines AWS-Compute-Services

Nachdem wir einen Rundgang durch die AWS-Compute-Services für Container gemacht haben, gehen wir nun einige wichtige Fragen durch, anhand derer Sie entscheiden können, ob AWS App Runner oder ein anderer Service für Ihre Anwendung geeignet ist. Tabelle 1 bezieht sich auf die Überlegungen zu AWS-Services.

Tabelle 1: Entscheidungstabelle für AWS-Container-Compute-Services

Sind Sie neu im Umgang mit Containern oder haben Sie Erfahrung mit Containern?

Wenn Sie ein Container-Neuling sind, sollten Sie AWS App Runner in Betracht ziehen. Dieser Service ist die beste Option und erfordert keine vorherige Erfahrung in der Infrastruktur.

Benötigen Sie Windows-Container?

Wenn Sie veraltete .NET-Framework-Anwendungen in einem Container ausführen möchten, sind Sie auf Windows-Container beschränkt. Die AWS-Services, die Windows-Container unterstützen, sind Amazon ECS, Amazon ECS mit AWS Fargate und Amazon EKS. Wenn Sie modernes .NET verwenden, können Sie Linux-Container und alle AWS-Compute-Services verwenden, die Container unterstützen.

Ist Container-Orchestrierung ein aktuelles oder zukünftiges Bedürfnis?

Es gibt einen großen Unterschied zwischen einer Einzelcontainer-Anwendung und einer Kombination von Containern, die orchestriert werden müssen. Wenn Sie eine komplexe Anordnung von Containern haben und Verwaltung für die gesamte Lebensdauer benötigen, sollten Sie Amazon ECS oder Amazon EKS in Betracht ziehen. 

Ist Serverless für Sie richtig?

Wenn Ihre Anwendung für die Serverless-Anwendungsfälle geeignet ist und Sie damit einverstanden sind, AWS die Infrastruktur und das Serverless-Zahlungsmodell verwalten zu lassen, sollten Sie diese Optionen in Betracht ziehen: AWS Lambda, AWS App Runner oder AWS Fargate.

  1. Wenn Ihre Anwendung aus ereignisgesteuerten Funktionen besteht, können Sie AWS Lambda verwenden.
  2. Wenn Sie eine Orchestrierung benötigen, sollten Sie AWS Fargate mit Amazon ECS oder mit Amazon EKS verwenden.
  3. Wenn Sie einen vollständig verwalteten Service bevorzugen, wählen Sie AWS App Runner.

Die wichtigsten Erkenntnisse

Sie sollten jetzt ein grundlegendes Verständnis von Containern und Serverless und ihren jeweiligen Vorteilen haben. Sie haben mehr über die verschiedenen AWS-Compute-Services und ihre Unterschiede erfahren.. Sie haben auch gelernt, welche Fragen Sie stellen müssen, um den richtigen AWS-Compute-Service für einen Workload zu ermitteln.

Zusammenfassung

In diesem Modul haben Sie zuerst etwas über Container gelernt: wie sie sich von virtuellen Maschinen unterscheiden, und Docker Linux-Container vs. Windows-Container. Sie sind leicht, standardisiert und portabel, lassen sich problemlos transportieren, ermöglichen eine schnellere Bereitstellung und können Geld sparen. Container in AWS sind sicher, zuverlässig, werden von einer Auswahl an Container-Services unterstützt und sind tief in AWS integriert.

Als Nächstes haben Sie sich mit Serverless-Technologien befasst, mit denen Sie Anwendungen erstellen können, ohne sich Gedanken um Server machen zu müssen. Zu den Vorteilen gehören die Beseitigung des Betriebsaufwands, die automatische Skalierung, geringere Kosten und die einfachere Erstellung von Anwendungen durch integrierte Integrationen in andere AWS-Services. Anwendungsfälle sind Webanwendungen, Datenverarbeitung, Batch-Verarbeitung und Ereigniserfassung.

Sie haben mehr über AWS-Compute-Services für Container erfahren und erfahren, wie Sie einen Compute-Service auswählen. Sie haben gelernt, dass AWS App Runner ein vollständig verwalteter Service für das Hosten von Containern ist, der serverlos ist.

War diese Seite hilfreich?