AWS has released a “new streamlined deployment experience for .NET applications,” based on an extension to Visual Studio along with a command-line tool called AWS Deploy Tool for .NET.
These tools were previously offered in preview but are now generally available. The announcement post claims that “with sensible defaults for all deployment settings, you can now get your .NET application up and running in just one click, or with a few easy steps – without needing deep expertise in AWS.”
The issue here is that getting a project published to the AWS cloud can be intimidating both because of the complexity of configuring services and the difficulty of “rightsizing”, working out matters like how many VMs or containers to deploy and of what capacity. Developers should perhaps understand these things, and many do, but it is friction in the deployment process and there is a category of developer who is happy to code a simple business application but unsure how to deploy it.
Microsoft in particular has tools built into Visual Studio that make it easy to publish .NET applications to Azure, with options for Azure App Service, Azure Container Apps and Azure Virtual Machine, including discovering Entity Framework database dependencies and configuring a SQL Server database. Although these quick deployments may be first intended as demos, it links the application to Azure and deploying there for production becomes the path of least resistance. The presence of these hooks gives Microsoft an advantage, particularly since Visual Studio and Visual Studio Code are the two most popular IDEs. This gives competitors like AWS and Google Cloud an incentive to develop their own similar extensions.
AWS Deploy Tool for .NET includes compute recommendations, Dockerfile generation, automatic application packaging, and the ability to provision the requested AWS resources. Under the covers it uses the AWS CDK (Cloud Development Kit). It is possible to create configuration files that enable use with a continuous integration tool though a proposal to generate a build pipeline for GitHub Actions remains a feature request.
There are a few oddities concerning the recent announcement of general availability. One is that the documentation for the CLI tool is still sprinkled with TODO comments on pages like this. Another is that even with the latest release the Toolkit is more complex than Microsoft’s wizards, especially if additional services like database servers are needed. Much of the power of the AWS Visual Studio extension is in the AWS Explorer, a dashboard within Visual Studio which lists and launches AWS resources. The right-click options here are handy for things like creating database instances, but that is not the same as having a publish tool handle everything for you.
Another question is how well the right-sizing algorithms work. The tool cannot know what scale is needed but makes a judgement based on the application type, so it is more a question of sensible defaults than intelligent recommendation. Deploy to ECS (Elastic Container Service) using Fargate and the tool will create a new ECS cluster with 3 ECS tasks, and an Elastic Load Balancer, for example, though these settings can be modified. The dilemma for AWS is that providing numerous options makes the tool more useful, but also more complex, reducing its value as a quick deployment solution.