Project Structure
- ./docs/ - documentation that’s published to the GitHub page
- ./infra/ - infrastructure files (Dapr, Postgres, etc.)
- ./libs/ - common library files and the file_enrichment_modules
- ./projects/ - the main logic files that comprise the various services
- ./tools/ - misc helper scripts
Design Choices
Many of the decisions made with Nemesis 1.X resulted in an over-engineered system that was less flexible and difficult to expand/maintain. Nemesis 2.0 aims to take lessons learned and simplifies the entire architecture:- Docker/Docker-Compose is used instead of k8s for speed of development and general ease of use, especially as we didn’t experiment with scaling in the previous version (we may move back to k8s at some point).
- Dapr is now used to increase reliability and to offload infrastructure plumbing concerns
- Strict protobuf schemas were dropped in favor of a flexibilbe schema
- Overall project code/approaches were greatly simplified
- Dropped Elasticsearch (the largest resource hog) in favor of consolidating with PostgreSQL