Serverlose Apps: Architektur, Muster und Azure-ImplementierungServerless apps: Architecture, patterns, and Azure implementation

Screenshot: Covers des E-Books „Serverless Apps“ (Serverlose Apps)

DOWNLOAD verfügbar unter: https://aka.ms/serverless-ebookDOWNLOAD available at: https://aka.ms/serverless-ebook

VERÖFFENTLICHT VONPUBLISHED BY

Microsoft Developer Division, .NET- und Visual Studio-ProduktteamsMicrosoft Developer Division, .NET, and Visual Studio product teams

Eine Abteilung der Microsoft CorporationA division of Microsoft Corporation

One Microsoft WayOne Microsoft Way

Redmond, Washington 98052-6399Redmond, Washington 98052-6399

Copyright © 2018 by Microsoft CorporationCopyright © 2018 by Microsoft Corporation

Alle Rechte vorbehalten.All rights reserved. Die Inhalte dieses Buchs dürfen in keiner Form und für keinen Zweck ohne die schriftliche Genehmigung des Herausgebers reproduziert oder übertragen werden.No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the publisher.

Dieses Buch wird unverändert bereitgestellt und drückt die Ansichten und Meinungen des Autors aus.This book is provided "as-is" and expresses the author's views and opinions. Die Ansichten, Meinungen und Informationen, die in diesem Buch zum Ausdruck gebracht werden, einschließlich URLs und anderer Verweise auf Internetwebsites, können ohne vorherige Ankündigung geändert werden.The views, opinions and information expressed in this book, including URL and other Internet website references, may change without notice.

Einige der hier dargestellten Beispiele dienen nur zu Illustrationszwecken und sind fiktiv.Some examples depicted herein are provided for illustration only and are fictitious. Keinerlei Zuordnung oder Verbindung zu realen Gegebenheiten ist beabsichtigt oder sollte gefolgert werden.No real association or connection is intended or should be inferred.

Microsoft und die auf der Webseite „Marken“ unter https://www.microsoft.com aufgelisteten Marken sind Marken der Microsoft-Unternehmensgruppe.Microsoft and the trademarks listed at https://www.microsoft.com on the "Trademarks" webpage are trademarks of the Microsoft group of companies.

Mac und macOS sind Marken von Apple Inc.Mac and macOS are trademarks of Apple Inc.

Alle anderen Marken und Logos sind Eigentum der jeweiligen Besitzer.All other marks and logos are property of their respective owners.

Autor:Author:

Jeremy Likness , Senior Cloud Advocate, Microsoft Corp.Jeremy Likness, Senior Cloud Advocate, Microsoft Corp.

Mitwirkender:Contributor:

Cecil Phillip , Senior Cloud Advocate, Microsoft Corp.Cecil Phillip, Senior Cloud Advocate, Microsoft Corp.

Editoren:Editors:

Bill Wagner , Senior Content Developer, Microsoft Corp.Bill Wagner, Senior Content Developer, Microsoft Corp.

Maira Wenzel , Senior Content Developer, Microsoft Corp.Maira Wenzel, Senior Content Developer, Microsoft Corp.

Teilnehmer und Prüfer:Participants and reviewers:

Steve Smith , Owner, Ardalis Services.Steve Smith, Owner, Ardalis Services.

EinführungIntroduction

