Docker & AWS Container (ECS) services type solutions are awesome. They really are! They are very useful mechanisms for the development, setup, and configuration problems that plague us today, especially with existing legacy code/software or legacy architecture. They’ve essentially replaced the full VM’s and other configuration management solutions. Those traditional VM’s really are heavyweight band-aids used to keep our head above water with complex and old software packages and still, in some ways, married to the physical machines world.
Docker, AWS ECS, and friends are a light beautiful modular way to easily develop and package for distribution software components from an older era. They extend the Linux containers directly and add a very nice set of tools on top to make dev-ops easy and successful.
However, I believe they are already outdated. The new microservice sized functions new backends are/will be better suited for highly attractive AWS Lambda service. AWS Lambda allows for “big-enough” functions without the Docker/Container management nightmare. Lambda provides a complete microservice ability with effectively ZERO management issues. You need only use its built-in versioning to coordinate with your other services and leave the machine-distribution management to AWS (or equivalent other Azure/Google/IBM equiv. functions ) It’s likely that AWS implements Lambda on their Container services, on virtual machines, on physical machines. Who cares!?
I seriously love being able to, without concern for scaling/versioning/distributing etc….create microservices Lambda functions. Having a world-class Lambda function up and running without wasted management effort is awesome!! Especially considering the gobs of time wasted in my life on ‘management’ of the overhead. We’ve had 100+ Lambda functions running for years WITHOUT one concern of machine, virtual or otherwise, management needed. They just work.
So while Docker solves the heavy VM’s legacy problem, I’d skip it moving forward for the lightweight headache-free beautiful Lambda function. Oh, and by the way, you pay for the actual time your Lambda function runs, not the many times underutilized machine instances.
So, certainly for new microservice architecture:
Go to Lambda. Do not pass go. Do not use Docker. Do not collect $200. (except this is the opposite of jail ;-) )