ECS v. EKS
ECS, or Elastic Container Service, is a great simple way to deploy containers if you and your team are committed to using Amazon Web Services. Kubernetes, on the other hand is an open-sourced solution that can run on any cloud and on-prem environment. We believe AWS is easier to set up and work with, however, it may not be the best case for everyone as some teams may prefer a multi-cloud or hybrid-cloud setup, and full admin access to all of their software processes running production.
Clusters & Services
Both ECS and Kubernetes have the concept of "clusters". A cluster is a set of computers that can run one or more set of containers, and services refer to a group of containers that are running. For example, if you're running a web application, a cluster can be defined as a group of servers running in a provisioned network (e.g. a VPC in AWS), and a service can refer to a load-balanced distribution of containers that are running your API process. In each of ECS and Kubernetes, you can think of them as more or less the same when starting to build application on either platform.
On AWS, you can choose your deployment to be "serverless" by choosing the Fargate runtime. By choosing this option, you can offload more of the work in managing clusters and services to AWS, because you no longer have to choose the size of your computing instances, or where they run. AWS offers the Fargate runtime for both ECS and EKS, or their managed version of Kubernetes.
Task Definitions and Tasks // Pods, Replica Sets, and Deployments
In between, services and clusters in both systems is defining what processes you want to run and how many of those processes you want to spin up. In ECS, defining these processes is known as a task definitions, and contains one or more containers to be run as a single unit. For instance, you can define a task definition that contains your API container, and a Datadog container in the same task for application performance monitoring.
In Kubernetes, these are known as pods and have a similar meaning. You can define the same API + Sideloaded APM container as a pod, which can be one or more containers. Another example of a pod with two containers is using Google Cloud's SQL Proxy container to sideload containers.
In ECS the task definition is invoked,