Durch die serverlose Architektur entwickeln sich Cloudplattformen in Richtung von cloudnativem Code weiter.Serverless is the evolution of cloud platforms in the direction of pure cloud native code. Dadurch kommen Entwickler der Geschäftslogik näher, während sie diese von Infrastrukturproblemen isolieren.Serverless brings developers closer to business logic while insulating them from infrastructure concerns. Dieses Muster impliziert nicht, dass kein Server mehr vorhanden ist, sondern dass weniger Server vorhanden sind.It's a pattern that doesn't imply "no server" but rather, "less server." Serverloser Code ist ereignisgesteuert.Serverless code is event-driven. Code kann beispielsweise von einer HTTP-Webanforderung für einen Timer oder vom Ergebnis eines Dateiuploads ausgelöst werden.Code may be triggered by anything from a traditional HTTP web request to a timer or the result of uploading a file. Mithilfe der serverlosen Architektur kann eine sofortige Skalierung durchgeführt werden, um elastischen Anforderungen nachzukommen. Außerdem bietet sie Microbilling, sodass Sie nur das bezahlen, was Sie auch nutzen.The infrastructure behind serverless allows for instant scale to meet elastic demands and offers micro-billing to truly "pay for what you use." Die serverlose Architektur erfordert eine neue Denkweise und Herangehensweise bei der Anwendungserstellung. Sie ist aber keineswegs die Universallösung für jedes Problem.Serverless requires a new way of thinking and approach to building applications and isn't the right solution for every problem. Als Entwickler müssen Sie Folgendes entscheiden:As a developer, you must decide:

  • Was sind die Vor- und Nachteile der serverlosen Architektur?What are the pros and cons of serverless?
  • Warum sollten Sie die serverlose Architektur für Ihre eigenen Anwendungen in Betracht ziehen?Why should you consider serverless for your own applications?
  • Wie können Sie Ihren serverlosen Code erstellen, testen, bereitstellen und verwalten?How can you build, test, deploy, and maintain your serverless code?
  • Wo ergibt es Sinn, Code in vorhandenen Anwendungen zu einer serverlosen Architektur zu migrieren, und wie können Sie diesen Umstieg am besten durchführen?Where does it make sense to migrate code to serverless in existing applications, and what is the best way to accomplish this transformation?

Über diesen LeitfadenAbout this guide

Dieser Leitfaden konzentriert sich auf die cloudnative Entwicklung von Anwendungen mit serverloser Architektur.This guide focuses on cloud native development of applications that use serverless. In diesem E-Book wird besonders auf die Vorteile der serverlosen Architektur eingegangen. Gleichzeitig werden aber auch potentielle Nachteile bei der Entwicklung serverloser Apps aufgezeigt und ein Überblick über die serverlose Architektur gegeben.The book highlights the benefits and exposes the potential drawbacks of developing serverless apps and provides a survey of serverless architectures. Sie erhalten einen Einblick in Beispiele für die Verwendung der serverlosen Architektur sowie in Entwurfsmuster serverloser Architekturen.Many examples of how serverless can be used are illustrated along with various serverless design patterns.

In diesem Leitfaden werden die Komponenten der serverlosen Azure-Plattform erläutert. Dabei liegt der Fokus besonders auf der Implementierung der serverlosen Architektur mithilfe von Azure Functions.This guide explains the components of the Azure serverless platform and focuses specifically on implementation of serverless using Azure Functions. Sie lernen alles zu Triggern und Bindungen und wie serverlose zustandsbehaftete Apps implementiert werden.You'll learn about triggers and bindings as well as how to implement serverless apps that rely on state using durable functions. Zuletzt erhalten Sie durch Beispiele aus dem Geschäftsbereich und durch Fallstudien Bezugspunkte und Kontext, damit Sie bestimmen können, ob die serverlose Architektur der richtige Ansatz für Ihre Projekte ist.Finally, business examples and case studies will help provide context and a frame of reference to determine whether serverless is the right approach for your projects.

Entwicklung der CloudplattformenEvolution of cloud platforms

Die serverlose Architektur ist der krönende Abschluss der Iterationen von Cloudplattformen.Serverless is the culmination of several iterations of cloud platforms. Die Entwicklung begann mit physischen Serverschränken in Rechenzentren und führte dann über IaaS und PaaS hin zur serverlosen Architektur.The evolution began with physical metal in the data center and progressed through Infrastructure as a Service (IaaS) and Platform as a Service (PaaS).

Entwicklung von lokal zu serverlos

