TLDR; a long-term plan, to refactor some invisible internals of our services.
Our microservices (satellite, storagenode, version control etc.) have many internal small services (like piece walker, or piece store).
The way how we initialize these services are very static, and hard to maintain. We introduced an experimental modular framework (such for mud in storj/storj), which can make this wiring more dynamic.
- It make it easier to develop new components, or ad-hoc helpers and cli tools
- It makes it easier to run more lightweight unit test (without DB dependency, or mocked DB).
- Also, it can make the unit test more cache friendly
- It can make it easier to explain required configuration for microservices (can show which configuration is used)
Current phase:
- we have dedicated storagenode-modular and satellite-modular satellite. Same logic, same behavior, different initialization logic
- Yes, select uses this binary
- Eventually, we are planning to use this initialization mechanism for all containers, but it’s a long-term effort and low priority