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