4 ms·
I don't know that Kubernetes and Docker are intrinsically difficult, but it's a lot to learn in addition to everything else a developer needs to know these days
by metaloha 4y ago
I don't know that Kubernetes and Docker are intrinsically difficult, but it's a lot to learn in addition to everything else a developer needs to know these days. The barrier to entry is consistently getting higher and specializing in one of the three disciplines is often discouraged.
-----
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.