Vor der Cloud gab es eine deutliche Grenze zwischen der Entwicklung und dem Betrieb.Before the cloud, a discernible boundary existed between development and operations. Die Bereitstellung und Anwendungen erforderten die Beantwortung unzähliger Fragen, wie z.B.:Deploying an application meant answering myriad questions like:

  • Welche Hardware soll installiert werden?What hardware should be installed?
  • Wie wird der physische Zugriff auf den Computer geschützt?How is physical access to the machine secured?
  • Erfordert das Rechenzentrum eine unterbrechungsfreie Stromversorgung?Does the data center require an Uninterruptible Power Supply (UPS)?
  • Wohin werden Sicherungskopien des Arbeitsspeichers gesendet?Where are storage backups sent?
  • Sollte redundante Stromversorgung vorhanden sein?Should there be redundant power?

Das ist nur eine Auswahl der Fragen, die im Vorhinein geklärt werden mussten. Der Aufwand war einfach enorm.The list goes on and the overhead was enormous. IT-Abteilungen mussten oft sehr viel Verschwendung in Kauf nehmen.In many situations, IT departments were forced to deal with incredible waste. Diese entstand z.B. durch die Zuweisung von unverhältnismäßig vielen Servern als Sicherungsserver für die Notfallwiederherstellung und als Standbyserver, um die horizontale Skalierung zu ermöglichen. Die Einführung der Virtualisierungstechnologie (z.B. Hyper-V) mit virtuellen Computern (VMs) hat dann jedoch den Weg für Infrastructure-as-a-Service (IaaS) geebnet.The waste was due to over-allocation of servers as backup machines for disaster recovery and standby servers to enable scale-out. Fortunately, the introduction of virtualization technology (like Hyper-V) with Virtual Machines (VMs) gave rise to Infrastructure as a Service (IaaS). Durch die virtuelle Infrastruktur konnte die Betriebsabteilung Standardserver als Backbone einrichten, wodurch eine flexible Umgebung ermöglicht wurde, die „bedarfsgesteuert“ eindeutige Server bereitstellen konnte.Virtualized infrastructure allowed operations to set up a standard set of servers as the backbone, leading to a flexible environment capable of provisioning unique servers "on demand." Darüber hinaus war die Virtualisierung die Grundlage für die Verwendung der Cloud und ermöglichte so die Bereitstellung virtueller Computer „as-a-Service“.More important, virtualization set the stage for using the cloud to provide virtual machines "as a service." Unternehmen mussten sich von da an keine Sorgen mehr um die redundante Stromversorgung oder um physische Computer machen.Companies could easily get out of the business of worrying about redundant power or physical machines. Stattdessen konnten sie sich auf die virtuelle Umgebung konzentrieren.Instead, they focused on the virtual environment.

Für IaaS ist noch immer ein hoher Aufwand erforderlich, da der Betrieb noch immer für unterschiedliche Aufgaben verantwortlich ist.IaaS still requires heavy overhead because operations is still responsible for various tasks. Diese Aufgaben sind:These tasks include:

  • Das Patchen und die Sicherungen von ServernPatching and backing up servers.
  • Das Installieren von PaketenInstalling packages.
  • Das Betriebssystem auf dem neuesten Stand haltenKeeping the operating system up-to-date.
  • Die Überwachung der AnwendungMonitoring the application.

