Skip to content

API Servers

The XConnect API runs on 7 dedicated physical servers, each hosting 43 isolated IIS application pools.


Architecture Diagram

graph TB
    subgraph HAPROXY["Load Balancer"]
        LB["HAProxy VIP<br/>89.149.192.33"]
    end

    subgraph API_FARM["API Server Farm (7 Physical Dedicated Servers)"]
        subgraph API1["API-1: 10.32.8.134"]
            POOLS1["43 IIS Pools<br/>Ports 19169-19211"]
        end
        subgraph API2["API-2: 10.32.8.135"]
            POOLS2["43 IIS Pools<br/>Ports 19169-19211"]
        end
        subgraph API3["API-3: 10.32.8.139"]
            POOLS3["43 IIS Pools<br/>Ports 19169-19211"]
        end
        subgraph API4["API-4: 10.32.8.137"]
            POOLS4["43 IIS Pools<br/>Ports 19169-19211"]
        end
        subgraph API5["API-5: 10.32.8.35"]
            POOLS5["43 IIS Pools<br/>Ports 19169-19211"]
        end
        subgraph API6["API-6: 10.32.8.166"]
            POOLS6["43 IIS Pools<br/>Ports 19169-19211"]
        end
        subgraph API7["API-7: 10.32.8.167"]
            POOLS7["43 IIS Pools<br/>Ports 19169-19211"]
        end
    end

    subgraph DEPENDENCIES["Backend Dependencies"]
        SQL["SQL Server<br/>MainDB + Replicas"]
        MONGO["MongoDB<br/>Search Keys + Logs"]
        REDIS["Redis Cluster<br/>SP Data Cache"]
        SUPPLIERS["56+ Suppliers<br/>via Proxies"]
    end

    LB --> API1 & API2 & API3 & API4 & API5 & API6 & API7
    API_FARM --> SQL & MONGO & REDIS & SUPPLIERS

    style API_FARM fill:#e3f2fd
    style SQL fill:#FFB6C1
    style MONGO fill:#90EE90
    style REDIS fill:#ff9999

Server Inventory

Server IP Address Type IIS Pools Port Range
API-1 10.32.8.134 Physical Dedicated 43 19169-19211
API-2 10.32.8.135 Physical Dedicated 43 19169-19211
API-3 10.32.8.139 Physical Dedicated 43 19169-19211
API-4 10.32.8.137 Physical Dedicated 43 19169-19211
API-5 10.32.8.35 Physical Dedicated 43 19169-19211
API-6 10.32.8.166 Physical Dedicated 43 19169-19211
API-7 10.32.8.167 Physical Dedicated 43 19169-19211
Total - 7 Servers 301 Pools -

Server Specifications

Specification Value
OS Windows Server 2019/2022
Web Server IIS 10.0
Framework .NET 9 / ASP.NET Core
Pools per Server 43 (one per client domain)
Total Pools 301 across all servers
Concurrency Async/Await pattern
Connection Pooling SQL + HTTP connection reuse

API Endpoints

Endpoint Purpose Volume
availability Hotel search across suppliers ~7.3M/day
ReCheck Price/availability verification High
CancellationPolicy Get cancellation terms Medium
PreBook Reserve before payment Medium
Book Confirm booking ~2,746/day
BookingDetail Retrieve booking info Medium
CancelBooking Cancel reservations Low

Traffic Volume

Metric Value
Daily Searches ~7.3 Million
Daily Bookings ~2,746
Avg RPS 2,300
Peak RPS 2,500
Off-hours RPS 2,200

Deployment Process

Stage Current Future
Build Visual Studio manual build Jenkins automated build
Deploy Manual copy to each server GitLab CI/CD pipeline
Rollback Manual restore Automated rollback
Testing Manual verification Automated test suite

Dependencies

graph LR
    API["API Servers"] --> SQL["SQL Server<br/>Writes: MainDB<br/>Reads: Replicas"]
    API --> MONGO["MongoDB<br/>Search Keys<br/>Logs"]
    API --> REDIS["Redis Cluster<br/>SP Cache"]
    API --> PROXY["Supplier Proxies"]
    PROXY --> SUPPLIERS["56+ Suppliers"]

    style API fill:#87CEEB
    style SQL fill:#FFB6C1
    style MONGO fill:#90EE90
    style REDIS fill:#ff9999

Last Updated: 2025-12-02