Replies: 3 comments
-
|
+1 with the chosen approach. My suggestion is to modularize the services and expose them as public packages. The Thunder repository itself can then provide distributions such as thunder and thunder-sts, differentiated via separate main.go entry points. This approach also enables open-source developers to build their own identity solutions by composing only the features they need using the exposed packages. I’m not aligned with having a thunder-gov distribution within the Thunder repository itself; that would be better maintained as a separate repository. I was referring to the backend. When implementing we might need a way that the console would be able to figure out what are the available features from the runtime |
Beta Was this translation helpful? Give feedback.
-
|
If I understand correctly, we are trying to achieve 2 objectives.
Chosen approach achieves both, but practically I think the number of Deployment Profiles we can maintain with that approach will be limited. Also, for a majority of Thunder deployments, in my opinion 2 will not be of high importance given the current binary size and resource consumption. But more would benefit from 1. I suspect the number of feature combinations required for different such deployments might be more than we can practically provide with the selected approach. For such cases, alternative 1 could be a reasonable solution. My suggestion is to treat I'm +1 to start with the chosen approach. As Thunder gets adopted we can gauge whether the statement |
Beta Was this translation helpful? Give feedback.
-
|
Also, have we thought about whether we maintain profile specific sql schemas and API specs (maybe this is less important) as well? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Related Feature Issue
#1114
Problem Summary
Platform operators deploying Thunder for specific use cases (government compliance, service-to-service auth, token validation) must deploy the full Thunder distribution with all endpoints exposed. This increases attack surface, binary size, and resource consumption - making Thunder unsuitable for compliance-focused or resource-constrained deployments.
This design proposes Deployment Profiles - separate Thunder binaries (for example
thunder-sts,thunder-gov) that include only required capabilities.High-Level Approach
Code Structure
backend/cmd/<profile>/for each profileinit_sts.go) in internal packages to customize capabilities per profilebackend/cmd/serverto a shared locationBuild & Deployment
build_sts,build_gov) for building profile binariesdeployment.yamlwith minimal database dependenciesTesting
Architecture Overview
Directory Structure
Profile Capabilities
Database Dependencies
Security Considerations
Impacted Areas
Alternatives Considered
Alternative 1: Configuration-based feature flags
Alternative 2: Go build tags
Alternative 3: Plugin architecture
Chosen Approach: Separate binaries with explicit init files
Questions for Community Input
No response
Beta Was this translation helpful? Give feedback.
All reactions