This repository is my submission for the DevOps Hiring Challenge. It showcases a fully automated, self-healing, multi-cloud, multi-region, and AI-powered DevOps ecosystem built on a microservices architecture. This project not only demonstrates modern cloud-native practices but also serves as a comprehensive example of integrated CI/CD, infrastructure-as-code, and observability.
- Repository Structure
- Services
- Supporting Components
- Scripts and Automation
- Helm Charts and Kubernetes
- Documentation
- Getting Started
- Acknowledgments
Online Boutique is composed of 11 microservices written in different languages that talk to each other over gRPC.
The repository is organized into clearly defined directories to separate concerns and simplify management:
services/
: Contains all microservices for the e-commerce platform. Each service is implemented in different languages (Go, Java, Node.js, Python, C#, etc.) and is responsible for a specific function (e.g., frontend, cart management, catalog, payments).docs/
: Holds comprehensive documentation on various topics. For example:helm/
: Includes Helm charts and Kubernetes manifests that allow you to deploy and manage the application in a cloud-native environment.databases/
: Contains configuration files for various databases such as ClickHouse, Loki, and Postgres.grafana/
,prometheus/
,minio/
: Directories for monitoring, alerting, and storage solutions.cilium/
: Provide network security/observability and chaos engineering tools respectively.scripts/
: Automation scripts for building images, deploying services, and other maintenance operations.output.txt
: Represents logs or output from deployment or testing runs.
For a complete view of the repository tree, refer to the output.txt file.
The microservices are the backbone of this platform, each addressing distinct business capabilities. Here is a brief overview:
Service | Language | Description | Directory |
---|---|---|---|
frontend | Go | Serves the website and handles user sessions without signup/login. | ./services/frontend |
cartservice | C# | Manages shopping carts using Redis for quick data retrieval and storage. | ./services/cartservice |
productcatalogservice | Go | Provides product listings, detailed views, and search capabilities. | ./services/productcatalogservice |
currencyservice | Node.js | Converts currency amounts using real-time exchange rates from the European Central Bank. | ./services/currencyservice |
paymentservice | Node.js | Simulates credit card transactions and returns a transaction ID. | ./services/paymentservice |
shippingservice | Go | Estimates shipping costs and simulates the shipping process based on user carts. | ./services/shippingservice |
emailservice | Python | Sends order confirmation emails (mock implementation). | ./services/emailservice |
checkoutservice | Go | Orchestrates the checkout process including payment, shipping, and notifications. | ./services/checkoutservice |
recommendationservice | Python | Provides product recommendations based on items in the shopping cart. | ./services/recommendationservice |
adservice | Java | Serves context-based advertisements to enhance user engagement. | ./services/adservice |
loadgenerator | Python/Locust | Simulates realistic user traffic to test system resilience and performance under load. | ./services/loadgenerator |
Additional components complement the core services by handling networking, monitoring, chaos testing, and storage:
- Cilium: Enhances network security and observability in the Kubernetes cluster.
- Databases: Configurations for ClickHouse, Loki, Postgres, and Redis are provided under the
databases/
directory. - Grafana & Prometheus: Tools for monitoring and alerting with pre-configured dashboards.
- Minio: Provides object storage capabilities.
Automation is key in this project. The scripts/
directory includes scripts for:
- Building Docker Images: (
build-images.sh
) - Listing and Tagging Services: (
list-services.sh
) - Maintenance Operations: (
tapi.sh
)
For detailed usage of these scripts, refer to the Scripts Documentation.
The helm/
directory contains all the necessary Helm charts and Kubernetes manifests required to deploy this multi-service application. The charts are organized to simplify deployments across various environments while ensuring consistency and scalability.
For configuration details and customizations, see the Helm Charts Documentation and the nested README within the helm folder.
Comprehensive documentation is available to guide you through setup, deployment, and maintenance:
- Container Registry: docs/container_registry.md
- Scripts: docs/scripts.md
These documents provide detailed instructions and best practices for managing various aspects of the project.
This project is inspired by and builds upon the open-source Google Cloud Platform Microservices Demo. Please credit the original project where appropriate.