Azure Services Integration - seojedaperez/IgnisMap GitHub Wiki
This document provides comprehensive information about Microsoft Azure cloud services integration for the IgnisMap emergency response system, including configuration, architecture, and implementation details.
IgnisMap leverages Azure's cloud infrastructure to provide real-time fire monitoring, AI-powered analysis, and emergency response coordination 1 . The system integrates eight core Azure services with an estimated monthly cost of $165-270 USD 2 .
graph TB
subgraph "Critical Services ($115-150/month)"
AzureMaps["emergency-app-maps<br/>Azure Maps S1"]
CosmosDB["emergency-app-cosmos<br/>Cosmos DB"]
Functions["emergency-app-functions<br/>Function App"]
OpenAI["emergency-openai<br/>Cognitive Services"]
end
subgraph "Supporting Services ($50-120/month)"
EventHub["emergency-app-events<br/>Event Hubs"]
CogServices["emergency-app-cognitive<br/>Cognitive Services"]
KeyVault["emergency-app-vault<br/>Key Vault"]
AppInsights["emergency-app-insights<br/>Application Insights"]
Storage["emergencystorage<br/>Storage Account"]
end
subgraph "External Data Sources"
NASA["NASA FIRMS API"]
Weather["Open-Meteo API"]
end
AzureMaps --> Functions
CosmosDB --> Functions
Functions --> OpenAI
Functions --> CogServices
EventHub --> Functions
KeyVault --> Functions
KeyVault --> CosmosDB
KeyVault --> AzureMaps
Functions --> AppInsights
Functions --> Storage
NASA --> EventHub
Weather --> Functions
flowchart TD
Start["azure-setup.sh"] --> Login["az login verification"]
Login --> ResourceGroup["Create emergency-rg<br/>Resource Group"]
ResourceGroup --> Maps["Create emergency-app-maps<br/>S1 SKU"]
Maps --> Cosmos["Create emergency-app-cosmos<br/>GlobalDocumentDB"]
Cosmos --> Containers["Create 8 Cosmos containers<br/>Organizations, FireAlerts, etc."]
Containers --> Storage["Create storage account<br/>Standard_LRS"]
Storage --> Functions["Create emergency-app-functions<br/>Node.js 18, v4"]
Functions --> Cognitive["Create emergency-app-cognitive<br/>CognitiveServices S0"]
Cognitive --> EventHubs["Create emergency-app-events<br/>Standard SKU"]
EventHubs --> KeyVault["Create emergency-app-vault<br/>Standard SKU"]
KeyVault --> Secrets["Store connection strings<br/>and API keys"]
Secrets --> Insights["Create emergency-app-insights<br/>Application Insights"]
Insights --> Config["Configure Function App<br/>environment variables"]
Config --> Output["Generate azure-config.json<br/>configuration file"]
The infrastructure is provisioned through automated shell scripts 3 that create all necessary Azure resources in a single resource group.
Purpose: Professional mapping services with real-time data, geofencing for emergency zones, optimized evacuation routes, and live traffic analysis 4 .
Configuration:
az maps account create \
--resource-group emergency-rg \
--account-name emergency-app-maps \
--sku S1 \
--location "West Europe"
Cost: $50-80/month 5
Purpose: Global distributed database with automatic scaling, low latency for emergencies, and automatic backup 6 .
graph TB
subgraph "EmergencyDB Database"
Orgs["Organizations<br/>Partition: /organizationType<br/>400 RU/s"]
Zones["MonitoringZones<br/>Partition: /organizationId<br/>400 RU/s"]
Alerts["FireAlerts<br/>Partition: /organizationId<br/>1000 RU/s"]
Plans["TacticalPlans<br/>Partition: /organizationType<br/>400 RU/s"]
Satellite["SatelliteData<br/>Partition: /satellite<br/>2000 RU/s<br/>TTL: 30 days"]
Weather["WeatherData<br/>Partition: /location<br/>800 RU/s<br/>TTL: 7 days"]
Resources["ResourceAllocation<br/>Partition: /organizationId<br/>400 RU/s"]
Audit["AuditLog<br/>Partition: /organizationId<br/>400 RU/s"]
end
subgraph "Access Patterns"
Orgs --> QueryOrgType["Query by organization type"]
Zones --> QueryOrgId1["Query by organization ID"]
Alerts --> QueryOrgId2["Query by organization ID"]
Plans --> QueryOrgType2["Query by organization type"]
Satellite --> QuerySatellite["Query by satellite source"]
Weather --> QueryLocation["Query by geographic region"]
Resources --> QueryOrgId3["Query by organization ID"]
Audit --> QueryOrgId4["Query by organization ID"]
end
The database contains eight specialized containers with optimized throughput allocation 7 :
- High-throughput containers: SatelliteData (2000 RU/s), FireAlerts (1000 RU/s), WeatherData (800 RU/s)
- Standard containers: All others (400 RU/s)
- TTL-enabled: SatelliteData (30 days), WeatherData (7 days)
Cost: $25-40/month 8
Purpose: Serverless processing of alerts, integration with external APIs (NASA FIRMS), automatic satellite data analysis, and real-time notifications 9 .
graph LR
subgraph "Azure Functions"
ProcessSat["ProcessSatelliteData<br/>Every 15 minutes"]
AnalyzeFire["AnalyzeFireRisk<br/>AI Analysis"]
GeneratePlan["GenerateTacticalPlan<br/>Organization-specific"]
SendAlerts["SendAlerts<br/>Push & Email"]
UpdateWeather["UpdateWeatherData<br/>Meteorological data"]
end
subgraph "External APIs"
NASA["NASA FIRMS API"]
Weather["Weather APIs"]
end
subgraph "Azure Services"
EventHub["Event Hubs"]
OpenAI["Azure OpenAI"]
Cosmos["Cosmos DB"]
end
NASA --> ProcessSat
Weather --> UpdateWeather
ProcessSat --> EventHub
ProcessSat --> AnalyzeFire
AnalyzeFire --> OpenAI
AnalyzeFire --> GeneratePlan
GeneratePlan --> Cosmos
GeneratePlan --> SendAlerts
Recommended Functions 10 :
-
ProcessSatelliteData
: Processes NASA FIRMS data every 15 minutes -
AnalyzeFireRisk
: AI analysis with Azure OpenAI -
GenerateTacticalPlan
: Creates organization-specific plans -
SendAlerts
: Push and email notifications -
UpdateWeatherData
: Updates meteorological data
Cost: $10-20/month 11
Purpose: Intelligent analysis of emergency situations, automatic tactical plan generation, natural language processing for alerts, and contextual recommendations 12 .
Recommended Models:
- GPT-4: Complex emergency analysis
- GPT-3.5-turbo: Rapid alert generation
- text-embedding-ada-002: Semantic search
Cost: $30-50/month 13
Purpose: Massive satellite data ingestion, real-time data streaming, integration with multiple sources, and automatic scaling 14 .
Configuration:
- Partition count: 4 partitions for parallel processing
- Message retention: 7 days
- SKU: Standard tier
sequenceDiagram
participant NASA as "NASA FIRMS API"
participant EventHub as "satellite-data Event Hub"
participant Functions as "Azure Functions"
participant Cosmos as "Cosmos DB"
participant AI as "Azure OpenAI"
participant Users as "Emergency Teams"
NASA->>EventHub: Satellite fire data
EventHub->>Functions: ProcessSatelliteData trigger
Functions->>AI: Analyze fire imagery
AI->>Functions: Risk assessment
Functions->>Cosmos: Store processed data
Functions->>Functions: GenerateTacticalPlan
Functions->>Cosmos: Store tactical plans
Functions->>Users: Send alerts
Purpose: Computer Vision for satellite image analysis, Text Analytics for alert processing, Anomaly Detector for unusual patterns, and Speech Services for voice commands 15 .
Cost: $50-80/month 16
graph LR
KeyVault["emergency-app-vault"] --> CosmosSecret["CosmosConnectionString"]
KeyVault --> MapsSecret["AzureMapsKey"]
KeyVault --> CognitiveSecret["CognitiveServicesKey"]
CosmosSecret --> CosmosDB["emergency-app-cosmos"]
MapsSecret --> AzureMaps["emergency-app-maps"]
CognitiveSecret --> CogServices["emergency-app-cognitive"]
Three critical secrets are stored in Key Vault for secure access 17 :
- Cosmos DB connection string
- Azure Maps subscription key
- Cognitive Services key
The Function App receives configuration through environment variables 18 :
Variable | Source | Purpose |
---|---|---|
COSMOS_CONNECTION_STRING |
Cosmos DB primary connection string | Database access |
AZURE_MAPS_KEY |
Azure Maps primary key | Geospatial services |
COGNITIVE_SERVICES_ENDPOINT |
Cognitive Services endpoint URL | AI service access |
COGNITIVE_SERVICES_KEY |
Cognitive Services primary key | AI service authentication |
APPINSIGHTS_INSTRUMENTATIONKEY |
Application Insights key | Telemetry collection |
The system implements a comprehensive Azure Integration Service 19 that manages all Azure service connections:
classDiagram
class AzureIntegrationService {
-config: AzureConfig
-cosmosClient: any
-isConfigured: boolean
+configure(config)
+createOrganization(org)
+createFireAlert(alert)
+saveTacticalPlan(plan)
+logAction(action)
}
class AzureConfig {
+maps: MapsConfig
+cosmos: CosmosConfig
+cognitive: CognitiveConfig
+openai: OpenAIConfig
+functions: FunctionsConfig
+eventHub: EventHubConfig
}
AzureIntegrationService --> AzureConfig
The service provides operations for 20 :
- Organization management
- Monitoring zone operations
- Fire alert handling
- Tactical plan management
- Audit logging
Application Insights provides comprehensive monitoring through 21 :
- Performance monitoring: Function execution times and resource utilization
- Error tracking: Exception logging and failure analysis
- Custom telemetry: Fire detection accuracy and response time metrics
- Dependency tracking: External API call monitoring
Metric | Target | Purpose |
---|---|---|
Alert response time | < 30 seconds | Emergency response effectiveness |
Fire detection accuracy | > 95% | Prediction system reliability |
System availability | 99.9% | Service continuity |
Tactical plan generation | < 2 minutes | Operational readiness |
Satellite data latency | < 5 minutes | Real-time monitoring capability |
pie title Monthly Azure Costs ($165-270 USD)
"Azure Maps" : 50
"Cognitive Services" : 40
"Azure OpenAI" : 40
"Cosmos DB" : 35
"Event Hubs" : 40
"Azure Functions" : 15
"Storage & Others" : 25
Cost Tiers 22 :
Wiki pages you might want to explore: