← All projectsProject 01 / 08
Client · Infrastructure

Data centre infrastructure management on AWS

A production-grade, multi-AZ hosting platform for an enterprise DCIM system — defined entirely in AWS CDK, reachable only through zero-trust access, and built to keep running through the failure of a server, a database writer or an availability zone.

Role
Solutions Architect & Technical Lead
Type
Client project
Timeline
2025 — 2026
Stack
AWS CDK · EC2 · ECS · Aurora PostgreSQL · Netskope · Ansible

The problem

An enterprise client needed a secure, highly available cloud environment to host Schneider Electric’s EcoStruxure IT Advisor, their data centre infrastructure management (DCIM) platform. The platform also had to take in Building Management System data — from Tridium Niagara controllers — across multiple data centre sites.

Four requirements shaped the design, and they did not all point the same way:

The approach

A multi-AZ AWS architecture, built on zero-trust networking and isolated data tiers, with every resource defined as infrastructure-as-code in AWS CDK and all configuration managed with Ansible.

Platform

The foundation is a VPC spanning multiple availability zones, divided into public, private and isolated subnet tiers so that each layer of the platform is only as reachable as it needs to be.

IT Advisor runs on EC2 as an active-passive pair, with the primary and secondary nodes in separate availability zones behind an Application Load Balancer. Failover is handled through weighted routing: while the primary is healthy it receives 100% of traffic. If its target health checks fail, an alarm triggers a switch of the weights and traffic moves to the secondary node.

Both nodes are launched from the same AMI, produced by an EC2 Image Builder pipeline that turns the vendor’s installation ISO into a machine image. This keeps the primary and secondary consistent, and means a node can be rebuilt from a known image rather than configured by hand.

The database is Aurora PostgreSQL in isolated subnets with no route to the internet, running as a cluster of one writer and two readers. Downstream processing jobs read from the readers, keeping that load off the writer, and if the writer fails a reader is promoted in its place so applications stay connected to the database.

Access and security

Access is built on zero-trust principles rather than a network perimeter. Internal users reach IT Advisor through Netskope Private Access, with a Netskope Publisher deployed inside the VPC. The Publisher connects outbound to Netskope’s cloud, so users get access to the application without any inbound path being opened from the internet. The vendor works through AWS WorkSpaces, which gives their team a controlled environment for support work.

Inside AWS, traffic to AWS services goes through VPC endpoints, so it stays on the AWS network rather than crossing the public internet. Credentials live in AWS Secrets Manager rather than in code or configuration, and container images are stored in Amazon ECR. Administrative access to instances goes through Session Manager and is authorised through IAM, which removes the need for bastion hosts and inbound SSH.

Data integration

Data moves through the platform along two paths. ECS-based ETL pipelines run alongside the platform and handle data flowing into and out of IT Advisor, packaged as containers so they are deployed and versioned like the rest of the infrastructure.

For analytics, HVR (Fivetran) replicates data to Snowflake in near real time. Downstream reporting works from current data in Snowflake, without placing reporting load on the platform itself.

What I learned

Key decisions

Decision

Zero-trust access instead of public endpoints

Users and vendors reach the platform through Netskope Private Access and AWS WorkSpaces. Service-to-service traffic stays on VPC endpoints, so no component is exposed directly to the internet.

Trade-off: Access now depends on the Netskope Publisher tier, which has to be deployed, patched and kept highly available like any other production component.
Decision

Session Manager instead of bastion hosts

Instance access goes through AWS Systems Manager Session Manager — IAM-authorised and logged — removing bastion hosts and inbound SSH from the design.

Trade-off: Every instance relies on the SSM agent and its VPC endpoints being healthy. When they are not, normal access is lost and a break-glass bastion host has to be deployed as part of incident response.
Decision

Active-passive HA across two availability zones

IT Advisor runs as an active-passive pair across two AZs behind an Application Load Balancer, giving resilience to an AZ failure within the constraints of a vendor-supplied application.

Trade-off: The standby node carries cost while idle, and failover is a switch-over rather than seamless load sharing.
Decision

Aurora with one writer and two readers

Downstream processing jobs read from the replicas rather than the writer, and either reader can be promoted if the writer fails, so applications keep database access.

Trade-off: Two replicas run full-time, and a writer failover still causes a short interruption while a reader is promoted.

Outcomes

0Components exposed directly to the internet
0Bastion hosts to maintain
99.99%Target availability
100%Infrastructure defined in AWS CDK
Next project →Cloud-native document processing pipeline