use serde::{Deserialize, Serialize};
use std::collections::{BTreeMap, HashMap};
use std::time::Duration;
pub mod latency;
pub mod network;
pub mod prediction;
pub mod scaling;
pub mod throughput;
pub use latency::*;
pub use network::*;
pub use prediction::*;
pub use scaling::*;
pub use throughput::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudPerformanceConfig {
pub optimization_strategies: Vec<PerformanceOptimizationStrategy>,
pub latency_optimization: LatencyOptimizationConfig,
pub throughput_optimization: ThroughputOptimizationConfig,
pub qos_requirements: QoSRequirements,
pub performance_prediction: PerformancePredictionConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PerformanceOptimizationStrategy {
LatencyMinimization,
ThroughputMaximization,
ResourceUtilizationOptimization,
EnergyEfficiencyOptimization,
CostPerformanceOptimization,
QoSOptimization,
CustomStrategy(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QoSRequirements {
pub latency: LatencyRequirements,
pub throughput: ThroughputRequirements,
pub availability: AvailabilityRequirements,
pub reliability: ReliabilityRequirements,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LatencyRequirements {
pub max_latency: Duration,
pub target_latency: Duration,
pub percentiles: BTreeMap<String, Duration>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ThroughputRequirements {
pub min_throughput: f64,
pub target_throughput: f64,
pub peak_throughput: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AvailabilityRequirements {
pub target_availability: f64,
pub max_downtime: Duration,
pub rto: Duration,
pub rpo: Duration,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReliabilityRequirements {
pub mtbf: Duration,
pub mttr: Duration,
pub error_rate_threshold: f64,
}