Skip to content
15 years of IT experience
CybexsoftConsultancy Services
← Back to case studies

POS Platform — AWS Managed Hosting

Migrating a UK retail POS platform onto AWS across Windows and Linux, then running it

A UK client operating a point-of-sale management platform needed it moved onto AWS and kept running afterwards. We designed and delivered a mixed estate — Windows Server for the {{TODO: which components run on Windows, e.g. .NET POS services and reporting}} tier, Linux for the {{TODO: which components run on Linux, e.g. API and integration services}} tier — backed by PostgreSQL on Amazon RDS, then stayed on as the operations team: patching, backups, monitoring, and day-to-day server management under an ongoing support agreement.

Industry
Retail POS — {{TODO: client sector, e.g. hospitality, convenience retail}}
Region
United Kingdom
Engagement
{{TODO: N}}-week migration, then ongoing support
Focus
Mixed Windows/Linux estate, RDS PostgreSQL, day-2 operations

The situation

What was wrong

The platform was running on {{TODO: where it ran before — e.g. on-prem servers, a single co-located host, another provider's VPS}}, and the client had no infrastructure team of their own. The application could not simply be lifted onto one operating system: the {{TODO: Windows-bound component}} tier depends on Windows Server, while the {{TODO: Linux-bound component}} tier is Linux-native, so any target platform had to carry both and let them talk to each other and to one shared database. POS is unforgiving about downtime — {{TODO: business constraint, e.g. tills across N sites transact during trading hours}} — so the migration needed a cutover plan rather than a maintenance window, and the client needed someone to own the estate afterwards rather than being handed credentials and a runbook.

  • Two operating systems in one application estate — Windows Server and Linux tiers that had to be provisioned, patched, and monitored consistently.
  • {{TODO: the database problem — e.g. PostgreSQL running on a single unreplicated server with backups nobody had tested a restore from}}.
  • No in-house infrastructure team, so anything delivered had to be run by us rather than handed over.
  • Downtime during trading hours was not acceptable, ruling out a straight lift-and-shift cutover.
  • {{TODO: compliance or data-residency constraint, e.g. UK data residency, PCI DSS scope for card handling}}.
Engagement focus
AWSWindows ServerLinuxRDS PostgreSQLManaged Support
Outcome

The platform runs on AWS under a managed support agreement, with {{TODO: headline outcome — e.g. defined RPO/RTO and a monthly patch cycle}}.

How we worked

The approach, step by step

Stabilise delivery early, then build the foundation that keeps it stable once we hand it back.

    1

    Estate audit and migration plan

    Inventoried every component of the running platform — {{TODO: list the services, their OS, and what talks to what}} — then mapped each one to a target on AWS and sequenced the move so dependencies migrated ahead of the things that call them. Produced a cutover plan with a rollback path at each step.

    2

    Network foundation

    Built a VPC in {{TODO: region, e.g. eu-west-2 (London)}} with public and private subnets across {{TODO: N}} availability zones, NAT for outbound traffic from private subnets, and security groups scoped per tier so the Windows, Linux, and database layers only reach what they need. Administrative access runs through {{TODO: access method, e.g. SSM Session Manager / a bastion}} rather than public RDP or SSH.

    3

    Windows tier

    Provisioned Windows Server {{TODO: version}} instances for the {{TODO: component}} tier, joined to {{TODO: AD/domain arrangement, or 'standalone'}}, with {{TODO: how deploys reach these hosts}} handling application deployment. Licensing was {{TODO: license-included vs BYOL}}.

    4

    Linux tier

    Deployed the {{TODO: component}} tier on {{TODO: distro and version}} behind {{TODO: load balancer arrangement, e.g. an ALB with TLS terminated at the edge}}, with {{TODO: deployment mechanism}} for releases and configuration held in {{TODO: config/secret store, e.g. SSM Parameter Store / Secrets Manager}}.

    5

    Database layer

    Migrated the platform database onto Amazon RDS for PostgreSQL {{TODO: version}}, sized at {{TODO: instance class and storage}}, with {{TODO: Multi-AZ or single-AZ}} for failover and automated backups retained for {{TODO: N}} days. The migration itself ran via {{TODO: method, e.g. DMS with change data capture / pg_dump during a low-traffic window}}, keeping the source live until the cutover was verified.

    6

    Backup, patching, and recovery

    Put both tiers on a defined patch cycle — {{TODO: cadence and window, e.g. monthly, Sunday 02:00–05:00 UK}} — with instance-level backups via {{TODO: AWS Backup / snapshot schedule}} alongside the RDS automated backups. Restores are tested {{TODO: cadence}} against a scratch environment rather than assumed to work, and the recovery procedure is documented to an agreed {{TODO: RPO}} / {{TODO: RTO}}.

    7

    Monitoring and alerting

    Instrumented both operating systems and the database with {{TODO: tooling, e.g. CloudWatch agent, custom metrics}}, covering host health, disk and memory headroom, RDS connections and replication state, and application-level checks on the POS endpoints. Alerts route to {{TODO: where alerts go, e.g. an on-call rota via PagerDuty / a shared channel}} with defined severities.

    8

    Ongoing server management

    We run the estate rather than hand it over: patching, backup verification, capacity and cost review, certificate renewals, incident response within {{TODO: response SLA}}, and change work as the platform evolves. {{TODO: describe the support arrangement — hours of cover, ticketing route, review cadence}}.

Handover

What we delivered

  • AWS VPC in {{TODO: region}} with public/private subnets across {{TODO: N}} AZs and per-tier security groups
  • Windows Server {{TODO: version}} tier hosting the {{TODO: component}} services
  • Linux ({{TODO: distro}}) tier hosting the {{TODO: component}} services
  • Amazon RDS for PostgreSQL {{TODO: version}}, {{TODO: Multi-AZ arrangement}}, with automated backups
  • Database migration executed with {{TODO: method}} and a verified rollback path
  • Backup schedule across both tiers plus tested restore procedure to an agreed RPO/RTO
  • Monitoring and alerting covering host, database, and POS application health
  • Patch management cycle for Windows and Linux with an agreed maintenance window
  • Runbooks covering cutover, rollback, restore, and routine operational tasks
  • Ongoing managed support agreement: {{TODO: scope, hours of cover, response SLA}}

Stack

What it runs on

AWS EC2Windows Server{{TODO: Linux distro}}Amazon RDS for PostgreSQLAWS VPCApplication Load BalancerAWS BackupAWS Systems ManagerAmazon CloudWatch{{TODO: IaC tool, if any}}{{TODO: migration tool, e.g. AWS DMS}}

Afterwards

What changed

Measured after handover, once the client's own team was running the system without us.

{{TODO}}
Migration cutover window
{{TODO}}
Ongoing support since
{{TODO}}
Managed hosts under support

Planning something like this?

Tell us what you are trying to move, migrate or automate and we will reply within one business day with an honest read on the work — including the parts we think you should not do.

More engagements