Files
foxhunt/deployment/README.md
jgrusewski 8cf9437c78 🔧 Partial fixes: S3 integration, SIMD improvements, field access corrections
- Restored S3 storage functionality with AWS SDK
- Fixed field access issues (removed underscore prefixes)
- Created Benzinga historical module
- Initial SIMD optimization (needs consolidation)
- Fixed multiple compilation errors

PENDING: SIMD consolidation, config centralization, shared libraries
2025-09-25 01:05:32 +02:00

353 lines
10 KiB
Markdown

# FOXHUNT HFT TRADING SYSTEM - DEPLOYMENT ARTIFACTS
This directory contains all the deployment artifacts needed to deploy the Foxhunt HFT Trading System to production environments. The system supports multiple deployment modes with comprehensive monitoring and health checking.
## 🎯 Quick Start
For a standard production deployment:
```bash
# 1. Build optimized release binaries
./deployment/build_release.sh --cpu-target native
# 2. Deploy to production (bare-metal, recommended for HFT)
sudo ./deployment/deploy_production.sh --mode bare-metal
# 3. Set up monitoring
./deployment/monitoring_setup.sh --mode docker
# 4. Verify deployment health
./deployment/health_check.sh --mode comprehensive
```
## 📁 Deployment Artifacts
### Core Deployment Scripts
| File | Description | Usage |
|------|-------------|-------|
| `build_release.sh` | Builds optimized release binaries | `./build_release.sh --cpu-target native` |
| `deploy_production.sh` | Complete production deployment | `sudo ./deploy_production.sh --mode bare-metal` |
| `health_check.sh` | Comprehensive health monitoring | `./health_check.sh --mode comprehensive` |
### Docker & Container Support
| File | Description | Usage |
|------|-------------|-------|
| `Dockerfile.production` | Multi-stage production Docker builds | Used by `build_docker_images.sh` |
| `build_docker_images.sh` | Docker image build automation | `./build_docker_images.sh --service all` |
### System Integration
| File | Description | Usage |
|------|-------------|-------|
| `create_systemd_services.sh` | SystemD service file generator | `./create_systemd_services.sh` |
| `monitoring_setup.sh` | Monitoring stack deployment | `./monitoring_setup.sh --mode docker` |
### Documentation & Checklists
| File | Description |
|------|-------------|
| `DEPLOYMENT_CHECKLIST.md` | Comprehensive deployment checklist |
| `README.md` | This deployment guide |
## 🚀 Deployment Modes
### 1. Bare-Metal Deployment (Recommended for HFT)
**Best Performance**: Sub-50μs latency, direct hardware access
```bash
# Build optimized binaries
./deployment/build_release.sh --cpu-target native
# Deploy as SystemD services
sudo ./deployment/deploy_production.sh --mode bare-metal --env production
```
**Features:**
- CPU affinity optimization
- Hardware timing (RDTSC)
- Memory lock capabilities
- Priority scheduling
- Direct network access
### 2. Docker Deployment
**Development/Testing**: Easy deployment and scaling
```bash
# Build Docker images
./deployment/build_docker_images.sh --service all --enable-gpu
# Deploy with Docker Compose
./deployment/deploy_production.sh --mode docker --env production
```
**Features:**
- Container isolation
- Resource limits
- Easy scaling
- Consistent environments
### 3. Kubernetes Deployment
**Cloud/Enterprise**: Orchestrated container deployment
```bash
# Build and push images
./deployment/build_docker_images.sh --service all --push --registry your-registry.com
# Deploy to Kubernetes
./deployment/deploy_production.sh --mode k8s --env production
```
**Features:**
- Auto-scaling
- Service discovery
- Rolling updates
- High availability
## 🏗️ Architecture Overview
The Foxhunt HFT system consists of four main services:
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Trading │ │ ML Training │ │ Backtesting │
│ Service │◄──►│ Service │◄──►│ Service │
│ (Port 8080) │ │ (Port 8082) │ │ (Port 8083) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
▲ ▲ ▲
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ TLI │ │ PostgreSQL │ │ Redis │
│ (Port 8081) │ │ (Port 5432) │ │ (Port 6379) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
### Service Details
| Service | Binary | HTTP Port | gRPC Port | Metrics Port | Purpose |
|---------|--------|-----------|-----------|--------------|---------|
| Trading | `trading_service` | 8080 | 50051 | 9090 | Core trading engine |
| ML Training | `ml_training_service` | 8082 | 50052 | 9091 | ML model training |
| Backtesting | `backtesting_service` | 8083 | 50053 | 9092 | Strategy testing |
| TLI | `tli` | 8081 | 50054 | 9093 | Management interface |
## 🔧 Configuration Management
### Environment Variables
Core system configuration through environment variables:
```bash
# Application Configuration
FOXHUNT_ENV=production
FOXHUNT_CONFIG_PATH=/opt/foxhunt/config
FOXHUNT_DATA_PATH=/opt/foxhunt/data
# Performance Configuration
FOXHUNT_LATENCY_TARGET_MS=50
FOXHUNT_THREAD_POOL_SIZE=0 # Auto-detect
FOXHUNT_MAX_CONNECTIONS=1000
# Database Configuration
DATABASE_URL=postgresql://foxhunt:password@localhost:5432/foxhunt
REDIS_URL=redis://localhost:6379/0
INFLUXDB_URL=http://localhost:8086
# Security Configuration
FOXHUNT_SECURITY_ENABLED=true
FOXHUNT_TLS_ENABLED=true
VAULT_ADDR=http://localhost:8200
```
### Configuration Files
Configuration files are deployed to `/opt/foxhunt/config/`:
- `trading.toml` - Trading service configuration
- `ml.toml` - ML training parameters
- `backtesting.toml` - Backtesting settings
- `tli.toml` - TLI interface configuration
## 📊 Monitoring & Observability
### Health Checking
```bash
# Quick health check
./deployment/health_check.sh
# Comprehensive health check
./deployment/health_check.sh --mode comprehensive --verbose
# Continuous monitoring
./deployment/health_check.sh --mode continuous
# JSON output for automation
./deployment/health_check.sh --format json > health.json
```
### Monitoring Stack
Deploy complete monitoring with Prometheus, Grafana, and AlertManager:
```bash
# Deploy monitoring stack
./deployment/monitoring_setup.sh --mode docker --grafana-password mypassword
# Access monitoring
# Grafana: http://localhost:3000 (admin/mypassword)
# Prometheus: http://localhost:9090
# AlertManager: http://localhost:9093
```
### Key Metrics Monitored
- **Trading Latency**: < 50μs target, < 100μs critical
- **Order Processing Rate**: Orders per second
- **System Resources**: CPU, Memory, Disk usage
- **Service Availability**: HTTP/gRPC health checks
- **Database Performance**: Query response times
- **ML Model Accuracy**: Model performance metrics
## 🔒 Security Considerations
### Production Security Checklist
- [ ] Services run as non-root user (`foxhunt`)
- [ ] File permissions properly restricted
- [ ] Network access limited to required ports
- [ ] SSL/TLS encryption enabled
- [ ] Secrets stored in HashiCorp Vault
- [ ] Audit logging enabled
- [ ] Regular security updates applied
### Security Hardening
SystemD services include security hardening:
- `NoNewPrivileges=yes`
- `ProtectSystem=strict`
- `PrivateTmp=yes`
- `RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX`
- Memory execution protection
- System call filtering
## 🔄 Deployment Workflows
### Initial Production Deployment
1. **Pre-deployment** (Use `DEPLOYMENT_CHECKLIST.md`)
- [ ] Hardware validation
- [ ] Network configuration
- [ ] Security setup
- [ ] Database preparation
2. **Build & Deploy**
```bash
# Build optimized binaries
./deployment/build_release.sh --cpu-target native
# Deploy to production
sudo ./deployment/deploy_production.sh --mode bare-metal
```
3. **Post-deployment**
```bash
# Setup monitoring
./deployment/monitoring_setup.sh
# Comprehensive health check
./deployment/health_check.sh --mode comprehensive
```
### Rolling Updates
For zero-downtime updates:
```bash
# Build new binaries
./deployment/build_release.sh --cpu-target native
# Rolling deployment
sudo ./deployment/deploy_production.sh --mode bare-metal --rolling-update
```
### Rollback Procedures
```bash
# Rollback to previous deployment
sudo ./deployment/deploy_production.sh --rollback
```
## 🚨 Troubleshooting
### Common Issues
| Issue | Solution |
|-------|----------|
| Service won't start | Check `journalctl -f -u foxhunt-<service>` |
| High latency | Verify CPU affinity and frequency scaling |
| Memory issues | Check SystemD memory limits |
| Database connectivity | Verify PostgreSQL/Redis status |
| Permission errors | Check file ownership (`chown foxhunt:foxhunt`) |
### Log Locations
- **SystemD Logs**: `journalctl -f -u foxhunt-*`
- **Application Logs**: `/opt/foxhunt/logs/`
- **System Logs**: `/var/log/foxhunt/`
### Performance Debugging
```bash
# Check service performance
./deployment/health_check.sh --mode comprehensive --verbose
# Monitor real-time metrics
curl http://localhost:9090/metrics
# Check system resources
htop
iostat -x 1
```
## 📋 Production Readiness Checklist
Before going live, ensure all items in `DEPLOYMENT_CHECKLIST.md` are completed:
- [ ] Infrastructure validated
- [ ] Services deployed and healthy
- [ ] Security hardening applied
- [ ] Monitoring configured
- [ ] Backup procedures tested
- [ ] Disaster recovery plan ready
- [ ] Team training completed
- [ ] Documentation updated
## 🔗 Related Documentation
- [DEPLOYMENT_CHECKLIST.md](DEPLOYMENT_CHECKLIST.md) - Complete deployment checklist
- [../README.md](../README.md) - Project overview
- [../docs/](../docs/) - Technical documentation
- [../CLAUDE.md](../CLAUDE.md) - Project instructions
## 🆘 Support
For deployment issues:
1. Check the troubleshooting section above
2. Review service logs: `journalctl -f -u foxhunt-*`
3. Run comprehensive health check: `./deployment/health_check.sh --mode comprehensive`
4. Consult the deployment checklist for missed steps
---
**Deployment Version**: 1.0.0
**Last Updated**: $(date)
**Compatible with**: Foxhunt HFT v1.0.0
*This deployment package enables production-ready deployment of the Foxhunt HFT Trading System with comprehensive monitoring, security, and operational excellence.*