Sunbird UCI

Design Principles

Plugin Based - Adapters, Transformers and Users can all be injected by external providers. Allowing for un-opinionated implementation of specs (which are kept minimal) allowing for simpler, wider and faster adoption.
Minimal Micro-services - A simple structure on how the micro-services will interact with each other (specs) and how the information will be stored and processed.
Federated Architecture - We only save configuration as part of the UCI and everything is just called from respective places.
Data Federation - All data is secured using JWT and with extreme automation on the building of APIs using data specs.
Population scale - Asynchronous everywhere with independently scalable small services. Databases that scale horizontally - Cassandra for persistence; Kafka pipeline for decoupling the Saga transactions. Caching at all levels. Deployment auto scalable based on Kafka queue - HPA (k8s).