Skip to content

hypertrace/hypertrace-samples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Getting started with Hypertrace

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.

Sample app: Online Boutique (created by Google Cloud)

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.

Deployment instructions

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).

  1. git clone https://github.com/hypertrace/hypertrace-samples.git
  2. cd online-boutique-demo
  3. Run kubectl apply -f ./release/kubernetes-manifests.yaml to deploy the sample app.
  4. Run kubectl get pods to confirm pods are in a Ready state.
  5. Then go to http://127.0.0.1 for web UI.

This is how your application will look like!

Home Page Checkout Screen
Screenshot of store homepage Screenshot of checkout screen

This is how your tracing data will look like on Hypertrace!

You can check out UI & Platform overview section to get more details on features and see insights of online boutique app using Hypertrace.

More information about Online Boutique application!

Architecture

Online Boutique is composed of many microservices written in different languages that talk to each other over gRPC.

space-1.jpg
Microservices Architecture

Service Description Table

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.

Note:

  • 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!

Other samples:

  1. Horod application

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!