The best part in getting started with Hypertrace is that it's really quick! If you are already using a tracing system, you can start today. Hypertrace accepts all major data formats: Jaeger, OpenTracing, Zipkin, you name it. Even if you aren’t tracing yet, we have a bunch of sample apps you can start with, and a chat room of excited people who want to meet you. Here we will tell you how you can get started with Online Boutique sample app which is one of our trace enabled sample applications.
Online Boutique is one of our trace enabled sample applications. It includes typical ecommerce functionality, including a product catalog and a way for customers to check out in different currencies This application uses different languages to highlight the diversity in micro service architecture: Golang, C++, C#, Python, Java and other programming languages. Whatever your application is written in, you can see its requests in Hypertrace.
If you want to start your own online boutique, sorry! This doesn’t include authentication, credit card processing and features in the real world! However, we can use this to understand hypertrace and get you started with distributed tracing.
Use pre-built public container images that are easy to deploy by deploying the release manifest directly to an existing K8s cluster.
Prerequisite: A running Kubernetes cluster (local or cloud).
git clone https://github.com/hypertrace/hypertrace-samples.git
cd online-boutique-demo
- Run
kubectl apply -f ./release/kubernetes-manifests.yaml
to deploy the sample app. - Run
kubectl get pods
to confirm pods are in a Ready state. - Then go to http://127.0.0.1 for web UI.
Home Page | Checkout Screen |
---|---|
You can check out UI & Platform overview section to get more details on features and see insights of online boutique app using Hypertrace.
Online Boutique is composed of many microservices written in different languages that talk to each other over gRPC.
Microservices Architecture |
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 currency to another. Uses real values fetched from European Central Bank. It's the highest QPS service. |
paymentservice | Node.js | Charges the given credit card (mock) with the given amount and returns a transaction ID. |
shippingservice | Go | Gives shipping cost estimates based on the shopping cart items. 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 shopping cart items. |
adservice | Java | Provides text ads based on given context words. |
loadgenerator | Python/Locust | Continuously sends requests imitating realistic user shopping flows to the frontend. |
- Are you facing any issue with this? Let's discuss it on slack
- If you want to try more apps you can try apps from this sample apps repo!
Are you still confused with Instrumentation jargon? Ahh! We have you covered! Jump to Instrumentation section which will tell you about what is instrumentation and how you can get started with instrumenting your application!