Im nächsten Schritt wurde der Aufwand durch Bereitstellung von Platform-as-a-Service (PaaS) reduziert.The next evolution reduced the overhead by providing Platform as a Service (PaaS). Mit PaaS kann der Cloudanbieter Betriebssysteme, Sicherheitspatches und sogar die erforderlichen Pakete bereistellen, um eine bestimmte Plattform zu unterstützen.With PaaS, the cloud provider handles operating systems, security patches, and even the required packages to support a specific platform. Statt der Erstellung einer VM und dem anschließenden Konfigurieren von .NET Framework und der Verwendung der Internetinformationsdienste (IIS) wählen Entwickler ganz einfach ein „Plattformziel“ aus, z.B. „Webanwendung“ oder „API-Endpunkt“, und stellen den Code direkt bereit.Instead of building a VM then configuring the .NET Framework and standing up Internet Information Services (IIS) servers, developers simply choose a "platform target" such as "web application" or "API endpoint" and deploy code directly. Die Fragen zur Infrastruktur sind nun weniger geworden:The infrastructure questions are reduced to:

  • Wie groß müssen die Dienste sein?What size services are needed?
  • Wie können die Dienste horizontal hochskaliert werden (bzw. wie können mehr Server oder Knoten hinzugefügt werden)?How do the services scale out (add more servers or nodes)?
  • Wie werden die Dienste zentral hochskaliert (wie kann die Kapazität von Hostingservern oder -knoten erhöht werden)?How do the services scale up (increase the capacity of hosting servers or nodes)?

Der serverlose Code abstrahiert die Server weiter durch Konzentration auf den ereignisgesteuerten Code.Serverless further abstracts servers by focusing on event-driven code. Statt auf Plattformen können sich Entwickler nun auf einen Microservice konzentrieren, der nur einen Vorgang ausführt.Instead of a platform, developers can focus on a microservice that does one thing. Die beiden wichtigsten Fragen zum Erstellen des serverlosen Codes sind:The two key questions for building the serverless code are:

  • Was löst den Code aus?What triggers the code?
  • Was macht dieser Code?What does the code do?

Mit serverlosem Code wird die Infrastruktur abstrahiert.With serverless, infrastructure is abstracted. In einigen Fällen muss sich der Entwickler überhaupt keine Sorgen mehr über den Host machen.In some cases, the developer no longer worries about the host at all. Der Entwickler konzentriert sich auf einen HTTP-Trigger, egal ob für die Verwaltung einer Webanforderungen eine IIS-, Kestrel- oder Apache-Instanz oder ein ganz anderer Webserver ausgeführt wird.Whether or not an instance of IIS, Kestrel, Apache, or some other web server is running to manage web requests, the developer focuses on an HTTP trigger. Der Trigger stellt die standardmäßige plattformübergreifende Nutzlast für die Anforderung bereit.The trigger provides the standard, cross-platform payload for the request. Die Nutzlast vereinfacht nicht nur den Bereitstellungsvorgang, sondern vereinfacht auch in einigen Fällen das Testen, wodurch Code einfach plattformübergreifend portierbar ist.The payload not only simplifies the development process, but facilitates testing and in some cases, makes the code easily portable across platforms.

Microbilling ist ein weiteres Feature der serverlosen Architektur.Another feature of serverless is micro-billing. Es ist üblich, das Webanwendungen Web-API-Endpunkte hosten.It's common for web applications to host Web API endpoints. In traditionellen Bare-Metal-, IaaS- und sogar PaaS-Implementierungen werden Ressourcen für das Hosten der API ununterbrochen gezahlt.In traditional bare metal, IaaS and even PaaS implementations, the resources to host the APIs are paid for continuously. Das heißt, dass Sie dafür zahlen, die Endpunkte zu hosten, auch wenn gar nicht auf diese zugegriffen wird.That means you pay to host the endpoints even when they aren't being accessed. Oft wird eine API öfter als andere aufgerufen. Also wird das gesamte System so skaliert, dass es die beliebten Endpunkte unterstützen kann.Often you'll find one API is called more than others, so the entire system is scaled based on supporting the popular endpoints. Durch die serverlose Architektur können Sie jeden Endpunkt unabhängig skalieren, und Sie zahlen nur für das, was Sie benutzen. Es entstehen also keine Kosten, wenn die APIs nicht aufgerufen werden.Serverless enables you to scale each endpoint independently and pay for usage, so no costs are incurred when the APIs aren't being called. Eine Migration kann in vielen Situationen die laufenden Kosten für die Endpunktunterstützung erheblich verringern.Migration may in many circumstances dramatically reduce the ongoing cost to support the endpoints.

