<p>Assume I have a web application (Apache httpd server) deployed in AWS using EC2 instances (VM). Application deployment is performed using EC2 userdata.</p>
<p>Alternatively I could dockerize my web application. Deploy a Kubernetes cluster on EC2 instances using EKS, or custom setup. We could also use AWS Fargate for serverless feature.</p>
<p>What are the pros and cons to use second approach with Kubernetes here?</p>

<h1>EC2 - more responsibilty for Developers</h1>
<p>If you as a developer deploy your application to EC2 machines, you usually also is responsible for maintaining and patching the EC2 instances. The problem is that this is things that developers not usually are good at, and commonly not are so interested in. It is not their expertise to monitor and patch Linux machines or troubleshoot networking.</p>
<h1>Kubernetes - less responsibility for Developers</h1>
<p>With Kubernetes, you as a developer are responsible only for the application container and that your app is healthy. But another team, e.g. a platform team may be responsible for the underlying infrastructure, e.g. EC2 instances and Networking. Or as with Fargate, the cloud provider can be responsible for this.</p>
<h2>Cognitive Load</h2>
<p>Making the Developers responsible for less, but still having APIs for self-service deployment, makes them very efficient.</p>
<h2>Need for a Platform Team</h2>
<p>But when starting to use Kubernetes as a platform, you are taking on more complexity. You need to be a large enough organization for this. Unless you use higher level services like e.g. <a href="https://cloud.google.com/run" rel="nofollow noreferrer">Google Cloud Run</a>.</p>
<p>A good talk about all this is <a href="http://%20https://www.infoq.com/presentations/kubernetes-adoption-foundation/" rel="nofollow noreferrer">Kubernetes is Not Your Platform, It's Just the Foundation</a></p>
