Why do developers find Kubernetes so hard?
blog.upbound.io
blog.upbound.io
When k8s still breaks in glorious ways, these tools will just be in the way as another layer of complexity on top of endless complexity.
And for what? Is this complex machine really making things better, or does it just give us a sense of accomplishment that we can solve problems we don't even have? At what point do we take a step back and realize that maybe we made a huge mistake?
I think we're starting to see the beginning of a reversal away from SPA madness (maybe I'm just being optimistic). I believe the same will happen with Kubernetes eventually, but it probably needs to do a lot more damage first.
-----
As a front-end coder, the delivery mechanisms aren't important to me. I have requirements that need to be met (geographic dispersal, session stickiness, etc.), but my job does not include setting up servers.
As a back-end coder, the container mechanisms aren't important to me. I need to know how to reach the database and 3rd-party APIs, and I have security requirements that need to be met, but my job does not include setting up servers.
As an operations engineer, the development languages aren't important to me. I know how to setup the right servers and containers and security and communication channels between everything, how to get the DNS to round-robin (or whatever solution for load-balancing I use), and I have security and performance requirements that I need to meet.
-----
Many of us are generalists in this sense. Developers very often know enough about web servers (Apache, nginx, etc.) and database servers (MySQL, PostgreSQL, Redis, MongoDB, etc.) to set them up reasonably well, and enough about TCP/IP to get everything running on a hosted server or two somewhere with working DNS. When VMs became popular as a way to ensure consistency between a bunch of different developer machines, we still didn't really need to worry about containers on the server. Then when containers became the next big thing, the tech wasn't quite ready for Joe Developer, but it was pretty well setup for Jane Devop.
And that's the crux of the problem - Kubernetes isn't necessarily hard for dev ops engineers since it's completely within their purview. It's asking developers to also be accomplished dev ops engineers that's creating difficulty. It's like requiring your mechanic to also be a professional race driver. It's like expecting your pilot to know how to rebuild a jet engine. Yes, there are some who can do it, but most of us are just barely making it work because we _have_ to and concentrating on the development instead.
If we want containers to be easy, then there should be a CLI that asks me a few questions (what host, what server-side language, what front-end requirements, what external services, etc.) and it spits out all the configuration I need to deploy to my host of choice with a single command. Better yet, build this into a build plugin for my IDE.
As a developer, I don't really want to know what all that stuff in an Apache or nginx config file does, but I need to. I shouldn't have to edit more than two or three lines in a PHP ini file to handle memory limits, but I need to. And I definitely shouldn't be deeply versed in two or three different deployment container technologies in order to get a job as a front-end developer.