(Java, Spring framework, AWS-ECS, DynamoDb, Route53, Cloudformation, Terraform, RDS, S3, Lambda)
Responsible for design and implementation of six microservices. Out of six, four are in production with 99.95 availability and zero downtime deployment strategies even during persistent layer maintenance
Payment service:
• Implemented as a restful GET endpoint which integrates with a third-party payment gateway to get a response of a HTML redirect page to the third-party payment gateway.
• Response from the gateway is captured via Webhook events and parsed to give a success or failure confirmation to user of their payment status. In the case of failure in downstream services dependent on this payment, payment is refunded to the user.
• To guarantee the refund, queues and dead-letter queues were utilized. Deployed in active-hot passive architecture
Document Processing Service:
• Exposed a restful POST endpoint, request contains list of document URLs to be converted, type to be converted to, destination for converted documents to be uploaded to & callback notification URL.
• Based on the priority of the enterprise, the request is pushed to different distributed queues to achieve resiliency.
• Consumer of these queues utilizes blocking queues to implement the conversion service in Pub/Sub paradigm. An event in this pub/sub system can contain multiple documents to be converted and each document in the message is downloaded, converted and uploaded to destination.
• Service auto-scales up & down within a range of 500-1000 consumers based on queue depth. The service is an active-active deployment
Asset and Content management service (CMS):
• Built a disaster recovery strategy. Migration from in-house Kubernetes cluster to AWS ECS cluster with zero downtime using CI/CD pipeline.
• As product grew, requirements changed and data that needs to persisted is of relational in nature. Migrated database from DynamoDB to PostgreSQL with near 0 downtime.