-
Notifications
You must be signed in to change notification settings - Fork 0
Client Management
This guide covers the client management system in the Flux Gate, which handles external applications and services that consume feature toggle configurations.
Clients represent external applications, services, or systems that connect to the Flux Gate system to retrieve feature configurations. The client management system provides authentication, configuration, and monitoring capabilities for these integrations.
Client management is available to users with appropriate permissions:
- Admin: Full client management across all teams
- Team Members: Can manage clients within their assigned teams
- Team Admin: Client management within team scope
Clients are external systems that integrate with the Feature Toggle system:
- Applications: Web apps, mobile apps, desktop applications
- Services: Microservices, APIs, background services
- Infrastructure: Load balancers, proxies, CDN configurations
- Testing Tools: Automated testing systems, CI/CD pipelines
Each client has:
| Property | Description |
|---|---|
| Client ID | Unique identifier for the client |
| Name | Human-readable client name |
| Description | Purpose and details about the client |
| API Keys | Authentication credentials |
| Team Scope | Associated team for access control |
| Status | Active/inactive status |
- Navigation: Go to Clients page
- Clients Table: View all clients for your teams
- Actions: Create, edit, and manage clients
The clients table displays:
| Column | Description |
|---|---|
| Name | Client name/identifier |
| Description | Client purpose or description |
| Status | Active/inactive status |
| API Key | Client authentication key |
| Actions | Edit, configure, manage client |
- Navigate: Go to Clients page
- Create Button: Click "Create New Client"
- Client Form: Fill out client creation form
| Field | Required | Description |
|---|---|---|
| Name | β | Descriptive client name |
| Description | β | Purpose and details about the client |
| Client Type | β | Application type (Web, Mobile, Service, etc.) |
Name: Web Application Frontend
Description: Main web application frontend client for user-facing features
Client Type: Web Application
Name: Mobile iOS App
Description: iOS mobile application client for feature toggle integration
Client Type: Mobile Application
Name: Payment Service API
Description: Backend payment processing service requiring feature flags
Client Type: Microservice
- Basic Information: Enter client name and description
- Client Configuration: Set client type and properties
- API Key Generation: System generates unique API key
- Team Assignment: Assign client to appropriate team
- Save Client: Create and activate the client
Each client receives authentication credentials:
| Property | Description |
|---|---|
| Key Value | Unique authentication string |
| Creation Date | When the key was generated |
| Last Used | Most recent authentication timestamp |
| Status | Active/revoked status |
- Unique Generation: Cryptographically secure key generation
- Secure Storage: Keys stored securely in the system
- Rotation Support: Keys can be rotated for security
- Access Logging: API key usage is logged and monitored
Client authentication follows standard patterns:
- API Key: Client includes API key in requests
- Validation: Server validates key against client database
- Authorization: Check client permissions and team access
- Feature Access: Provide feature configurations for client's team
- Logging: Record access for monitoring and auditing
Clients can be configured with various settings:
| Setting | Description | Options |
|---|---|---|
| Status | Client activation status | Active, Inactive |
| Description | Client purpose documentation | Text description |
| Team Assignment | Associated team | Team selection |
| Setting | Description | Purpose |
|---|---|---|
| Rate Limiting | Request rate limits | Prevent abuse |
| Feature Filtering | Limit feature access | Security control |
| Environment Scope | Restrict environments | Environment isolation |
| Cache Settings | Response caching | Performance optimization |
- Clients Table: Find client to edit
- Edit Action: Click edit button in actions column
- Edit Form: Modify client properties
- Name: Update client name/identifier
- Description: Modify client purpose description
- Status: Enable/disable client access
- API Key Rotation: Generate new API key
- Access Permissions: Modify client permissions
- Team Assignment: Change team association
- Environment Access: Control environment visibility
- Feature Filtering: Limit feature access
- Rate Limiting: Adjust request limits
Monitor client usage and performance:
| Metric | Description |
|---|---|
| Request Count | Number of API requests |
| Feature Requests | Feature configuration requests |
| Error Rate | Failed request percentage |
| Response Time | Average API response time |
| Pattern | Description |
|---|---|
| Peak Usage | High-traffic time periods |
| Feature Popularity | Most requested features |
| Environment Distribution | Usage across environments |
| Geographic Distribution | Client location patterns |
Track client system health:
- Connection Status: Active/inactive connection status
- Last Activity: Most recent client activity
- Error Patterns: Common error types and frequencies
- Performance Trends: Response time and throughput trends
Common client integration patterns:
// Client polls for feature updates
setInterval(async () => {
const features = await fetchFeatures(apiKey);
updateLocalFeatureCache(features);
}, 30000); // Poll every 30 seconds// Server pushes updates to client
app.post('/feature-updates', (req, res) => {
const updatedFeatures = req.body;
updateFeatureCache(updatedFeatures);
res.status(200).send('OK');
});// Using feature toggle SDK
import { FeatureToggleClient } from 'feature-toggle-sdk';
const client = new FeatureToggleClient({
apiKey: 'your-client-api-key',
environment: 'production'
});
const isFeatureEnabled = await client.isEnabled('new-checkout-flow');Configure clients using SDKs:
const config = {
apiKey: process.env.FEATURE_TOGGLE_API_KEY,
baseUrl: 'https://feature-toggle.company.com',
environment: process.env.NODE_ENV,
pollingInterval: 30000,
cacheEnabled: true
};// iOS Swift example
let config = FeatureToggleConfig(
apiKey: "your-api-key",
environment: "production",
pollingInterval: 30.0
)Implement proper client security:
- Secure Storage: Store API keys securely (environment variables, secure vaults)
- Rotation: Regularly rotate API keys
- Scope Limitation: Limit key permissions to minimum required
- Monitoring: Monitor API key usage for anomalies
- HTTPS Only: Always use HTTPS for API communication
- IP Whitelisting: Restrict access to known IP ranges
- Rate Limiting: Implement request rate limiting
- DDoS Protection: Protect against denial of service attacks
- Encryption: Encrypt sensitive feature data
- Access Logging: Log all client access attempts
- Audit Trails: Maintain detailed audit logs
- Data Minimization: Only provide necessary feature data
- Registration: Create new client with appropriate configuration
- Configuration: Set up client permissions and settings
- Integration: Implement client-side integration code
- Testing: Validate client integration in test environments
- Production: Deploy client to production environment
- Monitoring: Track client performance and usage
- Maintenance: Update configuration as needed
- Retirement: Safely remove unused clients
Regular maintenance activities:
- Performance Review: Monitor client performance metrics
- Security Audits: Review client access patterns and security
- Configuration Updates: Update client settings as needed
- Key Rotation: Rotate API keys according to security policies
Manage multiple clients efficiently:
- Bulk Status Changes: Enable/disable multiple clients
- Batch Key Rotation: Rotate keys for multiple clients
- Configuration Templates: Apply standard configurations
- Team Transfers: Move clients between teams
Authentication Failed
Error: Invalid API key
Solution: Verify API key is correct and client is active.
Access Denied
Error: Client not authorized for this feature
Solution: Check client team assignment and feature permissions.
Rate Limited
Error: Too many requests
Solution: Implement request throttling or increase rate limits.
Feature Not Found
Error: Feature not available for client
Solution: Verify feature exists and client has access to feature's team.
Configuration Errors
Error: Invalid client configuration
Solution: Review client settings and fix configuration errors.
Network Connectivity
Error: Cannot connect to feature toggle service
Solution: Check network connectivity and service availability.
- Descriptive Naming: Use clear, descriptive client names
- Proper Scoping: Assign clients to appropriate teams
- Documentation: Document client purpose and integration details
- Environment Separation: Use separate clients for different environments
- Key Management: Implement secure API key management
- Access Control: Limit client permissions to minimum required
- Monitoring: Monitor client access and usage patterns
- Incident Response: Have procedures for security incidents
- SDK Usage: Use official SDKs when available
- Caching: Implement local feature caching for performance
- Fallback Behavior: Define behavior when service is unavailable
- Error Handling: Implement robust error handling
- Efficient Polling: Use appropriate polling intervals
- Conditional Requests: Use ETags or similar for conditional requests
- Compression: Enable response compression
- Connection Pooling: Reuse connections when possible
- Team Management - Managing client team assignments
- Feature Toggle Management - Features accessible to clients
- Environment Management - Client environment access
- API Reference - Technical API documentation
Need help? Check the Troubleshooting guide or create an issue in the project repository.