For my poor brain still trying to cope with the enslaught of the huge number of all these cloud service features ... this sounds a lot like kubernetes ... is this just a proprietary version of that? Can someone differentiate them for me?
It's a fully managed version of Amazon ECS (elastic container service). With Fargate, you don't need to manage the EC2 instances that make up the cluster, as is required with ECS.
Early on, Amazon tried to avoid offering a managed Kubernetes service, and so they rolled their own container service in the form of ECS. Later they caved in and created EKS, their Kubernetes platform. ECS is still used as the underpinnings of some of their other services, such as Batch and Fargate.
When I played with Fargate about a year ago or, this was its Achilles heel. I was hoping for a solution that would auto-scale very quickly, but the healthcheck intervals and minimum counts to consider a container "running" couldn't go below 30 seconds or so.
As far as I recall, this is all configured on the load balancer, rather than directly inside Fargate. Somehow makes it feel less like a "fully managed" solution, but rather something you have to still tinker quite a bit with.
(compared to Lambda, which you really don't have to worry about scaling at all)
EDIT: [0] indicates that the minimum you can set is 10 seconds (minimum 2 intervals of 5 seconds to consider it "healthy"), if I understand it correctly
GKE and Google Load Balancer has similar issues, changes to the loadbalancer/ingress take up to 10-15 minutes to propogate and if you miss a health check you'll be serving 500's until it magically balances itself out or you just nuke it out of frustration and wait the 10 minutes for it to configure with your ip again.
My understanding is with EKS or similar you still have to manually size your kubernetes cluster, that is you have to make sure there's enough hardware instances in your kubernetes cluster for whatever scaling you'll need. With fargate you're effectively using AWS's own cluster. Your service can scale up and down, and you only pay for the resources that your service actually uses.
Fargate lets you run containers without having to think about the underlying VMs. You say how much CPU and mem you want the container to run with and off it goes.
Kubernetes is a container orchestrator. If you have a k8s cluster, you can launch a container with a specified amount of memory (and I believe CPUs) and it will look much like Fargate. However, someone needs to manage the underlying hardware/VMs for the cluster as well as the cluster software/updates (k8s version, various k8s addons/operators, etc). With k8s, you will also need to make sure that you are using resources effectively (total resources required by containers == total resource available on the VMs in the k8s cluster), which is particularly challenging if you are launching new containers often. If you are using a cloud k8s offering (EKS, AKS, GKE, etc) then some or all of the VM management will be handled by the cloud provider, but the software management and resource utilization work will still be up to you.
TLDR Fargate and k8s can be used very similarly, but k8s has a much higher ops/management burden. K8s was designed to do many more things than Fargate and, while that is sometimes great, it comes with a large ops/complexity cost.
> this sounds a lot like kubernetes ... is this just a proprietary version of that?
Not really, in fact, they announced EKS (their Kubernetes service) on Fargate at the same time they announced EKS, even though they've since seemed to have abandoned it; conceptually they live at slightly different levels of the stack.