Level 1) you package your service into a zip/rpm/deb/etc and have an agent on the machine that periodically pulls
Level 2) you pack your software into an ami and use the update the asg config. You can periodically "drain" the asg of old instances
Level 3) you deploy your stack again with the new stack having the ami that you've build at level 2 referenced. You start shifting traffic between the old stack and the new stack. You monitor and rollback if something is wrong.
I find it's easier to use Ansible/Salt/Puppet Bolt and Packer to bake an AMI every night, update the launch template in a DB (which Terraform pulls the value from, thus there is no drift), and auto the ASG. Then you just force a drain.
Now you've got automatic, constantly updating VMs every night if you want them. And a new deployment is just commiting code to master and pushing and that whole pipeline triggers for you.
People like to overcomplicate things, Mirceal. You're on the right path :-)
I'll be honest I haven't fully explored AMIs as a solution but how do you run the AMI in your local dev environment? I can replicate the same K8s with docker images easily in local dev.
that's the crux of the problem. people no longer know, understand or want to know and understand what their software is vs what is around their software. they treat docker and k8s as a way of packaging software and just ignore all the lessons that generations of software engineers have learned when it comes to how to properly manage your dependencies and how to correctly pack your software so that it's resilient and runs anywhere.
we also live in a world that does not appreciate well crafted software and a lot of things are driven by the desire to build a resume. I've maintained code that was decades old and was amazing to work with and was still generating ridiculous amounts of money. I've also worked on code that was just written and used all the possible bells and whistles and development speed grinded to a halt once the it's been around for more than a couple of months.
My worst case scenario is having to work on code where the original developer didn't understand what they were doing and they just wanted to use X. Double the trouble if they didn't master X when the thing was put together.
> Stop pretending Kubernetes is this humongous infrastructure investment that mandates a full time job to keep up at low scale.
It is a full time job. The cost of using something is not just the setup cost. The same way that software development is not just the cost of writing the software.
Indeed. Hosted k8s has been low maintenance in my experience, much lower than managing a bunch of VMs. I think the common thread between people who have horror stories using k8s is either pains from self-hosting or teams who adopted it without experience and used the ample rope it gives to hang themselves.
His point is to use whatever simplifies workflow / reduces operational overhead. To some people, that indeed would be k8s. To you, that may be "managing a couple of webservers and a db". And that is great for you.
yeah I use k8s for basic webapps and it works wonderfully, and is way way easier than anything else, and yes I started developing in the 90s so I've seen it all. There is a bit of overhead in learning k8s, but once you know it, it's dead simple for every use case I've found and takes you way further than anything else.
Inevitable at some point? At what point? If we are 500 years away from it does it make sense to invest resources in figuring it out now? It humans don't survive as a species is it really inevitable?
Another thing that most people don't get or don't want to acknowledge is that intelligence and consciousness is relative to the environment in which the entity is intelligent or conscious in. If you take a piece of software and expect it to be conscious the same way a human is conscious you're going to have a bad time. There is heavy heavy projection when it comes to humans interacting with basically everything. We anthropomorphize everything.
From that vantage point we will not be able to recognize intelligence and consciousness unless it look exactly as our own.
That's the tragedy of software development. Nobody wants to do work that isn't super visible (usually in the form of new features). Simplicity and robustness are not appreciated nor rewarded.
There is definitely a middle ground and I agree with you that the public health concerns should be one of the things that keep some sort of coarser zoning in place.
Now, the reason for the ridiculous zoning based on housing type and commercial activity are really really simple: to separate the rich from the middle class and the middle class from the poor. It's extremely prejudiced and wrong. Yet here we are.
We don't want to run k8s from scratch? Let's buy the managed version in the cloud?
It sounds like an argument for containers.
I mean, at that point why not use a simpler abstraction, like a VM. Or just use functions.