3 ms·
I love this idea. I will express the ups and downs of it, and see if I'm missing something. First, some background: I'm a heavy Django user. Django has setting
by santiagobasulto 6y ago
I love this idea. I will express the ups and downs of it, and see if I'm missing something.
First, some background: I'm a heavy Django user. Django has settings that are loaded once at runtime and usually they're in version control (they're committed to the repo). That means that, if you want to change a value to a setting, you must commit to the repo and re-deploy. If you're using Kubernetes, this might take several minutes (re build the images, upload to the registry, replicate on all the pods, etc).
That'd be the advantage of this solution. Imagine you have to change a setting IMMEDIATELY (something bad happen). You must:
* commit to the repo and push
* wait for CI (tests, formatting, protocols of PR approvals in a team, etc)
* wait for CD (build image, push to registry, replicate, etc)
It can potentially take several minutes.
Now, the major drawbacks I see with this service are:
* Security: do you guys feel confident/strong enough to store important data of the app? Go so far as hosting secrets for example? (We use the Secret Manager in AWS).
* Latency: in our case we read confs only once when the WSGI server starts. Can you be fast enough?
* Availability: if your site goes down, my app goes down. Can you ensure 99.9999 availability?
Anyways, this is definitively a needed service. It does have its challenges, but you guys are onto something for sure. Congrats!
- rad_gruchalski 6y agoI don’t know django. This is a genuine question. Why not something like this? https://github.com/kpn-digital/django-etcd-settings https://github.com/kpn-digital/django-etcd-settings Seems like it’s possible to fetch settings from an external store.
- santiagobasulto 6y agoThere are things. Se use Django Constance with Redis as backend and it gets the job done.
- jeremyis 6y agoThank you for the kind words and really thoughtful comment! If we build a Python / Django library, would you integrate Configly? If not, what would it take? I think you hit the nail on the head for a core use-case: deployment processes inhibiting quick data changes. I believe the problem gets worse as you work at larger places... I've worked at [unnamed SF Tech Company with ~1k engineers] where deploying took ~a day simply waiting for the CI along with a backlog of commits from other developers. I really like the challenges you call out. We don't do a good job of saying this on the site but we explicitly don't want h manage secrets / sensitive data; especially because the API_KEY is on the client libraries - so there isn't really anything stopping anyone from peeking in memory / the source making requests (I think this is different than say a more traditional login-auth system where the secret is stored in a session and only the person with access to the client with that session can access that data). 100% agreed on latency and availability. Config.ly needs be super solid here (sacrificing of course some consistency... slightly delayed updates). Besides following best practices for building/designing/operating high-avail systems (both my cofounder and I have experience here), there are some clever things we can do on the client. For instance, caching should help with both and I thought some of commenters below mentioned had great suggestions for other sorts of clever client fallback mechanisms we can do to help here [1] [2]. Thanks again for the great input! [1] https://news.ycombinator.com/item?id=25062496 https://news.ycombinator.com/item?id=25062496 [2] https://news.ycombinator.com/item?id=25063062 https://news.ycombinator.com/item?id=25063062