Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of the Traced Services #1

Merged
merged 37 commits into from
Apr 15, 2022
Merged

Conversation

moritzsternemann
Copy link
Member

@moritzsternemann moritzsternemann commented Feb 10, 2022

Implementation of the Traced Services

This PR introduces the Apodini HotROD (rides on demand) example, mirroring functionality of the official Jaeger HotROD example. The example is used to showcase the automated distributed tracing functionality of Apodini and consists of four distinct microservices:

graph TD
    A(frontend) --> B(customer)
    A --> C(driver)
    A --> D(route)
Loading
  • frontend serves the user interface and provides the API to request a ride, retrieving information from the other services.
  • customer mimics a database service the holds the directory of customers.
  • driver is used to retrieve a list of the nearest drivers by mimicing a Redis interface.
  • route returns the ETA for a given pickup and dropoff location.

For further information on service functionality, see the Jaeger HotROD Example README.

Tracing

When interacting with the service, request handling is traced using the OpenTelemetry Collector as the tracing backend. The collector forwards traces to the Jaeger instance that is exposed on port 16686.

The Jaeger user interface displays the collected traces. Each driver request in the HotROD user interface is displayed with a find trace link which opens the trace of the respective request in the Jaeger user interface.

Development

The docker-compose-jaeger.yml file can be used to run the OpenTelemetry collector and Jaeger locally using $ docker compose -f docker-compose-jaeger.yml up.

The docker-compose-development.yml file can be used to test the setup by building the web services locally and running the OpenTelemetry collector and Jaeger using $ docker compose -f docker-compose-development.yml up.

Related PRs

Reviewer Nudging

I suggest to review the services "bottom-up". Start with cross-service utils in the Utils folder. Then continue with the route, customer, and driver services. Lastly, check out the frontend service.

@PSchmiedmayer PSchmiedmayer marked this pull request as ready for review April 15, 2022 11:14
@PSchmiedmayer PSchmiedmayer self-requested a review April 15, 2022 11:14
@PSchmiedmayer PSchmiedmayer enabled auto-merge (squash) April 15, 2022 13:38
@PSchmiedmayer PSchmiedmayer merged commit e0e6308 into develop Apr 15, 2022
@PSchmiedmayer PSchmiedmayer deleted the implementation branch April 15, 2022 13:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants