Our server is architected in different microservices, each of which is responsible for a specific task.
- main-api: The main API server, which serves the API endpoints
- calendar: The calendar microservice, which scrapes and serves calendar data
This is separated from the server because:- it has virtually no shared dependencies (natural fault line)
- we need a persistent database (postgres) for this microservice, but not for the main server (sqlite)
- feedback: The feedback microservice, which allows users to submit feedback
This is separated from the server because:- it has virtually no shared dependencies (natural faultline)
- this way, we can deploy the feedback-API independently of the main server (both in time, scaling and reliability)
- security: this way, we can increase our isolation and protect the GitHub token better ;)