Shopvory is a microservice-based ecommerce platform. Each service is designed to handle a specific domain, making the architecture highly modular and scalable. The application is deployed on Google Cloud Platform (GCP) using Infrastructure as Code (IaC) tools such as Terraform and Ansible. Jenkins is used as the Continuous Integration/Continuous Deployment (CI/CD) pipeline tool, with GitHub as the version control system integrated through webhooks.
- Microservice Components
- Tech Stack
- Infrastructure Setup
- CI/CD Pipeline
- Deployment
- Testing
- Contributing
The application consists of the following services:
- adservice
- Ad management and delivery.
- cartservice
- Handles shopping cart operations.
- checkoutservice
- Manages the checkout process.
- currencyservice
- Currency conversion service.
- emailservice
- Handles email notifications.
- frontend
- User-facing frontend service.
- loadgenerator
- Simulates user traffic for load testing.
- paymentservice
- Manages payment processing.
- productcatalogservice
- Product catalog and listing service.
- recommendationservice
- Provides personalized product recommendations.
- shippingservice
- Handles shipping and delivery operations.
- Go and Python for microservices
- Protobuf for inter-service communication
- Google Cloud Platform (GCP): Hosting environment
- Terraform: Infrastructure as Code for provisioning GCP resources
- Ansible: Configuration management for VM provisioning and deployment
- Docker: Containerization of services
- Google Kubernetes Engine: Deploying containerized applications
- Jenkins: CI/CD pipeline
- GitHub: Version control with webhooks for triggering builds
- GitHub Webhooks: For automated deployment triggers
We use Terraform to provision the following GCP resources:
-
VPC network for communication between services
-
Virtual Machines (VMs) for hosting services
-
Google Kubernetes Engine (GKE) for container orchestration
-
Service Accounts and IAM permissions for secure access
To see the full infrastructure setup instructions, including the Terraform configurations, Ansible Configurations, and CI/CD pipeline, please refer to the detailed GCP infrastructure guide in the
gcp-infra
branch.
- Fork the repository
- Create a new branch (git checkout -b feature-branch)
- Commit your changes (git commit -am 'Add new feature')
- Push to the branch (git push origin feature-branch)
- Open a pull request