Was in diesem Leitfaden nicht behandelt wirdWhat this guide doesn't cover

In diesem Leitfaden wird auf die Architekturansätze und Entwurfsmuster eingegangen. Er bietet keinen tiefgehenden Einblick in die Implementierungsdetails von Azure Functions, Logic Apps oder von anderen serverlosen Plattformen.This guide specifically emphasizes architecture approaches and design patterns and isn't a deep dive into the implementation details of Azure Functions, Logic Apps, or other serverless platforms. Es werden beispielsweise keine erweiterten Workflows mit Logic Apps oder Features von Azure Functions behandelt, wie etwa die Konfiguration von Cross-Origin Resource Sharing (CORS), die Anwendung benutzerdefinierter Domänen oder das Hochladen von SSL-Zertifikaten.This guide doesn't cover, for example, advanced workflows with Logic Apps or features of Azure Functions such as configuring Cross-Origin Resource Sharing (CORS), applying custom domains, or uploading SSL certificates. Informationen dazu sind online in der Dokumentation zu Azure Functions verfügbar.These details are available through the online Azure Functions documentation.

Zusätzliche RessourcenAdditional resources

Zielgruppe dieses LeitfadensWho should use the guide

Dieser Leitfaden wurde für Entwickler und Lösungsarchitekten verfasst, die Unternehmensanwendungen mit .NET erstellen möchten, welche serverlose Komponentenlokal oder in der Cloud verwenden können.This guide was written for developers and solution architects who want to build enterprise applications with .NET that may use serverless components either on premises or in the cloud. Er ist hilfreich für Entwickler, Architekten und technische Entscheidungsträger, die an Folgendem interessiert sind:It's useful to developers, architects, and technical decision makers interested in:

  • Vor- und Nachteile der serverlosen EntwicklungUnderstanding the pros and cons of serverless development
  • Entwerfen einer serverlosen ArchitekturLearning how to approach serverless architecture
  • Beispielimplementierungen von serverlosen AppsExample implementations of serverless apps

So verwenden Sie diesen LeitfadenHow to use the guide

Der erste Teil dieses Leitfadens befasst sich damit, warum die serverlose Architektur eine sinnvolle Option für Sie darstellen kann, indem mehrere unterschiedliche Architekturansätze miteinander verglichen werden.The first part of this guide examines why serverless is a viable option by comparing several different architecture approaches. Es werden jeweils der Technologie- und der Entwicklungslebenszyklus verglichen, da alle Aspekte der Softwareentwicklung von Architekturentscheidungen betroffen sind.It examines both the technology and development lifecycle, because all aspects of software development are impacted by architecture decisions. Im Leitfaden werden anschließend die Anwendungsfälle und Entwurfsmuster untersucht. Außerdem werden Referenzimplementierungen mit Azure Functions vorgestellt.The guide then examines use cases and design patterns and includes reference implementations using Azure Functions. Jeder Abschnitt enthält zusätzliche Ressourcen, damit Sie mehr zu einem bestimmten Bereich erfahren können.Each section contains additional resources to learn more about a particular area. Der Leitfaden endet mit exemplarischen Vorgehensweisen und praktischen Übungen zur serverlosen Implementierung.The guide concludes with resources for walkthroughs and hands-on exploration of serverless implementation.

Senden Sie uns Ihr FeedbackSend your feedback

Dieser Leitfaden und die dazugehörigen Beispiele werden ständig weiterentwickelt, deshalb freuen wir uns über Ihr Feedback.The guide and related samples are constantly evolving, so your feedback is welcomed! Wenn Sie Anmerkungen zur Verbesserung dieses Leitfadens haben, nutzen Sie den Feedbackabschnitt, der unten auf jeder Seite zu finden ist und über den GitHub-Issues erstellt werden.If you have comments about how this guide can be improved, use the feedback section at the bottom of any page built on GitHub issues.