Overall Satisfaction with Kubernetes
Kubernetes has massively simplified and sped up the management of microservices deployed within my team. If we need to spin up a new service, even if it doesn't relate to the other services in the cluster, we can simply deploy the docker container to the cluster, complete with service discovery, configuration management, autoscale and fault tolerance. This is invaluable.
- Fault tolerance - the things it does under the hood to handle failure is near magical.
- Configuration management - the ease of managing configs and secrets in kubernetes makes it a snap for integrating services.
- Service discovery - getting services to talk to each other with automated internal DNS and service-discovery makes shipping service dependencies easy.
- Speed of error detection - many times, in attempting to fix a problem, I found that kubernetes just had a delay in handling an automated fix. By changing the system, I was playing a cat and mouse game with kubernetes' attempts to auto-fix the error.
- Sensible logging - many of the logs are difficult to decipher and too verbose to be useful.
- The learning curve is high - it took many months of working with Google, in which both I and Google Support Engineers learned a lot about how Kubernetes works. The learning curve is not for people looking for quick and easy out of the box.
- The cost of running the services in kubernetes is orders of magnitude lower than our previous infrastructure.
- The speed of new service creation and deployment is amazing.
- The automatic failure recovery has saved us numerous times.
- AWS ECS
With AWS ECS, you have to provision the virtual hardware, then use that hardware as a pool for your container service. Each service has to be built out and scaled independently. Kubernetes allows us to use a cluster of machines like a big pool of resources, scaling and shipping multiple apps on the same cluster with minimal operations overhead.