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.

Overview

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 .

Service Architecture

Azure Services Overview

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
Loading

Infrastructure Provisioning

Automated Setup Workflow

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"]
Loading

The infrastructure is provisioned through automated shell scripts 3 that create all necessary Azure resources in a single resource group.

Core Services Configuration

1. Azure Maps (Critical Service)

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

2. Cosmos DB (Critical Service)

Purpose: Global distributed database with automatic scaling, low latency for emergencies, and automatic backup 6 .

Database Structure

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
Loading

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

3. Azure Functions (Critical Service)

Purpose: Serverless processing of alerts, integration with external APIs (NASA FIRMS), automatic satellite data analysis, and real-time notifications 9 .

Function Architecture

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
Loading

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

4. Azure OpenAI (Critical Service)

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

Supporting Services

Event Hubs

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

Data Flow Architecture

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
Loading

Cognitive Services

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

Security and Configuration Management

Key Vault Integration

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"]
Loading

Three critical secrets are stored in Key Vault for secure access 17 :

  • Cosmos DB connection string
  • Azure Maps subscription key
  • Cognitive Services key

Environment Variables Configuration

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

Application Integration

Azure Integration Service

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
Loading

The service provides operations for 20 :

  • Organization management
  • Monitoring zone operations
  • Fire alert handling
  • Tactical plan management
  • Audit logging

Monitoring and Observability

Application Insights Integration

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

Key Performance Indicators

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

Cost Structure and Optimization

Monthly Cost Breakdown

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
Loading

Cost Tiers 22 :

Wiki pages you might want to explore:

⚠️ **GitHub.com Fallback** ⚠️