Struxel-Hosted Deployment
Overview
Struxel-hosted deployment is our fully managed SaaS offering. We handle all infrastructure, scaling, monitoring, backups, and AI services.
Customer Time to Value: 2-4 weeks
Customer DevOps Required: None
Customer Infrastructure Cost: $0
Deployment Architecture
```
Customer → CloudFlare → AWS ALB → ECS Services → RDS/ElastiCache
↓
AWS Bedrock
Google Gemini
```
Our AWS Account:
- Region: us-east-1 (primary), us-west-2 (DR)
- VPC: Dedicated per customer
- Multi-AZ for high availability
- Automated backups (daily snapshots)
- Disaster recovery to us-west-2
What We Manage
Infrastructure
- ✅ AWS ECS cluster (Fargate)
- ✅ Application Load Balancers
- ✅ RDS PostgreSQL (Multi-AZ)
- ✅ ElastiCache Redis (Cluster mode)
- ✅ S3 buckets (assets + backups)
- ✅ CloudFront CDN
- ✅ Route53 DNS
- ✅ WAF + DDoS protection
- ✅ VPC + security groups
Application
- ✅ Frontend deployment
- ✅ API deployment
- ✅ All 31 product containers
- ✅ Demo service
- ✅ PDF generator
- ✅ Background workers
Data
- ✅ Database migrations
- ✅ Daily backups (retained 30 days)
- ✅ Point-in-time recovery (7 days)
- ✅ Disaster recovery (RTO: 4 hours, RPO: 15 minutes)
AI Services
- ✅ AWS Bedrock integration
- ✅ Google Gemini integration
- ✅ Automatic failover
- ✅ Cost optimization
- ✅ API key management
Monitoring
- ✅ DataDog APM
- ✅ CloudWatch logs
- ✅ Sentry error tracking
- ✅ PagerDuty alerting
- ✅ 24/7 on-call team
Security
- ✅ SSL certificates (auto-renewal)
- ✅ Encryption at rest (all data)
- ✅ Encryption in transit (TLS 1.3)
- ✅ SOC2 Type II compliance
- ✅ GDPR compliance
- ✅ Penetration testing (annual)
- ✅ Vulnerability scanning (continuous)
Customer Onboarding Process
Step 1: Contract Signed
- Sales provides customer details
- Finance creates Stripe subscription
- Provisioning ticket auto-created
Step 2: Environment Provisioning (Day 1-2)
Automated by our systems:
```bash
Triggered via API call
POST /api/provisioning/create-customer-environment
{
"customer_id": "cust_ABC123",
"customer_name": "Acme Corp",
"products": ["bias-engine-ai", "risk-forecast-ai"],
"deployment_type": "struxel-hosted",
"region": "us-east-1"
}
System automatically:
- Creates dedicated VPC
- Provisions RDS instance
- Creates ElastiCache cluster
- Deploys ECS services
- Configures load balancers
- Sets up CloudFront distribution
- Generates SSL certificate
- Creates customer database
- Seeds product configurations
- Sends setup complete notification
```
What gets created:
- Customer subdomain: `acme.struxel.app`
- Database: `acme_prod`
- ECS cluster: `struxel-acme-prod`
- S3 bucket: `struxel-acme-prod-assets`
Step 3: Product Configuration (Day 3-5)
Done by customer success team:
- Configure product settings
- Set up integrations (MLflow, SageMaker, etc.)
- Import customer data (optional)
- Configure SSO (SAML/OIDC)
- Set up RBAC permissions
- Configure alerting
Step 4: Customer Training (Day 6-10)
- Live onboarding session (2 hours)
- Product-specific training (1 hour per product)
- Admin training (1 hour)
- Q&A session
Step 5: Go Live (Day 11-14)
- Final smoke tests
- Customer acceptance testing
- Production cutover
- Monitor first 48 hours
Technical Specifications
Infrastructure Specs
Frontend (ECS Service):
- Container: `ghcr.io/struxel-dynamics/struxel-frontend:latest`
- Replicas: 3 (auto-scale 3-10)
- CPU: 512 units
- Memory: 1GB
- Port: 80 (HTTP) → ALB handles HTTPS
API (ECS Service):
- Container: `ghcr.io/struxel-dynamics/struxel-api:latest`
- Replicas: 5 (auto-scale 5-20)
- CPU: 1024 units
- Memory: 2GB
- Port: 8000
Product Services (31 ECS Services):
- Each product runs as separate ECS service
- Example: `ghcr.io/struxel-dynamics/bias-engine:latest`
- Replicas: 2 (auto-scale 2-5)
- CPU: 512-1024 units (varies by product)
- Memory: 1-4GB (varies by product)
Database (RDS PostgreSQL):
- Instance: db.t3.large (baseline), db.r5.xlarge (heavy load)
- Storage: 500GB (auto-scale to 3TB)
- Multi-AZ: Yes
- Automated backups: Daily at 2am UTC
- Backup retention: 30 days
- Encryption: AES-256
Cache (ElastiCache Redis):
- Node type: cache.r5.large
- Cluster mode: Enabled (3 shards, 1 replica each)
- Encryption: At-rest + in-transit
- Auto-failover: Enabled
Network Configuration
```yaml
VPC CIDR: 10.0.0.0/16
Subnets:
Public (ALB):
- 10.0.1.0/24 (us-east-1a)
- 10.0.2.0/24 (us-east-1b)
- 10.0.3.0/24 (us-east-1c)
Private (ECS):
- 10.0.10.0/24 (us-east-1a)
- 10.0.11.0/24 (us-east-1b)
- 10.0.12.0/24 (us-east-1c)
Database (RDS):
- 10.0.20.0/24 (us-east-1a)
- 10.0.21.0/24 (us-east-1b)
Security Groups:
ALB: Allow 80/443 from 0.0.0.0/0
ECS: Allow all from ALB SG
RDS: Allow 5432 from ECS SG
Redis: Allow 6379 from ECS SG
```
Scaling Configuration
Auto-scaling rules:
```yaml
Frontend:
min_replicas: 3
max_replicas: 10
scale_up_threshold: CPU > 70% for 2 minutes
scale_down_threshold: CPU < 30% for 5 minutes
API:
min_replicas: 5
max_replicas: 20
scale_up_threshold: CPU > 70% or Requests > 1000/sec
scale_down_threshold: CPU < 30% for 5 minutes
Products:
min_replicas: 2
max_replicas: 5
scale_up_threshold: CPU > 80% for 2 minutes
```
Monitoring & Alerting
Metrics Tracked
- Request latency (p50, p95, p99)
- Error rates (4xx, 5xx)
- CPU/Memory utilization
- Database connections
- Cache hit rates
- AI API latency
- Background job queue depth
Alerts Configured
- P1 (Page immediately): service down, high error rate, DB unreachable
- P2: high latency/CPU/disk
- P3: deployments, scaling, certificate warnings
SLA Commitment
- Uptime: 99.9%
- Support Response: <1 hour (P1), <4 hours (P2)
Disaster Recovery
Summarized runbooks for DB corruption, region failure, and accidental deletion.
Security & Compliance
Controls: encryption, isolation, secrets mgmt, logging, IDS, scanning, WAF, DDoS, MFA, least privilege.
Certifications: SOC2 Type II, GDPR; ISO 27001 in progress.
Customer Access & Cost Structure
What customers get/do not get, support channels, what's included in pricing, add-ons, maintenance windows.
Getting Started / Troubleshooting
Provisioning scripts, health checks, scaling, logs, common issues.