Worth the Learning Curve
October 05, 2017
Worth the Learning Curve
Score 10 out of 10
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.
If you are managing microservices, need service-discovery, autoscale and config management, kubernetes provides everything you need right out of the gate with simple YAML config files, allowing you to store your infrastructure as code within your repos. Kubernetes works best with non-homogenous loads, so putting multiple types of services into the cluster that utilize different components (memory, CPU, network) will provide better results than a single service that takes up one type of resource.