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 manual and error-prone deployment process of the client posed challenges, leading to delays and inconsistencies. This impacted the efficiency and reliability of their operations, causing disruptions to their business. As a small and medium business, they required an automated deployment solution to ensure consistent and reliable deployments.
Proposed Solution & Architecture
To address the deployment challenges faced by the SMB client, we proposed an automated deployment solution using AWS services:
Automation with AWS CodePipeline
We leveraged AWS CodePipeline, a fully managed continuous delivery service, to automate the deployment process. This solution eliminated manual intervention and streamlined the deployment workflow. CodePipeline automatically built and tested the client’s code, and then deployed it to the specified environment. By triggering deployments based on code changes in the source code repository, the process became efficient and reliable.
Infrastructure as Code with AWS CloudFormation
We utilized AWS CloudFormation to manage the client’s infrastructure. By defining their infrastructure as code, we automated the creation and management of their resources. This approach ensured consistent and reproducible infrastructure deployments, reducing errors and improving overall stability. The use of CloudFormation allowed the SMB to easily manage their infrastructure without manual configuration, thus saving time and effort.
Code Quality and Integrity
To maintain code quality and integrity, we integrated several tools within the pipeline.Pre-commit hooks were implemented to enforce coding standards and best practices. SonarQube was used for code analysis, identifying potential security vulnerabilities and maintaining code quality. Unit testing frameworks were incorporated to verify the functionality and reliability of the codebase. These measures ensured that the code met the required standards, minimizing risks and enhancing the overall quality of the software.
Metrics for Success
Improved Development Process and Reliable Deployments:
With the implementation of the CI/CD pipeline, the SMB client achieved faster and more reliable deployments. The automated pipeline eliminated the need for manual intervention, reducing the risk of human error and ensuring consistent and dependable deployments.
Efficient Resource Utilization and Time Savings:
By automating their testing and deployment processes through the pipeline, the client optimized their resource utilization and achieved significant time savings. Manual deployment tasks that were previously time-consuming and prone to errors were now automated, freeing up valuable time for the client’s development team.
Cost Savings and Resource Optimization with AWS CodePipeline:
The adoption of AWS CodePipeline brought cost savings to the SMB client. By automating their deployment process, they reduced the resources and effort required to manage deployments. This resulted in cost optimization and maximized efficiency. With streamlined deployments, the client could allocate resources more effectively, directing them towards other critical areas of their business.
Enhanced Scalability and Flexibility:
The CI/CD pipeline offered scalability and flexibility for the SMB client. With automated deployments, they could easily scale their infrastructure and accommodate increasing user demands without manual configurations. This agility allowed them to respond to market needs quickly and efficiently, ensuring a seamless experience for their users.
Improved security:
AWS KMS (Key Management Service) offered simplified and secure cryptographic key management, enabling encryption of data at rest or in transit across AWS services and applications.
Pipeline Overview
AWS Services
- 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.