Problem and scope
The application provides token-based APIs for creating, reading, updating and managing bills. The goal was not only to build endpoints, but to package the backend as a cloud-deployable system with repeatable infrastructure and automated delivery.
System flow
An Application Load Balancer distributes requests to EC2 instances managed by an Auto Scaling Group. Express routes enforce authentication and validation, while Sequelize maps application models to PostgreSQL RDS.
Notification fan-out
Publishing events through SNS decouples the API request from notification delivery. SQS provides buffering and retry control, Lambda processes messages, and SES sends email without making the synchronous API wait on an external mail operation.
Infrastructure and delivery
CloudFormation describes the AWS environment. CircleCI installs dependencies, executes tests, packages the application, uploads the artifact to S3 and starts a CodeDeploy deployment. This makes infrastructure and release behavior repeatable rather than dependent on manual server changes.
Quality controls
- Mocha and Chai for automated API verification.
- Postman for repeatable integration scenarios.
- Sequelize migrations for database changes.
- CloudWatch and application metrics for operational visibility.
Source code
The public repository contains the Node.js service, PostgreSQL integration, tests and CircleCI delivery configuration.