Git Product home page Git Product logo

spring-boot-istio-distributed-tracing-booster's Introduction

Purpose

Showcase Istio's Distributed Tracing capabilities with a set of properly instrumented Spring Boot applications

Prerequisites

Deploy project onto Minishift

    oc new-project demo-istio
    oc adm policy add-scc-to-user privileged -z default -n demo-istio
    mvn clean package fabric8:deploy -Popenshift
    oc expose svc istio-ingress -n istio-system
    oc create -f rules/route-rule-redir.yml    
    open $(minishift openshift service istio-ingress -n istio-system --url)/suggest/

The traces from the invocation of the two endpoints should look like the following:

  • Serial

  • Parallel

Formal description

Serial invocation of dependent micro-services

Actors:

  • User
  • Suggestion Service
  • Album Service
  • Album Details Service
  • Store Service

Triggers: External system invokes the /serial endpoint of the Suggestion Service

Preconditions:

  • All four services have been deployed to the Service Mesh
  • All four services correctly propagate tracing HTTP headers
  • The /serial endpoint of Suggestion Service is visible outside the cluster via an Istio RouteRule
  • The implementation of the /serial endpoint calls the Album Service and the Store Service in a serial fashion

Post-conditions:

  • Once the call to Suggestion Service has completed, then given that the users waits a few seconds, a Trace should show up in the Jaeger UI that will contain Spans from all four services (as well as the Istio proxies)
  • The trace gathered by Istio clearly indicate the Album Service and Store Service were called in serial fashion from the Suggestion Service, thus giving valuable insights into the (non-optimal) implementation of the whole system, as well as providing accurate timing information

Normal flow:

  • The user opens the Istio Distributed Web page
  • The user clicks a button that results in an HTTP call to the /serial endpoint
  • The HTTP call is ultimately handled by the /serial endpoint of the Suggestion Service
  • The implementation of the /serial endpoint calls the Album Service
  • The Album Service calls the Album Details Service
  • The Album Details service responds with some album details
  • The Album Service uses its own data as well the data collected from the Album Details Service to respond to the Suggestion Service
  • After collecting the response from the Album Service, the implementation of the /serial endpoint calls the Store Service
  • The Store Service responds with the store details
  • After collecting the response from the Store Service, the implementation of the /serial endpoint uses both the store and the album data to reply to the issuer of the call
  • Once the call is done, the user navigates to the Jaeger Query UI and views the trace.

Parallel invocation of dependent micro-services

Actors:

  • User
  • Suggestion Service
  • Album Service
  • Album Details Service
  • Store Service

Triggers: External system invokes the /parallel endpoint of the Suggestion Service

Preconditions:

  • All four services have been deployed to the Service Mesh
  • All four services correctly propagare tracing HTTP headers
  • The /parallel endpoint of Suggestion Service is visible outside the cluster via an Istio RouteRule
  • The implementation of the /parallel endpoint calls the Album Service and the Store Service in a parallel fashion

Post-conditions:

  • Once the call to Suggestion Service has completed, then given that the users waits a few seconds, a Trace should show up in the Jaeger UI that will contain Spans from all four services (as well as the Istio proxies)
  • The traces gathered by Istio clearly indicate the Album Service and Store Service were called in parallel fashion from Suggestion Service, thus giving valuable insights into the implementation of the whole system, as well as providing accurate timing information

Normal flow:

  • The user opens the Istio Distributed Web page
  • The user clicks a button that results in an HTTP call to the /parallel endpoint
  • The HTTP call is ultimately handled by the /parallel endpoint of the Suggestion Service
  • The implementation of the /parallel endpoint calls the Album Service
  • The Album Service calls the Album Details Service
  • The Album Details service responds with some album details
  • The Album Service uses its own data as well the data collected from the Album Details Service to respond to the Suggestion Service
  • Concurrently with the call to the Album Service, the implementation of the /parallel endpoint calls the Store Service
  • The Store Service responds with the store details
  • Once both calls to the Album and Store services are fulfilled, the implementation of the /parallel endpoint uses the responses to reply to the issuer of the call
  • Once the call is done, the user navigates to the Jaeger Query UI and views the trace.

spring-boot-istio-distributed-tracing-booster's People

Contributors

geoand avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.