Gavel: A live auction platform that combines live video shopping with live auctions
Category: Auction, eCommerce
Services: DevOps, Cloud Architecture Design and Review
- Reduced downtime by almost 95% with a reduction in failure rate.
- Achieved cost-reduction of 15%.
- Built a highly scalable and stable system.
About Gavel
Gavel is a live auction platform that brings collectors, buyers, and sellers together. Gavel combines live video shopping with live auctions to add fun and discoverability to online purchasing. Gavel allows you to chat in the Gavel app with like-minded people in the virtual room, ask questions during the show, and bid on your favorite items directly.
Problem Statement
The client’s existing deployment process was manual and error-prone, which was leading to delays and inconsistencies in their deployments. They needed a way to automate their deployment process and ensure that their deployments were consistent and reliable.
Proposed Solution & Architecture
We used AWS CodePipeline to automate the client’s deployment process (for multiple environments) it automatically builds and tests their code, and then deploys it to the provided environment. The pipeline was configured to automatically trigger on code changes in their source code repository, which eliminated the need for manual intervention in the deployment process.
We also configured the pipeline to use AWS CloudFormation to manage the client’s infrastructure. This allowed us to define their infrastructure as code and automate the creation and management of their resources.
Additionally we utilized several tools within the pipeline, which made sure the code’s quality and integrity remains intact , such as Pre commit hooks, Sonarqube and Unit testing
Metrics for Success
With the new CI/CD pipeline in place, the client was able to achieve faster and more reliable deployments. The pipeline eliminated the need for manual intervention in the deployment process, which helped reduce the risk of human error and ensured consistent and reliable deployments.
The client was also able to improve their development process by using the pipeline to automate their testing and deployment processes. This allowed them to focus on developing new features and updates, rather than spending time on manual deployment tasks.
In addition, the client was able to achieve cost savings by using AWS CodePipeline. By automating their deployment process, they were able to reduce the amount of time and resources needed to manage their deployments.
Conclusion
By leveraging AWS CodePipeline, our client was able to achieve faster and more reliable deployments, improve their development process, and achieve cost savings. The new CI/CD pipeline eliminated the need for manual intervention in the deployment process, which helped reduce the risk of human error and ensured consistent and reliable deployments. Overall, the new pipeline helped our client deliver new features and updates to their customers faster and more efficiently.
Pipeline Overview
AWS Services Used:
- Amazon Route53:We used Route53 in this project for the DNS management of our project, which connects user requests to internet applications running on AWS.
- AWS Certificate Manager: We used AWS certificate manager to easily validate our domain for Secure Sockets Layer/Transport Layer Security (SSL/TLS) certificates and configured it with our load balancer(Backend) and CloudFront service (Frontend) for secure & encrypted communication.
- Amazon Cloudfront: Amazon CloudFront is the service that we use to speed up the distribution of static and dynamic web content, such as. HTML, CSS, Js and image files to the Gavel users.
- AWS VPC: Amazon Virtual Private Cloud (VPC) is a service that allows you to control the virtual network environment, including the IP address range, subnets, and route tables. You can also use VPC to connect to your on-premises network using VPN or Direct Connect.
- AWS ECR: Amazon Elastic Container Registry (ECR) is a fully-managed Docker container registry that makes it easy to store, manage, and deploy Docker container images.
- AWS KMS: AWS Key Management Service (KMS) is a fully-managed service that provides cryptographic key management for your applications. KMS enables you to create and control encryption keys used to encrypt data at rest or in transit in AWS services and your applications.
- Amazon ECS: The client wanted a scalable and stable solution, so we proposed an ECS(EC2-based) system where we deployed our backend application. With Amazon ECS, the deployment was easy, with zero downtime.
- ALB: ALB supports advanced request routing features based on parameters like HTTP headers and methods, query string, host, and path-based routing of incoming traffic across multiple targets that we configured with our application. It also enables us to provide the auto-scaling feature.
- Amazon S3: With features like industry-leading scalability, data availability, security, and performance, we used it to store and retrieve data for frontend and backend applications.
- Amazon RDS: With the features of RDS, like easy management, scalability, reliability, and a backup mechanism, we configured our MySQL database.
- Amazon Elasticache for Redis: We use a fully managed caching platform that makes it easy to deploy, manage, and scale our application’s high-performance distributed in-memory data store cluster.
- AWS CodePipeline: AWS Codepipelineis a fully managed continuous delivery service that helps us automate our release pipelines for fast and reliable applications and infrastructure updates.
- Amazon SNS: Amazon Simple Notification Service (Amazon SNS) is a managed service that we use for message delivery from different services like CloudWatch Alarm for alerts, push notifications, and Codepipeline deployment notifications at different stages. Apart from sending push notifications, the Amazon SNS service also helps us monitor whether the process is running smoothly or not.
- AWS CloudTrail: AWS CloudTrail enables auditing, security monitoring, and operational troubleshooting by tracking user activity and API usage. The AWS CloudTrail logs, continuously monitors, and retains account activity related to actions across our AWS infrastructure, Thus giving us control over storage, analysis, and remediation actions.
- AWS Secrets Manager: We use AWS secrets manager to ensure secure storage and transition of our environment variables like database credentials, API keys, and other sensitive data.
- Amazon CloudWatch: We use it to monitor and manage our services by configuring alerts for unwanted behavior, storing our application logs and application build stage logs, and providing actionable insights for our applications and infrastructure resources.
- AWS WAF: Web application firewall that we use to monitor the HTTP(S) requests forwarded to our web application resource Amazon CloudFront distribution just to avoid any malicious activity.