Replies: 1 comment 1 reply
-
|
While I generally support the strategic move to a container-only distribution for Thunder, I have a few practical questions regarding the implementation and its impact on the developer experience:
|
Beta Was this translation helpful? Give feedback.
1 reply
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.
-
Background
Thunder currently provides both binary and container distributions. However, container-based deployments are becoming the norm. This creates a mismatch: we're optimizing for binary distribution during development, but most production users deploy with containers.
This discussion proposes moving to container-only distribution to align our development practices with how Thunder is actually deployed in production.
Problems with Maintaining Both Distributions
1. Split Focus Hurts Container Experience
When developers have binary distribution as the "easy path," container deployment becomes an afterthought. This means:
Impact: Production deployments (which use containers) get a second-class experience despite being our primary use case.
2. Ecosystem Misalignment: Blocks Default Integration with Modern Tools
Thunder should provide a complete, integrated experience out-of-the-box. However, maintaining binary distribution limits what we can bundle by default because modern cloud-native tools distribute primarily or only via containers.
Concrete example - API Gateway for System APIs:
We want Thunder to ship with built-in API gateway protection for its management and system APIs. This should work out-of-the-box without requiring users to:
Current reality with binary distribution:
When evaluating gateway options to integrate by default, we face a problem: most modern, actively-maintained API gateways are container-native. We must either:
With container-only distribution:
We can provide docker-compose and Helm charts where Thunder and the gateway work together by default:
Users run
docker-compose upand get a production-ready setup with the gateway already protecting Thunder's APIs.Impact:
Binary distribution prevents us from delivering the integrated, secure-by-default experience users expect from a modern IAM platform. Instead of shipping a working solution, we're forced to provide integration documentation and hope users configure it correctly.
Similar limitations affect: Observability tools, secret management, and other cloud-native components we want to bundle for a complete platform experience.
3. Development and Maintenance Overhead
Impact: Slower feature development and increased maintenance burden.
4. Architectural Misalignment Blocks Microservices Evolution
Future considerations: As Thunder evolves toward microservices architecture, container-first development becomes even more critical. We can't build a microservices platform while optimizing for monolithic binary deployment.
Thunder's roadmap includes separating the core into smaller microservices. Maintaining binary distribution while building microservices creates fundamental conflicts in how we design, test, and deploy each service.
Getting Started Experience Comparison
Binary Approach
Prerequisites: None
Time to "Hello World": ~2 minutes
Cross-platform: Separate scripts for Linux/Mac (Bash) and Windows (PowerShell)
Container Approach
Prerequisites: Docker (already installed by most developers)
Time to "Hello World": ~2 minutes
Cross-platform: Identical experience across all operating systems
For production evaluation: docker compose, Helm, or OpenChoreo
Addressing the "Docker Prerequisite" Concern
Reality check: Docker/Docker Desktop installation is now standard for developers:
Target audience consideration:
For the rare case where Docker isn't available:
The trade-off:
Proposed Path Forward
Container-Only
✅ Pros:
What We Need from This Discussion
Beta Was this translation helpful? Give feedback.
All reactions