Apply Composer changes: comprehensive API updates, migrations, middleware, and infrastructure improvements

- Add comprehensive database migrations (001-024) for schema evolution
- Enhance API schema with expanded type definitions and resolvers
- Add new middleware: audit logging, rate limiting, MFA enforcement, security, tenant auth
- Implement new services: AI optimization, billing, blockchain, compliance, marketplace
- Add adapter layer for cloud integrations (Cloudflare, Kubernetes, Proxmox, storage)
- Update Crossplane provider with enhanced VM management capabilities
- Add comprehensive test suite for API endpoints and services
- Update frontend components with improved GraphQL subscriptions and real-time updates
- Enhance security configurations and headers (CSP, CORS, etc.)
- Update documentation and configuration files
- Add new CI/CD workflows and validation scripts
- Implement design system improvements and UI enhancements
This commit is contained in:
defiQUG
2025-12-12 18:01:35 -08:00
parent e01131efaf
commit 9daf1fd378
968 changed files with 160890 additions and 1092 deletions

View File

@@ -0,0 +1,375 @@
# Cloudflare PoP to Physical Infrastructure Mapping Strategy
## Overview
This document outlines the strategy for mapping Cloudflare Points of Presence (PoPs) as regional gateways and tunneling traffic to physical hardware infrastructure across the global Phoenix network.
## Architecture Principles
1. **Cloudflare PoPs as Edge Gateways**: Use Cloudflare's 300+ global PoPs as the entry point for all user traffic
2. **Zero Trust Tunneling**: All traffic from PoPs to physical infrastructure via Cloudflare Tunnels (cloudflared)
3. **Regional Aggregation**: Map multiple PoPs to regional datacenters
4. **Latency Optimization**: Route traffic to nearest physical infrastructure
5. **High Availability**: Multiple PoP paths to physical infrastructure
## Cloudflare PoP Mapping Strategy
### Tier 1: Core Datacenter Mapping
**Mapping Logic**:
- Each Core Datacenter (10-15 locations) serves as a regional hub
- Multiple Cloudflare PoPs in the region route to the nearest Core Datacenter
- Primary and backup tunnel paths for redundancy
**Example Mapping**:
```
Core Datacenter: US-East (Virginia)
├── Cloudflare PoPs:
│ ├── Washington, DC (primary)
│ ├── New York, NY (primary)
│ ├── Boston, MA (backup)
│ └── Philadelphia, PA (backup)
└── Tunnel Configuration:
├── Primary: cloudflared tunnel to VA datacenter
└── Backup: Failover to alternate path
```
### Tier 2: Regional Datacenter Mapping
**Mapping Logic**:
- Regional Datacenters (50-75 locations) aggregate PoP traffic
- PoPs route to nearest Regional Datacenter
- Load balancing across multiple regional paths
**Example Mapping**:
```
Regional Datacenter: US-West (California)
├── Cloudflare PoPs:
│ ├── San Francisco, CA
│ ├── Los Angeles, CA
│ ├── San Jose, CA
│ └── Seattle, WA
└── Tunnel Configuration:
├── Load balanced across multiple tunnels
└── Health-check based routing
```
### Tier 3: Edge Site Mapping
**Mapping Logic**:
- Edge Sites (250+ locations) connect to nearest PoP
- Direct PoP-to-Edge tunneling for low latency
- Edge sites can serve as backup paths
**Example Mapping**:
```
Edge Site: Denver, CO
├── Cloudflare PoP: Denver, CO
└── Tunnel Configuration:
├── Direct tunnel to edge site
└── Backup via regional datacenter
```
## Implementation Architecture
### 1. PoP-to-Region Mapping Service
```typescript
interface PoPMapping {
popId: string
popLocation: {
city: string
country: string
coordinates: { lat: number; lng: number }
}
primaryDatacenter: {
id: string
type: 'CORE' | 'REGIONAL' | 'EDGE'
location: Location
tunnelEndpoint: string
}
backupDatacenters: Array<{
id: string
priority: number
tunnelEndpoint: string
}>
routingRules: {
latencyThreshold: number // ms
failoverThreshold: number // ms
loadBalancing: 'ROUND_ROBIN' | 'LEAST_CONNECTIONS' | 'GEOGRAPHIC'
}
}
```
### 2. Tunnel Management Service
```typescript
interface TunnelConfiguration {
tunnelId: string
popId: string
targetDatacenter: string
tunnelType: 'PRIMARY' | 'BACKUP' | 'LOAD_BALANCED'
healthCheck: {
endpoint: string
interval: number
timeout: number
failureThreshold: number
}
routing: {
path: string
service: string
loadBalancing: LoadBalancingConfig
}
}
```
### 3. Geographic Routing Service
**Distance Calculation**:
- Calculate distance from PoP to all available datacenters
- Select nearest datacenter within latency threshold
- Consider network path, not just geographic distance
**Latency-Based Routing**:
- Measure actual latency from PoP to datacenter
- Route to lowest latency path
- Dynamic rerouting based on real-time latency
## Cloudflare Tunnel Configuration
### Tunnel Architecture
```
User Request
Cloudflare PoP (Edge)
Cloudflare Tunnel (cloudflared)
Physical Infrastructure (Proxmox/K8s)
Application
```
### Tunnel Setup Process
1. **Tunnel Creation**:
- Create Cloudflare Tunnel via API
- Generate tunnel token
- Deploy cloudflared agent on physical infrastructure
2. **Route Configuration**:
- Configure DNS records to point to tunnel
- Set up ingress rules for routing
- Configure load balancing
3. **Health Monitoring**:
- Monitor tunnel health
- Automatic failover on tunnel failure
- Alert on tunnel degradation
### Multi-Tunnel Strategy
**Primary Tunnel**:
- Direct path from PoP to primary datacenter
- Lowest latency path
- Active traffic routing
**Backup Tunnel**:
- Alternative path via backup datacenter
- Activated on primary failure
- Pre-established for fast failover
**Load Balanced Tunnels**:
- Multiple tunnels for high availability
- Load distribution across tunnels
- Health-based routing
## Regional Gateway Mapping
### Region Definition
```typescript
interface Region {
id: string
name: string
type: 'CORE' | 'REGIONAL' | 'EDGE'
location: {
city: string
country: string
coordinates: { lat: number; lng: number }
}
cloudflarePoPs: string[] // PoP IDs
physicalInfrastructure: {
datacenterId: string
tunnelEndpoints: string[]
capacity: {
compute: number
storage: number
network: number
}
}
routing: {
primaryPath: string
backupPaths: string[]
loadBalancing: LoadBalancingConfig
}
}
```
### PoP-to-Region Assignment Algorithm
1. **Geographic Proximity**:
- Calculate distance from PoP to all regions
- Assign to nearest region within threshold
2. **Capacity Consideration**:
- Check region capacity
- Distribute PoPs to balance load
- Avoid overloading single region
3. **Network Topology**:
- Consider network paths
- Optimize for latency
- Minimize hops
4. **Failover Planning**:
- Ensure backup regions available
- Geographic diversity for resilience
- Multiple paths for redundancy
## Implementation Components
### 1. PoP Mapping Service
**File**: `api/src/services/pop-mapping.ts`
```typescript
class PoPMappingService {
async mapPoPToRegion(popId: string): Promise<Region>
async getOptimalDatacenter(popId: string): Promise<Datacenter>
async configureTunnel(popId: string, datacenterId: string): Promise<Tunnel>
async updateRouting(popId: string, routing: RoutingConfig): Promise<void>
}
```
### 2. Tunnel Orchestration Service
**File**: `api/src/services/tunnel-orchestration.ts`
```typescript
class TunnelOrchestrationService {
async createTunnel(config: TunnelConfiguration): Promise<Tunnel>
async monitorTunnel(tunnelId: string): Promise<TunnelHealth>
async failoverTunnel(tunnelId: string, backupTunnelId: string): Promise<void>
async loadBalanceTunnels(tunnelIds: string[]): Promise<LoadBalancer>
}
```
### 3. Geographic Routing Engine
**File**: `api/src/services/geographic-routing.ts`
```typescript
class GeographicRoutingService {
async findNearestDatacenter(popLocation: Location): Promise<Datacenter>
async calculateLatency(popId: string, datacenterId: string): Promise<number>
async optimizeRouting(popId: string): Promise<RoutingPath>
}
```
## Database Schema
### PoP Mappings Table
```sql
CREATE TABLE pop_mappings (
id UUID PRIMARY KEY,
pop_id VARCHAR(255) UNIQUE NOT NULL,
pop_location JSONB NOT NULL,
primary_datacenter_id UUID REFERENCES datacenters(id),
region_id UUID REFERENCES regions(id),
tunnel_configuration JSONB,
routing_rules JSONB,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
```
### Tunnel Configurations Table
```sql
CREATE TABLE tunnel_configurations (
id UUID PRIMARY KEY,
tunnel_id VARCHAR(255) UNIQUE NOT NULL,
pop_id VARCHAR(255) REFERENCES pop_mappings(pop_id),
datacenter_id UUID REFERENCES datacenters(id),
tunnel_type VARCHAR(50),
health_status VARCHAR(50),
configuration JSONB,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
```
## Monitoring and Observability
### Key Metrics
1. **Tunnel Health**:
- Tunnel uptime
- Latency from PoP to datacenter
- Packet loss
- Throughput
2. **Routing Performance**:
- Request routing time
- Failover time
- Load distribution
3. **Geographic Distribution**:
- PoP-to-datacenter mapping distribution
- Regional load balancing
- Capacity utilization
### Alerting
- Tunnel failure alerts
- High latency alerts
- Capacity threshold alerts
- Routing anomaly alerts
## Security Considerations
1. **Zero Trust Architecture**:
- All traffic authenticated
- No public IPs on physical infrastructure
- Encrypted tunnel connections
2. **Access Control**:
- PoP-based access policies
- Geographic restrictions
- IP allowlisting
3. **Audit Logging**:
- All tunnel connections logged
- Routing decisions logged
- Access attempts logged
## Deployment Strategy
### Phase 1: Core Datacenter Mapping (30 days)
- Map top 50 Cloudflare PoPs to Core Datacenters
- Deploy primary tunnels
- Implement basic routing
### Phase 2: Regional Expansion (60 days)
- Map remaining PoPs to Regional Datacenters
- Deploy backup tunnels
- Implement failover
### Phase 3: Edge Integration (90 days)
- Integrate Edge Sites
- Optimize routing algorithms
- Full monitoring and alerting

