CoolSox is a cloud-native microservices demo application that consists of a 14-tier microservices application. The application is a web-based e-commerce app where users can browse and buy socks.
The application is used to demonstrate the use of Full Stack Observability (FSO) and Infrastructure as Code (IaC) technologies like AppDynamics, Thousand Eyes, Intersight Workload Optimizer (IWO), Terraform, etc.. This application works on any Kubernetes (k8s) cluster.
The CoolSox application is based on the original open-source microservices demo from Weaveworks.
Please note that the documentation and automation of application instrumentation, etc. are work in progress
In case of questions or comments, then please contact
- [Richard Watson] (mailto:[email protected])
- Morten Skriver
- Peter Charpentier
- Kubernetes: The application is designed to run on Kubernetes
- AppDynamics for Application, End-User Experience, Database, and Cluster Visibility: The Kubernetes cluster is instrumented with AppDynamics cluster-agent to monitor the health of the entire cluster, including every node and namespace down to the container level. The cluster-agent is also used to auto-instrument the Java, NodeJS, and .Net components of the CoolSox applcation. Get your AppDynamics free trial here.
- ThousandEyes for external Network Visibility and End-User Experience: ThousandEyes Browser Synthetics simulates users interacting with the application. ThousandEyes Cloud Agents are deployed, across the globe, to simulate these interactions and provide metrics, such as availability, response time, latency, transaction times, errors. Get your ThousandEyes free trial here.
- Intersight Workload Optimizer (IWO) for Application Resource Management: IWO provides a holistic overview of your data center, both on-prem and in public cloud, and allows you to automatically right-size your workload resources based on the applications actual demand. This includes both vertical and horizontal pod scaling.
- ThousandEyes & AppDynamics Integration for complete application service visibility: ThousandEyes alerts are natively configured to trigger alerts in AppDynamics to correlate external network and user experience problems with internal application metrics.
- Synthetic Load Generation: The application demo comes with a background job that creates realistic usage patterns on the website using load generator(s).
This repository contains a number of directories that are used to separate the FSO with CoolSox demonstration into logical individual components.
- application: Contains all components directly related to the CoolSox application
- helm: Contains Helm scripts that can be used to deploy the application onto a Kubernetes cluster
- src: Contains the source required to build/re-build the application containers
The CoolSox application is composed of 14 containers written in different languages that talk to each other using REST over HTTP.
Service | Language | Description |
---|---|---|
front-end | NodeJS | Exposes an HTTP server to serve the website, in order to track order history, etc. must a user be created and logged in. A flavor of the front-end exist which has AppDynamics Browser RUM agent included |
order | Java / .NET Core | |
order-db | MongoDB | Database backend for order tier |
payment | Go | Handles payment (mock, as not credit card are actually charged in this demo) |
user | Go | Handles creating of retrival of user information. |
user-db | MongoDB | Database backend for user tier |
catalogue | Go | Exposes the catalogue to the front-end |
catalogue-db | MySQL | Database backend for catalogue tier |
cart | Java | Stores the items in the user's shopping cart in MongoDB and retrieves it. |
cart-db | MongoDB | Database backend for cart tier |
shipping | Java | Handles shipping of orders when they are received from the orders tier |
queue-master | Java | Controls the shipment queue |
rabbitmq | RabbitMQ | Message queu between the shipping and queue-master tiers |
The CoolSox application has the following default users defined:
Username | Password |
---|---|
user | password |
user1 | password |
Eve_Berger | eve |