top | item 40431404

(no title)

okhudeira | 1 year ago

I’m always weary of using abstractions like this. I understand the desire to simplify the process of creating new apps, but tools like this take an opinionated stance on how to couple and interact with all of these dependencies like Npgsql, meaning you might end up stuck with an older version of Npgsql until your Aspire package catches up.

Developers are also abstracted one more layer from their dependencies which isn’t always a good thing when debugging or for understanding how the dependencies work.

The manifest file seems like a step in the wrong direction. I see no reason to learn this .NET specific thing when I can learn to use docker-compose or the like.

The otel dashboard is nice but there are alternatives.

discuss

order

yodon|1 year ago

Having used Aspire during pre-release, it's so nice as a developer to be able to work on deployments in a real programming language where I can set breakpoints and right-click down into the code to see what's going on.

I'm definitely never going back to working in opaque yaml-variants that can't make up their mind about whether they want to be a programming language or not.

dustedcodes|1 year ago

People were already doing that with PowerShell and as you'd expect, from a very complicated language which lets you do many things in very complicated ways, absolutely nothing good came out of it.

Then people started to migrate to YAML, because although it's tedious, it's actually very dumb and the declarative nature of it keeps things very very simple. Sure the domain it is applied to is complex but infra will always be complex.

It looks like we are just going in circles. Now people think that using a complex language to build complex infrastructures is a good thing again, until they use it in anger then get burnt and then they will arrive at the next YAML variant in 10 years.

noop_joe|1 year ago

If I understand correctly, the benefit of using this over something like Compose is the parity with production.

In my experience Compose is great for local development, but doesn't hold up well for complex architectures in production.

I work for a company [0] building something similar, but mostly agnostic to programming language. One thing I particularly like about the approach is the reduction of time debugging pipeline issues. I find increasingly that that is where my time goes -- most unfortunate.

0. https://noop.dev

davidfowl|1 year ago

This is great!

Aspire has a code-based application model that is used to represent your application (or a subset of your application) and its dependencies. This can be made up of containers, executables, cloud resources and you can even build your own custom resources.

During local development, we submit this object model to the local orchestrator and launch the dashboard. This orchestrator is optimized for development scenarios and integrates with debuggers from various IDEs (e.g. VS, VS code, Rider etc, it's an open protocol).

For deployment, we can take this application model to produce a manifest that (which is basically is a serialized version of the app model with references). Other tools can use this manifest to translate these aspire native assets into deployment environment specific assets. See https://learn.microsoft.com/en-us/dotnet/aspire/deployment/m...

This is how we support Kubernetes, azure, eventually AWS etc. Tools translate this model to their native lingua franca.

Longer term, we will also expose an in-process model for transforming and emitting whatever manifest format you like.

liammclennan|1 year ago

Aspire doesn't provide parity with production. Locally it has its own container host and production deployment is outside of Aspire. Aspire has a bit more flexibility to run things that are not containers.

dragonwriter|1 year ago

> I’m always weary of using abstractions like

weary = tired/fatigued

wary = not trusting, on guard against danger

Contextually, it looks like you probably mean the latter.

okhudeira|1 year ago

Thanks. I did mean the latter or maybe the wariness has turned into weariness!

davidfowl|1 year ago

You can update dependencies on your own. The model is quite extensible and nuget is great. You can override container image tags, or any settings we default to. That's the great part about using code!