3 ms·
There are a lot more advantages on abstracting the hardware from the app. First of all, you don't need one machine per service for scaling the app. All services
by jordic 11y ago
There are a lot more advantages on abstracting the hardware from the app. First of all, you don't need one machine per service for scaling the app. All services run on the cluster, and you can add or remove machines, as needed. (On night you can reduce your cluster size, and grow it during the day).
But also, you can use the same cluster to run your preproduction enviroment, or use it for CI/CD. (Check deis) As an example, we have an small cluster with two machines and on it, there are:
- the main app,
- the preprod environment,
- two more feature branches (that had to be reviewed)
- And also commercials can deploy playground environments to make demos and trials.
All are independent apps, sharing resources, on the cluster.
As a summary, on daily, we maintain 7 to 10 independent apps instances, and we do regular updates (as new revisions arrives). As an example, the trials or feature branches, are single pods (all included, db, redis, app and worker).
Kubernetes is not for deploying pet projects, but as soon as you start working on a real project is a must. You can manage complex deploys with a lot of services.. keeping the costs as lows as two n1-standard-1 machines.
And as a plus on gke, you got monitoring, and logging aggregation.
- hnarayanan 11y agoExcellent points.
- drdaeman 11y agoI think the questions was "is this complexity necessary?" If the same (deployment and upgrades for production, staging and testing environments, for any number of hosts) could be achieved with a small shell script - doesn't this mean that cluster thing isn't really useful? I think a lot of "real" projects (smaller ones) work perfectly well without any complicated cluster management tools, and aren't really hindered by lack of what those offer.