I currently deploy a lot of my services to Heroku mainly for the ease of use. A setup might be series of small services that communicate simply by making http requests through the URL provided by Heroku.
So far this has worked perfectly fine as my services are fairly simple. I've done some reading, and this appears to be a perfectly reasonable setup, and Heroku takes care a lot of the concerns of building reliable services like scaling and load balancing.
Recently, I've been interested in learning about other ways of deploying micro services. Specifically, I've been looking into things like Kubernetes and Istio.
These seem interesting, but I'm having trouble reasoning about why I'd use them over my current setup. My thoughts are that Heroku works for my relatively simple use case, and that Kubernetes and the like would come in to play if I need more control or a more custom setup.
Given that, I have two questions.
Is my above thought process correct? At what points does a service like Heroku cross over with Kubernetes or similar services?
At what point would a service like Kubernetes become a better choice than Heroku? Outside of more control, are there other features that it provides that are big wins for larger applications?
I mention Heroku as it's the service I'm most familiar with, but I would guess the question applies to other PaaS services as well.
1 Answer
I'm having trouble reasoning about why I'd use them over my current setup. My thoughts are that Heroku works for my relatively simple use case, and that Kubernetes and the like would come in to play if I need more control or a more custom setup.
You are right. Only change platform when you have a need for it - and changing has a cost - you need to learn new things and perhaps adapt your apps.
At what point would a service like Kubernetes become a better choice than Heroku? Outside of more control, are there other features that it provides that are big wins for larger applications?
Heroku is the "role model" for Platforms. Kubernetes is only a part of a platform, many more components are needed, e.g. CI/CD and observability with products like Prometheus. But Docker and Kubernetes is perhaps more generic and less opinionated. The good thing with Docker and Kubernetes is that the community is becoming large now and when you are going to hire new people, this are the tech that you can find people that already have a lot of experience with the tech (e.g. this has been the case for Java).
Note that Kubernetes combined with more CNCF components also is becoming a "Platform" or "customized PaaS". Kubernets as Heroku is designed along The Twelve-Factor App - authored by employees from Heroku in 2011.