Slide 1

Slide 1 text

Code to Cloud with .NET Aspire David Fowler Damian Edwards

Slide 2

Slide 2 text

What is it? .NET Aspire is an opinionated stack for building resilient, observable, and configurable cloud-native applications with .NET. It includes a curated set of components enhanced for cloud- native by including service discovery, telemetry, resilience, and health checks by default. Combined with a sophisticated but simple local developer experience, .NET Aspire makes it easy to discover, acquire, and configure essential dependencies for cloud- native apps on day 1 as well as day 100, for new and existing .NET apps using .NET 8+.

Slide 3

Slide 3 text

But what is it? • .NET Aspire is a “stack” that aims to make cloud native development easier for .NET developers.

Slide 4

Slide 4 text

How we got here: Fundamentals • Microsft.AspNetCore.*, • APIs • gRPC • SignalR • Microsoft.Extensions.* • Hosting • Configuration • Dependency Injection • IHttpClientFactory • Open Telemetry support (ILogger, Activity, Meter) • Worker Services • Health Checks • YARP • Container Build • …

Slide 5

Slide 5 text

How we got here: Project Tye R e a c t i o n People loved the developer experience – orchestration, containerization, the dashboard – but saw no real value in the K8S deployment part. C u s t o m e r E x p e r i e n c e • YAML file to describe solution/topology • Developer dashboard • Run as containers or processes • Deploy directly to K8S via a temporary manifest Go a l Make building and deploying .NET cloud apps running on Kubernetes trivial.

Slide 6

Slide 6 text

How we got here: 1st Party New Libraries filling gaps or enhancing our existing libraries • Libraries like log redaction and resiliency • Many of these shipped in Microsoft.Extensions.* as part of .NET 8 Glue libraries • Customize a dependency or wrap it to meet the team’s needs • Configure or wrap Polly, or Redis connections • Integrate w/ASP.NET Core DI After evaluating large amounts of internal libraries written to help teams build services with millions of active users, we observed that these libraries fell into 2 broad categories:

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

What is missing? • How do we put it all together? • Service Discovery (talk to services using friendly names) • High Quality client libraries • Available in DI container • Configurable (via IConfiguration) • Resilient (the network is unreliable) • Observable (logs, traces, metrics, health) • Testable • Project templates that put it all together • Instructions for how to use the Lego pieces together

Slide 9

Slide 9 text

What was missing? • Running multiple services locally (aka Orchestration) • Ability to describe dependencies on local or remote services • Can’t be cloud native without support for the cloud • We needed first-class support for Kubernetes, Azure, AWS, GCP etc.

Slide 10

Slide 10 text

.NET Aspire: Principles • Build for developers • Build on our existing stack • Don’t re-invent the world. • Build new features into the right layers • We will build new capabilities, but general-purpose features will be usable outside of aspire. • The stack must work well together, but make sure they aren’t tightly coupled. • Choose how much of the stack you want to adopt • More glue less abstractions • Contribute to the community where we can

Slide 11

Slide 11 text

Putting it together

Slide 12

Slide 12 text

.NET Aspire Stack • Orchestration • Components • Service Discovery • Project Templates • Dashboard

Slide 13

Slide 13 text

.NET Aspire: Demo

Slide 14

Slide 14 text

Timeline • Preview 3 (Today) • Preview 4 • Preview 5 • … • GA (before “Summer”, not Australian Summer…)

Slide 15

Slide 15 text

Sneak peak: “PublishAs” pattern

Slide 16

Slide 16 text

Sneak peak: Parameters

Slide 17

Slide 17 text

Sneak peak: IaC integration

Slide 18

Slide 18 text

Sneak peak: AWS

Slide 19

Slide 19 text

Learn more • https://learn.microsoft.com/en-us/dotnet/aspire/ • https://github.com/dotnet/aspire