3 ms·
It's an interesting question, but the general problem is that even small projects have problems when bringing things to production. For example, let's use Djang
by TheIronYuppie 11y ago
It's an interesting question, but the general problem is that even small projects have problems when bringing things to production. For example, let's use Django:
- How do you make sure the version of Django on your machine matches the one in production?
- What if you do brew update on your Mac and the package for your repo in production is out of date?
- How do you roll out a new version of your app (even allowing for downtime) and make sure it did it "completely"?
- How do you make sure your app keeps running even if your VM goes down (let's say you need to do a kernel upgrade)?
- How do you use one password for your local development database and one for your production database (and not hard wire it into code)?
These are super common problems - you're going to have to solve them no matter what. Lots of folks do this with scripts, but one small change can cause all kinds of annoyances.
This is why containers have taken off, and all of these are addressed via the combination of containers & Kubernetes. It's a different way of thinking about development, but I've been able to accelerate my velocity substantially once I adopted them. I'd argue that the complexity that you accept as 'normal' for a small site is an unnecessary tax, but I'm biased :)
Disclosure: I work at Google on Kubernetes.
- metafunctor 11y agoAll of the things you've listed can be done with simple, small, and straightforward scripts. To check for versions of Django, and other libraries, you write simple scripts to test for them. Run them in unit tests, and as a pre-check stage in deployment scripts. Our apps do keep running if any single VM goes down. We don't need Kubernetes or anything to handle that. Just a load balancer and an ElasticSearch cluster. Dev hosts obviously have different passwords read from config files only present in development systems.