OpenTelemetry Light Branch #2931
kerneljack
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hello, I created this to enable us to have a more in-depth discussion of how we could go about creating a light branch of the repo.
Since there's a lot of apps and I don't have deep knowledge of how they all work, I asked Claude Code to analyse them for me and suggest ways a light branch could be created based on this initial Github issue: #2195
Implementation Approaches
1. Docker Compose Profiles (Community-preferred)
Add
profilesto services in the maindocker-compose.yml:Usage:
2. Separate Compose Override File (Simplest)
Create
docker-compose.light.ymlthat only includes the 5 core services + minimal dependencies:Proposed light services:
docker-compose.minimal.ymlexists)3. Make Services Standalone-capable (Most Robust)
Modify services to gracefully handle missing dependencies:
Changes needed:
depends_onoptional via environment variables4. Makefile Targets with Service Composition
Add new targets that compose the right services:
5. Environment Variable Configuration
Use
.env.lightto disable services:Combined with conditional service definitions in compose.
Suggested Approach
The suggestion is to implement a combination of 1 & 3 but of course we can discuss this further.
After i got additional feedback from @julianocosta89 I asked Claude not to create more
docker-composefiles, but rather to modify the existingminimalfile instead. This is the output after that:Constraints from Community Feedback
Based on maintainer feedback, the implementation must:
docker-compose.minimal.yml- no new compose filesCurrent Service Analysis
Services in
docker-compose.minimal.yml(27 total)Core Business Services
Non-Essential Business Services
Infrastructure Services
Observability Stack
Recommended "Light" Configuration
Services to Keep (~8-12 services, ~1.5-2GB RAM)
Core Shopping Flow:
Essential Infrastructure:
Observability Stack:
Services to Remove (~1.5GB+ savings)
Total potential savings: ~1.3-1.5GB RAM
Implementation Challenges
Hard Dependencies in Checkout Service
The checkout service (
src/checkout/main.go) has hard dependencies:depends_on: cart: condition: service_started currency: condition: service_started email: condition: service_started payment: condition: service_started product-catalog: condition: service_started shipping: condition: service_startedTo remove
email, the checkout service would need code changes to make email optional.Frontend Dependencies
The frontend has dependencies on:
These can likely be removed more easily if the frontend gracefully handles missing services.
Next Steps
Beta Was this translation helpful? Give feedback.
All reactions