Appearance
Implementation Specifications
Pending Approval
These specifications are pending final approval and may change
The Dispatcher application will be made of 2 services:
| Component | Description |
|---|---|
| Web Service | Endpoints to receive webhook requests from vendors and enqueue them for processing |
| Request Processor | Handles the processing of enqueued webhook requests from vendors |
Additionally, the Dispatcher application will utilize the following externally managed services
| Service | Useses |
|---|---|
| Redis* | Cache |
| RabbitMQ* | Queue |
| MySQL*/ MariaDB* | Relational Database |
| PHPMyAdmin** | Relational Database Management |
CAUTION
* This service should only be accessible to applications within the "cluster" and specifically whitelisted IP addresses of the relevant system administrators.
CAUTION
** This service should only be accessible to specifically whitelisted IP addresses of the relevant system administrators.
Tenant Configuration Management
Tenant configurations will be stored within the relational database, and will be managed via external tools such as the PHPMyAdmin service, MySQL Workbench or Navicat for MySQL.
Note
In a future release, a dedicated interface for configuration management will be created in order to limit the requirement of making direct database edits
Scaling Path
Dispatcher's services are designed to be horizontally scaled.
| Service | Details |
|---|---|
| Web Service | Serverless functions running on platforms like AWS Lambda and DigitalOcean Functions automatically horizontally scale and do not require any additional configuration |
| Request Processor | Will automatically horizontally scale based on queue back-pressure and application resource utilization |
Release Cycle
Dispatcher's service will have individual code bases. Minor and Patch version releases will be released independantly on a per-requirement basis. Major version releases will have syncronized releases to ensure that no issues occur during the migration.
Breakdown of Work
The estimate for the effort needed is 136.5 hours blocking hours + 24 non-blocking hours, broken down as follows:
| Task | Est. Hours | Notes |
|---|---|---|
| Web Service | 23 | See web service breakdown of work |
| Request Processor | 96 | See request processor breakdown of work |
| Infrastructure | 17.5 | See infrastructure breakdown of work |
Blocking vs Non-Blocking Hours
Blocking Hours refers to work which must be completed before the product can be launched Non-Blocking Hours refers to work which can or should be completed after the product is launched