<story><title>The Kubernetes Effect</title><url>https://www.infoq.com/articles/kubernetes-effect</url></story><parent_chain></parent_chain><comment><author>archgrove</author><text>I&amp;#x27;ll stand by my assertion that for 99% of users (maybe even 99.99%), Kubernetes offers entirely the wrong abstraction. They don&amp;#x27;t want to run a container, they want to run an application (Node, Go, Ruby, Python, Java, whatever). The prevailing mythology is you should &amp;quot;containerize&amp;quot; everything and give it to a container orchestrator to run, but why? They had one problem, &amp;quot;Run an app&amp;quot;. Now they have two, &amp;quot;Run a container that runs an app&amp;quot; &lt;i&gt;and&lt;/i&gt; &amp;quot;maintain a container&amp;quot;. Just give the app to a PAAS, and go home early.&lt;p&gt;Most startups - most large companies - would be far better served with a real PAAS, rather than container orchestration. My encounters with container orchestrators is that ops teams spent inordinate amounts of time trying to bend them &lt;i&gt;into&lt;/i&gt; a PAAS, rather than just starting with one. This is why I don&amp;#x27;t understand why this article lumps, e.g. Cloud Foundry in with K8S - they solve entirely different problems. My advice to almost every startup I speak to is &amp;quot;Just use Heroku; solve your business problems first&amp;quot;.&lt;p&gt;The article also mentions it enables &amp;quot;new set of distributed primitives and runtime for creating distributed systems that spread across multiple processes and nodes&amp;quot;. I&amp;#x27;ll throw out my other assertion, which I always though was axiomatic - you want your system to be the &lt;i&gt;least&lt;/i&gt; distributed you can make it at all times. Distributed systems are harder to reason about, harder to write, and harder to maintain. They fail in strange ways, and are so hard to get right, I&amp;#x27;d bet I can find a hidden problem in yours within an hour of starting code review. Most teams running a non-trivial distributed system are coasting on luck rather than skill. This is not a reflection on them - just an inherent problem with building distributed logic.&lt;p&gt;Computers are fast, and you are not Google. I&amp;#x27;ve helped run multiple thousand TPS using Cloudfoundry, driving one of Europe&amp;#x27;s biggest retailers using just a few services. I&amp;#x27;m now helping a startup unpick it&amp;#x27;s 18 &amp;quot;service&amp;quot; containerised system back to something that can actually be maintained.&lt;p&gt;TLDR; containers as production app deployment artefacts have, in the medium and long term, caused more problems than they&amp;#x27;ve solved for almost every case I&amp;#x27;ve seen.</text></comment>
<story><title>The Kubernetes Effect</title><url>https://www.infoq.com/articles/kubernetes-effect</url></story><parent_chain></parent_chain><comment><author>sacheendra</author><text>A consequence of the &amp;quot;Kubernetes Effect&amp;quot; is that while distributed systems are easy to build and use, a lot of developers lose sight of the fundamental problems which make distributed systems difficult.&lt;p&gt;For example, the sidecar in a sidecar pattern might fail while the application is running and the system can get stuck in weird states. The developer still needs to understand fundamentally how the system works.&lt;p&gt;Eschewing deeper knowledge just because it is easy to use is trap in this case. While the article compares Kubernetes to JVM, Kubernetes can fail in a lot more hard to debug ways than the JVM right now. I don&amp;#x27;t know if this semantic gap between distributed systems like Kubernetes and monolithic systems like JVM can ever be bridged.</text></comment>