-
Notifications
You must be signed in to change notification settings - Fork 11
Description
Is your feature request related to a problem? Please describe.
While UrbanOS scales up well, it does down scale down. This is an issue for small scale deployments for local, civic, and non-profit instances.
Describe the solution you'd like
I would like to propose a way to run UrbanOS as a single image, with all the microservices running together in parallel. External dependencies could be replaced with in memory or disk versions, especially with elixir libraries. This small-scale installation would handle Curation to Ingestion to Discovery. I recommend keeping Postgres as a dependency, shared between all the apps that need it and playing host to the persisted data storage as well.
The end goal would be an architecture of UrbanOS <-> Postgres. This is far more maintainable both from cost and technical expertise, while the postgres database would allow the user to easily swap to the clustered version with a simple process if later scaling demanded it.
Describe alternatives you've considered
At the moment, UrbanOS can scale down by cutting out microservices. This reduces the capabilities of the platform however and is not preferable.
Additional context
Dependencies to be swapped out:
Kafka -> Something like https://github.com/fredwu/opq (The event stream could be done relatively easily by customizing Brook!)
Redis -> Cachex
Elasticsearch -> https://github.com/heywhy/ex_elasticlunr