Replies: 1 comment 5 replies
-
Docker compose is excellent but is unproductive when all you want to do is run several projects or executables. Docker compose requires developers to build container images, and run inside of containers. That's a barrier when I just want to run my front end, backend, workers and a database. You don't need to learn anything else beyond what you already know. Just imagine trying to call your back-end API from your front-end API (using a simple http://backend url) and having to under docker compose in order to enable that? It's too much. Also code >> yaml. Docker compose gets complex once you attempt to do any form of abstraction or composition (see the old eshopOnContainers base directory https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/src). Environment variable replacements (and includes), no types or IntelliSense, hard to reason about what exactly is running (and good luck debugging!). We think we can produce a better experience that's easy to get started and scales up to something like compose using a real programming language (very pulumi like but for the developer experience!)
The service discovery APIs are an abstraction that works with various providers (like Kubernetes and consul). One of the big advantages is that it works locally, and is backed by .NET's IConfiguration abstraction. This means you can implement service discovery across your compute fabric in a way that doesn't result in code changes. What happens to your application code if you have multiple kube clusters or services on app services, azure functions, ECS etc? Do I have to fundamentally change it to make it work locally, in a single cluster or across multiple? Well, no you don't. That's the benefit of the abstraction.
We didn't invent, this, aspire takes a big bet on .NET's integration with OpenTelemetry. Have you watched the videos? Our dashboard is a standard OTLP server that visualizes various telemetry data. Leaning on these open standards makes it very easy to build these things without breaking compatibility with the broader ecosystem.
Sure. We have a great sample showing how you can use them together! https://github.com/dotnet/aspire-samples/tree/main/samples/Metrics (well this is grafana and prometheus).
Because we can build a better developer experience. While everything is possible today, it's not easy. The entire cloud native ecosystem is built around tying various lego pieces of CNCF software together to build a stack (unix philosophy). You can think of aspire as trying to do the same thing, using what we've come to understand about the cloud native space and picking some opinions (in ways that use the same building blocks). I think one novel thing about how we're building various pieces of the stack is that we're really not making it a "walled garden". As people play with it more, they'll realize how composable and extensible it is (in fact I'm counting on it!).
Aspire isn't a framework. Perhaps the most controversial part of it is the DistributedApplication APIs that are a way to build up the orchestration model in any .NET based language. The rest of it is already what you're describing. I look forward to more feedback! |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Can someone please explain Aspire's purpose to me and what problem it is aimed at solving?
The reason I'm asking is because there are already industry standard tools available for pretty much everything that Aspire's documentation promises. i.e.:
All of the above runs in docker compose on any machine that can run docker, uses easy to understand syntax for configuration files, works with visual studio, supports debugging and can be deployed to most if not all platforms. Not only that, these tools are universal and are not tied to .NET and can be used with any modern language/framework out there.
Why is there a need for a yet another framework to do what's already being done very well by everyone else? Perhaps we could be better off with an opinionated project template that has all of the above preconfigured and a bunch of supporting dlls providing the missing abstractions?
Beta Was this translation helpful? Give feedback.
All reactions