Codebase

Navigate the Codebase using the tree view. Use the filters to highlight where various files are grouped to aid understanding.

Getting Started Commands

Project Structure

Below is a short description of the key directories of the project to aid you when understanding where key files are located.

CHANGELOG.md, CONTRIBUTING.md, LICENSE, Makefile, README.md, docker-compose.minimal.yml, docker-compose.yml, ide-gen-proto.sh, package-lock.json, package.json, renovate.json5 - These are various configuration and documentation files for the project. The CHANGELOG.md file contains the project's change log, CONTRIBUTING.md explains how to contribute to the project, LICENSE specifies the project's license, Makefile contains build instructions, README.md provides an overview of the project, docker-compose.minimal.yml and docker-compose.yml define the Docker containers and services, and ide-gen-proto.sh is a script for generating protobuf code using an IDE. The package-lock.json and package.json files manage the project's dependencies, and renovate.json5 is a configuration file for the Renovate bot for managing dependencies.
internal/ - This directory contains the internal tools and dependencies of the project. It includes go.mod and go.sum files for managing Go dependencies, and sanitycheck.py for linting and formatting checks.
kubernetes/ - This directory contains the Kubernetes configuration files for deploying the OpenTelemetry demo application. It includes the opentelemetry-demo.yaml file, which defines the deployment, service, and ingress resources.
pb/ - This directory contains the Protocol Buffers (protobuf) files used for defining the API interfaces for the microservices. It includes the demo.proto file, which defines the common messages and services used by the microservices.
src/ - This directory contains the source code for the microservices and applications. Each microservice has its own subdirectory under src/, such as accountingservice/, adservice/, cartservice/, etc. Each subdirectory contains the Go files for the microservice, such as main.go, tools.go, and the necessary configuration files like Dockerfile and README.md.
test/ - This directory contains the test files for the microservices and applications. It includes subdirectories for each microservice, such as tracetesting/ad-service/, tracetesting/cart-service/, etc. Each subdirectory contains the test files for the corresponding microservice, such as Dockerfile, cli-config.yml, and run.bash.

Entrypoints

Below are files we identified as entrypoints for to the codebase. This is where the application starts and a good place to start when learning.

src/accountingservice/main.go - This file is the entry point for the Go implementation of the accountingservice. It initializes resources and tracer provider, and starts the main function.
src/checkoutservice/main.go - This file is the entry point for the Go implementation of the checkoutservice. It initializes resources, tracer provider, meter provider, and starts the main function.
src/productcatalogservice/main.go - This file is the entry point for the Go implementation of the productcatalogservice. It initializes resources, tracer provider, meter provider, and starts the main function. It also reads product files and creates a client.