Almost all applications aren't distributed in any meaningful sense of the word.
Almost all applications aren't distributed in any meaningful sense of the word.
I don’t mean I could have decided whether to go to Azure or AWS or use Oracle instead of SQL Server or something on that level.
In fact, you can take a standard C# web api and using the AWS SDK deploy the same code either as a lambda or you can do a standard deployment to IIS or a self hosted executable with Kestral
I’m speaking in terms of .Net but the same concept applies to any language.
One project has your lambda interface with a dependency on your domain classes.
A second project has your standard controller code with a dependency on your same domain classes.
You can have yet a third project that in my case uses TopShelf - a nuget package that makes it easy to create Windows services - that also uses Kestral to self host a web service.
I can deploy the same code to either IIS, Windows as a service, a Linux VM (with Kestral without TopShelf) or lambda. The only difference is the code deployment part of my CI/CD Pipeline. I use AWS CodeBuild with a preconfigured .Net Core Linux Docker container that builds to either target and stores the artifact as a zip file to S3.
None of this onerous. I test locally on my Windows machine and just push to git everything else just works based on some yaml files.
I don't know if its there yet but at least I imagine that's something serverless technologies strive towards