View File

@@ -1,8 +1,8 @@
# Phoenix Sankofa Cloud: Data Model & GraphQL Schema
# Sankofa Phoenix: Data Model & GraphQL Schema
## Overview
The data model for **Phoenix Sankofa Cloud** is designed as a **graph-oriented structure** that represents:
The data model for **Sankofa Phoenix** is designed as a **graph-oriented structure** that represents:
* Infrastructure resources (regions, clusters, nodes, services)
* Relationships between resources (networks, dependencies, policies)

View File

@@ -66,13 +66,13 @@
<!-- Site 1 Nodes -->
<rect x="130" y="710" width="120" height="100" class="network" rx="5"/>
<text x="190" y="735" text-anchor="middle" class="text">Node 1</text>
<text x="190" y="755" text-anchor="middle" class="text">pve1.example.com</text>
<text x="190" y="755" text-anchor="middle" class="text">pve1.sankofa.nexus</text>
<text x="190" y="775" text-anchor="middle" class="text">VMs: 20</text>
<text x="190" y="795" text-anchor="middle" class="text">Storage: Ceph</text>
<rect x="280" y="710" width="120" height="100" class="network" rx="5"/>
<text x="340" y="735" text-anchor="middle" class="text">Node 2</text>
<text x="340" y="755" text-anchor="middle" class="text">pve2.example.com</text>
<text x="340" y="755" text-anchor="middle" class="text">pve2.sankofa.nexus</text>
<text x="340" y="775" text-anchor="middle" class="text">VMs: 18</text>
<text x="340" y="795" text-anchor="middle" class="text">Storage: Ceph</text>
@@ -91,13 +91,13 @@
<!-- Site 2 Nodes -->
<rect x="580" y="710" width="120" height="100" class="network" rx="5"/>
<text x="640" y="735" text-anchor="middle" class="text">Node 1</text>
<text x="640" y="755" text-anchor="middle" class="text">pve3.example.com</text>
<text x="640" y="755" text-anchor="middle" class="text">pve3.sankofa.nexus</text>
<text x="640" y="775" text-anchor="middle" class="text">VMs: 15</text>
<text x="640" y="795" text-anchor="middle" class="text">Storage: ZFS</text>
<rect x="730" y="710" width="120" height="100" class="network" rx="5"/>
<text x="790" y="735" text-anchor="middle" class="text">Node 2</text>
<text x="790" y="755" text-anchor="middle" class="text">pve4.example.com</text>
<text x="790" y="755" text-anchor="middle" class="text">pve4.sankofa.nexus</text>
<text x="790" y="775" text-anchor="middle" class="text">VMs: 12</text>
<text x="790" y="795" text-anchor="middle" class="text">Storage: ZFS</text>
@@ -116,13 +116,13 @@
<!-- Site 3 Nodes -->
<rect x="1030" y="710" width="120" height="100" class="network" rx="5"/>
<text x="1090" y="735" text-anchor="middle" class="text">Node 1</text>
<text x="1090" y="755" text-anchor="middle" class="text">pve5.example.com</text>
<text x="1090" y="755" text-anchor="middle" class="text">pve5.sankofa.nexus</text>
<text x="1090" y="775" text-anchor="middle" class="text">VMs: 10</text>
<text x="1090" y="795" text-anchor="middle" class="text">Storage: Local</text>
<rect x="1180" y="710" width="120" height="100" class="network" rx="5"/>
<text x="1240" y="735" text-anchor="middle" class="text">Node 2</text>
<text x="1240" y="755" text-anchor="middle" class="text">pve6.example.com</text>
<text x="1240" y="755" text-anchor="middle" class="text">pve6.sankofa.nexus</text>
<text x="1240" y="775" text-anchor="middle" class="text">VMs: 8</text>
<text x="1240" y="795" text-anchor="middle" class="text">Storage: Local</text>

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -0,0 +1,506 @@
# Sovereign Cloud Federation Methodology
## Overview
This document defines the methodology for creating Sovereign Clouds using multiple global regions with fully federated data stores, enabling data sovereignty while maintaining global scale and performance.
## Core Principles
1. **Data Sovereignty**: Data remains within designated sovereign boundaries
2. **Federated Architecture**: Distributed data stores with federation protocols
3. **Global Consistency**: Eventual consistency across regions
4. **Regulatory Compliance**: Meet all local regulatory requirements
5. **Performance Optimization**: Low-latency access to local data
6. **Disaster Resilience**: Cross-region redundancy and failover
## Sovereign Cloud Architecture
### 1. Regional Sovereignty Zones
```typescript
interface SovereigntyZone {
id: string
name: string
country: string
region: string
regulatoryFrameworks: string[] // GDPR, CCPA, etc.
dataResidency: {
required: boolean
allowedRegions: string[]
prohibitedRegions: string[]
}
complianceRequirements: ComplianceRequirement[]
datacenters: Datacenter[]
federatedStores: FederatedStore[]
}
```
### 2. Federated Data Store Architecture
#### Store Types
**Primary Store (Sovereign Region)**:
- Master copy of data for sovereign region
- All writes go to primary first
- Enforces data residency rules
- Local regulatory compliance
**Replica Stores (Other Regions)**:
- Read-only replicas for performance
- Synchronized via federation protocol
- Can be promoted to primary on failover
- Filtered based on data residency rules
**Metadata Store (Global)**:
- Global metadata and indexes
- No sensitive data
- Enables cross-region queries
- Federation coordination
### 3. Federation Protocol
#### Write Path
```
User Request (Region A)
Primary Store (Region A) - Write
Federation Coordinator
Metadata Store (Global) - Update Index
Replica Stores (Other Regions) - Async Replication
Compliance Check (Data Residency)
Selective Replication (Only to allowed regions)
```
#### Read Path
```
User Request (Region A)
Check Metadata Store (Global) - Find Data Location
Route to Primary Store (Region A) - Read
If not in Region A:
Check Replica Store (Region A) - Read
If not available:
Cross-Region Query (With Compliance Check)
```
## Data Residency and Sovereignty Rules
### Rule Engine
```typescript
interface DataResidencyRule {
id: string
dataType: string
sourceRegion: string
allowedRegions: string[]
prohibitedRegions: string[]
encryptionRequired: boolean
retentionPolicy: RetentionPolicy
accessControl: AccessControlPolicy
}
```
### Rule Evaluation
1. **Data Classification**: Classify data by sensitivity and type
2. **Regulatory Mapping**: Map to applicable regulations
3. **Residency Determination**: Determine required residency
4. **Replication Decision**: Allow/deny replication based on rules
5. **Encryption Enforcement**: Encrypt data in transit and at rest
## Federated Store Implementation
### 1. PostgreSQL Federation
**Citus Extension**:
- Distributed PostgreSQL with Citus
- Sharding across regions
- Cross-shard queries
- Automatic failover
**PostgreSQL Foreign Data Wrappers**:
- Connect to remote PostgreSQL instances
- Query across regions
- Transparent federation
**Implementation**:
```sql
-- Create foreign server
CREATE SERVER foreign_region_a
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'region-a.phoenix.io', port '5432', dbname 'phoenix');
-- Create foreign table
CREATE FOREIGN TABLE users_region_a (
id UUID,
name VARCHAR(255),
region VARCHAR(50)
) SERVER foreign_region_a;
-- Federated query
SELECT * FROM users_region_a
UNION ALL
SELECT * FROM users_region_b;
```
### 2. MongoDB Federation
**MongoDB Sharded Clusters**:
- Shard by region
- Zone-based sharding
- Cross-zone queries
- Automatic balancing
**MongoDB Change Streams**:
- Real-time replication
- Event-driven synchronization
- Conflict resolution
### 3. Redis Federation
**Redis Cluster**:
- Multi-region Redis clusters
- Cross-cluster replication
- Geographic distribution
**Redis Sentinel**:
- High availability
- Automatic failover
- Cross-region monitoring
### 4. Object Store Federation
**S3-Compatible Federation**:
- Regional object stores (MinIO/Ceph)
- Cross-region replication
- Versioning and lifecycle
- Access control
## Federation Coordinator Service
### Responsibilities
1. **Replication Orchestration**:
- Coordinate data replication
- Manage replication topology
- Handle replication conflicts
2. **Compliance Enforcement**:
- Enforce data residency rules
- Validate regulatory compliance
- Audit data movements
3. **Query Routing**:
- Route queries to appropriate stores
- Aggregate results from multiple regions
- Optimize query performance
4. **Conflict Resolution**:
- Detect conflicts
- Resolve using strategies (last-write-wins, CRDTs)
- Maintain consistency
### Implementation
**File**: `api/src/services/federation-coordinator.ts`
```typescript
class FederationCoordinator {
async replicateData(
sourceRegion: string,
targetRegion: string,
data: any,
rules: DataResidencyRule[]
): Promise<ReplicationResult>
async routeQuery(
query: Query,
userRegion: string
): Promise<QueryResult>
async resolveConflict(
conflict: Conflict
): Promise<Resolution>
async enforceCompliance(
data: any,
operation: 'READ' | 'WRITE' | 'REPLICATE'
): Promise<ComplianceResult>
}
```
## Multi-Region Data Synchronization
### Synchronization Strategies
**1. Eventual Consistency**:
- Async replication
- Accept temporary inconsistencies
- Conflict resolution on read
**2. Strong Consistency (Selected Data)**:
- Synchronous replication for critical data
- Higher latency
- Guaranteed consistency
**3. CRDTs (Conflict-Free Replicated Data Types)**:
- Automatic conflict resolution
- No coordination required
- Eventual consistency guaranteed
### Synchronization Protocol
```
Write Operation
Primary Store (Write + Log)
Event Stream (Kafka/NATS)
Federation Coordinator
Compliance Check
Replication Queue (Per Region)
Replica Stores (Apply Changes)
Acknowledgment
```
## Compliance and Governance
### Regulatory Compliance
**GDPR (EU)**:
- Data must remain in EU
- Right to erasure
- Data portability
- Privacy by design
**CCPA (California)**:
- California data residency
- Consumer rights
- Data deletion
**HIPAA (Healthcare)**:
- Healthcare data protection
- Audit trails
- Access controls
**SOX (Financial)**:
- Financial data integrity
- Audit requirements
- Retention policies
### Compliance Enforcement
```typescript
class ComplianceEnforcer {
async checkDataResidency(
data: any,
targetRegion: string
): Promise<boolean>
async validateRegulatoryCompliance(
data: any,
operation: string,
region: string
): Promise<ComplianceResult>
async enforceRetentionPolicy(
data: any,
region: string
): Promise<void>
async auditDataAccess(
data: any,
user: User,
operation: string
): Promise<AuditLog>
}
```
## Disaster Recovery and Failover
### Failover Strategy
**1. Regional Failover**:
- Promote replica to primary
- Update routing
- Resume operations
**2. Cross-Region Failover**:
- Failover to backup region
- Data synchronization
- Service restoration
**3. Gradual Recovery**:
- Incremental data sync
- Service restoration
- Validation
### Recovery Procedures
```typescript
class DisasterRecoveryService {
async initiateFailover(
failedRegion: string,
targetRegion: string
): Promise<FailoverResult>
async promoteReplica(
replicaRegion: string
): Promise<void>
async synchronizeData(
sourceRegion: string,
targetRegion: string
): Promise<SyncResult>
async validateRecovery(
region: string
): Promise<ValidationResult>
}
```
## Performance Optimization
### 1. Local-First Architecture
- Read from local replica when possible
- Write to local primary
- Minimize cross-region queries
### 2. Caching Strategy
- Regional caches (Redis)
- Cache invalidation across regions
- Cache warming for critical data
### 3. Query Optimization
- Route queries to nearest store
- Parallel queries to multiple regions
- Result aggregation and deduplication
### 4. Data Partitioning
- Partition by region
- Co-locate related data
- Minimize cross-partition queries
## Implementation Roadmap
### Phase 1: Foundation (90 days)
1. Define sovereignty zones
2. Implement basic federation protocol
3. Deploy primary stores in each region
4. Basic replication
### Phase 2: Advanced Federation (120 days)
1. Implement federation coordinator
2. Advanced replication strategies
3. Compliance enforcement
4. Query routing optimization
### Phase 3: Disaster Recovery (90 days)
1. Failover automation
2. Cross-region synchronization
3. Recovery procedures
4. Testing and validation
### Phase 4: Optimization (60 days)
1. Performance tuning
2. Caching optimization
3. Query optimization
4. Monitoring and alerting
## Database Schema
### Federation Metadata
```sql
CREATE TABLE sovereignty_zones (
id UUID PRIMARY KEY,
name VARCHAR(255) NOT NULL,
country VARCHAR(100) NOT NULL,
region VARCHAR(100) NOT NULL,
regulatory_frameworks TEXT[],
data_residency_rules JSONB,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
CREATE TABLE federated_stores (
id UUID PRIMARY KEY,
zone_id UUID REFERENCES sovereignty_zones(id),
store_type VARCHAR(50), -- POSTGRES, MONGODB, REDIS, OBJECT_STORE
connection_string TEXT,
role VARCHAR(50), -- PRIMARY, REPLICA, METADATA
replication_config JSONB,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
CREATE TABLE data_residency_rules (
id UUID PRIMARY KEY,
data_type VARCHAR(100),
source_zone_id UUID REFERENCES sovereignty_zones(id),
allowed_zones UUID[],
prohibited_zones UUID[],
encryption_required BOOLEAN,
retention_policy JSONB,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
CREATE TABLE replication_logs (
id UUID PRIMARY KEY,
source_store_id UUID REFERENCES federated_stores(id),
target_store_id UUID REFERENCES federated_stores(id),
data_id UUID,
operation VARCHAR(50), -- INSERT, UPDATE, DELETE
status VARCHAR(50), -- PENDING, COMPLETED, FAILED
compliance_check JSONB,
created_at TIMESTAMP,
completed_at TIMESTAMP
);
```
## Monitoring and Observability
### Key Metrics
1. **Replication Metrics**:
- Replication lag
- Replication throughput
- Replication failures
2. **Compliance Metrics**:
- Compliance violations
- Data residency violations
- Audit log completeness
3. **Performance Metrics**:
- Query latency
- Cross-region query performance
- Cache hit rates
4. **Availability Metrics**:
- Store availability
- Failover times
- Recovery times

View File

@@ -1,8 +1,8 @@
# Phoenix Sankofa Cloud: Technology Stack
# Sankofa Phoenix: Technology Stack
## Overview
**Phoenix Sankofa Cloud** is built on a modern, scalable technology stack designed for:
**Sankofa Phoenix** is built on a modern, scalable technology stack designed for:
* **Dashboards** → fast, reactive, drill-down, cross-filtering
* **Drag-n-drop & node graph editing** → workflows, network topologies, app maps

View File

@@ -1,8 +1,8 @@
# Phoenix Sankofa Cloud: Well-Architected Framework Visualization
# Sankofa Phoenix: Well-Architected Framework Visualization
## Overview
**Phoenix Sankofa Cloud** implements a comprehensive Well-Architected Framework (WAF) visualization system that provides:
**Sankofa Phoenix** implements a comprehensive Well-Architected Framework (WAF) visualization system that provides:
* **Studio-quality visuals** with cinematic aesthetics
* **Multi-layered views** of the same architecture