Online Boutique is composed of 11 microservices written in different languages that talk to each other over gRPC.
![architecture-diagram](https://private-user-images.githubusercontent.com/80105491/350663217-679f68e9-a3c2-46b2-8ce2-2eb672318eaf.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk5NDkzMTEsIm5iZiI6MTczOTk0OTAxMSwicGF0aCI6Ii84MDEwNTQ5MS8zNTA2NjMyMTctNjc5ZjY4ZTktYTNjMi00NmIyLThjZTItMmViNjcyMzE4ZWFmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE5VDA3MTAxMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA4Y2YzYWFmMTgyNDNiMDUzYWY1YzliMDkzZTEzNmEzZWQwOWE4MDU0NzU0N2YxYTZjZDcxZmI0MGEwMDBkMTcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.KMHDzp2K01QxnMK299pN8jWHUtlu_9ek3qfqJ2bzADc)
Service | Language | Description |
---|---|---|
frontend | Go | Exposes an HTTP server to serve the website. Does not require signup/login and generates session IDs for all users automatically. |
cartservice | C# | Stores the items in the user's shopping cart in Redis and retrieves it. |
productcatalogservice | Go | Provides the list of products from a JSON file and ability to search products and get individual products. |
currencyservice | Node.js | Converts one money amount to another currency. Uses real values fetched from European Central Bank. It's the highest QPS service. |
paymentservice | Node.js | Charges the given credit card info (mock) with the given amount and returns a transaction ID. |
shippingservice | Go | Gives shipping cost estimates based on the shopping cart. Ships items to the given address (mock) |
emailservice | Python | Sends users an order confirmation email (mock). |
checkoutservice | Go | Retrieves user cart, prepares order and orchestrates the payment, shipping and the email notification. |
recommendationservice | Python | Recommends other products based on what's given in the cart. |
adservice | Java | Provides text ads based on given context words. |
loadgenerator | Python/Locust | Continuously sends requests imitating realistic user shopping flows to the frontend. |
Home Page | Checkout Screen |
---|---|
![]() |
![]() |