Although things have come a long way in recent times, in my workplace we're still talking about DLLs, containers, configs, substitutions, pipelines - all complexities when it comes to shipping code.
We deploy many of our .NET applications like so:
- Containerise everything with Docker
- Build everything and run all tests in TeamCity
- Push everything up to AWS
The approach we take still says "we'll manage absolutely everything on our side in terms of packaging our app, how it will run, and then give the cloud platform the pieced together result to handle the actual running".
The way I see the future, why can't we simply log into AWS/Azure, write all our application code in some provided IDE (maybe also give some high level infrastructure config), and then let the Cloud Platform take care of the rest?
If they have our source code, what else do they really need? They can run our tests, package the app, and deploy it given some basic config (#instances, networking restrictions etc). Why do we need to think about anything else other than the code and set up pipelines, config replacements, container configurations etc?
Obviously Lambdas and serverless are an approach to this, but they've strangely jumped many steps which puts limitations on the structure of functions and state etc. Can we not just write code in the style of a 'normal' app (which is always running), and have everything taken care of for us in terms of deployment?
Containers for example are impressive and useful, but they further add to complexity in how our applications run. I'm a little surprised we're still having to talk about these concepts in 2018, when 10 years ago I'd have predicted the deployment process and its complications to be almost completely abstracted away from us.