I’ve worked with Docker, VM’s, various other container abstractions that attempt to minimize the physical machine configuration/setup management problem. They are all very good and provide a lot of tools to simplify the versions-perversion that occurs with complex software deployment. I know, as co-founder of InstallShield, the installation tool used by almost all software, the number of permutations to test on is uncountable, as are the steps necessary to get the software installed on machines. Don’t even mention the real problem of updating, product/module version interaction along with the inevitable need to potentially roll back pieces of the system.
Awesome introductions of Docker and friends greatly changed many of the ‘development/configuration/distribution’ problems. It’s truly a great thing. VM’s do provide a similar gross level version of management but are not really distributable easily. Docker is!
However, who even wants to manage ANYTHING??? I don’t.
Enter AWS Lambda. It’s a thing of beauty. As a computer scientist, the concept of a scalable piece of a large aggregate code base that I have almost nothing to manage is unbelievable. I so appreciate the freedom Lambda provides, allowing me to focus my efforts on the customer's problem and not “machine junk” …. even if machine junk is very virtualized these days. Further, the fact that I can, with S3 and DynamoDB etc…, save/get state and not deal with those aspects of application development is awesome as well.
The totally cool benefit to adopting Lambda is it almost FORCES you to design and develop microservice-based solutions. Which is how almost all especially new software should be architected. Easy to test/validate operating/interface/update/rollback. Easy to assign to small groups of distributed developers to be ‘owners’ of….. Just beautiful.