# Platform & Cloud Engineering

Source: https://ordergroup.co/services/platform-cloud-engineering/
Last updated: 2026-10-23

> Cloud migration services from Order Group: OVH to AWS without downtime, MS SQL to PostgreSQL, infrastructure as code and CI/CD on real projects.

# Cloud migration services and platform engineering

Ticket Club moved its production to AWS in 2024 without downtime. We move platforms, databases, repositories and pipelines the same way and describe the result in Terraform. Below is how it ran, step by step.

[Book a free discovery call](https://ordergroup.co/contact-us/)

![Developers working at multi-monitor workstations in an open office](https://ordergroup.co/media/images/cover_services_platform_cloud.format-webp.width-1600.webp)

## Cloud migration services: what we move and how

Cloud migration services move an existing system onto cloud infrastructure and keep it running there. We move hosting, serverless functions, APIs, repositories, pipelines and databases. Platform engineering services build and run the foundation under an application: infrastructure code, environments, access and monitoring. Cloud engineering services cover the AWS and Azure resources that foundation sits on, and DevOps services cover the pipelines that ship code onto it.

![Network patch panel with blue and grey Ethernet cables in a server rack](https://ordergroup.co/media/images/photo-1544197150-b99a580bb7.trim.format-webp.width-2880.webp)

## Moving a platform from OVH to AWS: the Ticket Club migration

To migrate a platform from OVH to AWS, you build the target environment in code, rehearse on staging with anonymized data, move the database and then switch production, keeping the old servers until a backup exists. Ticket Club, an event ticketing platform, went through exactly this. Production ran on AWS from 3 September 2024 and the switchover happened without downtime. The old OVH instances were archived as a backup and switched off on 1 October 2024.

### Building the target environment

We wrote Terraform code that creates the infrastructure for deploying containers on ECS and set up CI/CD in GitHub Actions. Ticket Club's database has triggers, so moving its data to the new database became a separate task, aimed at keeping the data consistent. For the new test environment we prepared an anonymized copy of production and copied production media and assets to the new staging. This work took place between November 2023 and February 2024.

### Containers, secrets and monitoring

In March and April 2024 we encrypted secrets with sops, gave cron jobs a separate place to run, shared geoip data between the ECS containers and set up websocket communication between the containers in the cluster. For application monitoring after the move we chose Sentry, after comparing it with CloudWatch alarms.

## How a migration runs, step by step

1. Kick-off: we collect access to the repository, AWS, environment files and the production and test environments, and agree on rules for code review, test coverage and pre-commit hooks. A week after a new person joins the project, we ask for their feedback: do they know the assumptions, do they have the knowledge to do the work and do they know who to turn to.
2. Inventory: when infrastructure already exists, the first step is checking the existing AWS resources and Terraform code. We did this first on Centrum Komunikacji, a sign language interpreting platform for the Polish Association of the Deaf, before configuring its deployment infrastructure.
3. Target in code: Terraform creates the environment, and CI/CD deploys to it.
4. Staging with data: a test environment goes up before production and gets the data it needs to behave like production.
5. Data migration: a database with triggers gets its own task for consistency.
6. Production switch: traffic moves to the new environment.
7. Retiring the old environment: the old servers are archived first, then switched off.

![Close-up of a server circuit board with chips and capacitors (Unsplash)](https://ordergroup.co/media/images/photo-1518770660439-4636190.trim.format-webp.width-2880.webp)

## Infrastructure as code: moving Lambdas, APIs and repositories

Infrastructure as code means every cloud resource is described in versioned files, and a migration brings existing resources under that description.

### Enerace: Terraform replaces CloudFormation

[Enerace](https://ordergroup.co/case-studies/enerace-energy-trading-software/), an [energy procurement](https://ordergroup.co/glossary/energy-procurement/) platform, ran on CloudFormation since 13 November 2019. Terraform took over on 20 February 2023 for staging and on 27 February 2023 for production. Its AWS infrastructure now lives in a Terraform backend module of 15 files covering the network, security groups, load balancer, IAM, logs, S3, Redis, RDS, SSM parameters, ECS, DNS and secrets. Staging and production have separate Terraform roots. We also moved the front-end, back-end and mobile app repositories off GitLab and onto GitHub, and CI off GitLab CI and onto GitHub Actions.

### Zeronest: Lambdas and API into Terraform

[Zeronest](https://ordergroup.co/case-studies/zeronest-solar-panel-monitoring-app/), an energy management platform, runs a full AWS stack: ECS, RDS, S3, Lambda, Cognito and SNS, managed in Terraform. We moved its Lambda functions into Terraform between 19 and 24 June 2024, moved the API by 26 June 2024 and reviewed the Terraform code by 17 July 2024. Between January and April 2025 we removed unused resources from production (ETL Lambda functions, a scheduler and DynamoDB) after processing moved to Django and PostgreSQL.

## Database migrations: MS SQL to PostgreSQL and real-time replication

To migrate a database from MS SQL to PostgreSQL, you move the schema and the data, then adapt the SQL dialect in the application code.

### Moving off MS SQL

In 2025 we migrated a monitoring-center software vendor's product onto PostgreSQL. We prepared procedures and deployment configuration, then migrated the schema and the data. We analyzed the SQL dialect changes in the Pascal code and automated them. We trained the client's team in PostgreSQL and its administration. Finally, we designed replication, failover and high availability for a Windows environment.

### Real-time replication out of RDS

For a fintech client we set up real-time replication of data out of Amazon RDS and into Microsoft SQL Server through AWS Database Migration Service. A VPN tunnel between AWS and the infrastructure of the client's partner gave access to a Kafka broker.

![Platform & Cloud Engineering](https://ordergroup.co/media/images/cloud-bg.trim.format-webp.width-2880.webp)

AWS engagements

**50+**

AWS engagements across the company, our default cloud

Installations

**3,000+**

Prosumer storage installations on Zeronest's AWS platform, as of April 2026

Inverter brands

**16**

Brands integrated on the same Zeronest platform

Storage

**30 MWh**

Storage capacity under Zeronest's energy management system

Plants

**7**

Plants under Skyfri's energy management system on Azure

## Security and compliance in the infrastructure

On [Centrum Komunikacji](https://ordergroup.co/case-studies/centrum-komunikacji-sign-language-interpreting-platform/), hosting and data stay in the EU. Traffic uses TLS 1.3 only, and the load balancer talks to the servers over mTLS. Access goes through a VPN, deployments run only through the tunnel and SSH is closed from the outside. The admin panel uses two-factor authentication. Monitoring combines the Wazuh SIEM with ELK, Grafana and Sentry. The database is a PostgreSQL cluster with failover, Redis runs with Sentinel and self-hosted LiveKit autoscales its instances. We also reviewed and limited external access to the infrastructure.

Zeronest signs users in with a one-time code through Cognito, and password sign-in was switched off in January 2025.

### How we handle client data

Every project has a data processing agreement and named accounts. We use AWS IAM Identity Center and the principle of least privilege, and disks are encrypted. We report an incident within 24 hours at the latest and delete or return data within 10 business days. At the start of a project we make entries in the GDPR registers, and when the team changes we update who has access to the data. An internal tool for tracking access has been in use since 9 October 2026. More in [Security and GDPR](https://ordergroup.co/company/security/).

![Developers working at multi-monitor workstations in an industrial-style open office](https://ordergroup.co/media/images/order_group_developers_team.trim.format-webp.width-2880.webp)

## CI/CD and DevOps services

CI/CD pipelines carry code out of the repository and into the production environment, and DevOps work covers the pipelines, the infrastructure code and the standards around them.

### Centrum Komunikacji

Centrum Komunikacji has a production deployment pipeline for the front-end, back-end and media server, and a production pipeline for the iOS and Android apps. Database migrations and static files run as separate deployment tasks, which shortens deployments. We also tuned the Nginx, Daphne and Django configuration.

### Zeronest and Enerace

Zeronest's GitHub Actions pipeline builds a Docker image, pushes it to ECR with a separate image repository per environment, runs Terraform for the backend module and then a post-deployment script. Deployments have run automatically on the dev, release/staging and main branches since 5 August 2024, and the deployment status has gone to Slack since 4 April 2025.

Enerace's back-end has deployed through GitHub Actions since 5 August 2024, after GitLab CI, which it used since 18 November 2021. The pipeline builds the Django and Nginx images, pushes them to ECR and deploys with Terraform: staging on the release/staging branch, production on master. Pull requests run lint, format checks and tests in a container with a temporary PostgreSQL database.

### Azure, mobile and our own standards

For Skyfri we run CI/CD in Azure DevOps, use Terraform instead of ARM Templates and Azure CLI, and have brought more services under full CI/CD and infrastructure as code. For a client with a mobile app we deploy iOS and Android builds through Fastlane and GitHub Actions. Production and development have separate Firebase projects, and a weekly Slack alert warns about expiring Apple certificates. Internally we keep a CI image for Terraform and a standard for environment variables in Terraform, and in 2024 we trained the team in Terraform.

## Identity and integrations

[Kyoto Group](https://ordergroup.co/case-studies/kyoto-digital-twin-software/) is a Norwegian [thermal energy storage](https://ordergroup.co/glossary/thermal-energy-storage/) company. In 2024 we configured an AWS load balancer for it with OIDC authentication against Azure Entra ID, and automated deployment step by step.

Enerace imports data every day from several energy market sources: ICE, ENTSO-E, AGSI/ALSI, TGE and PSE. For another client we built a platform for three brands that share one user database in AWS Cognito and integrate with a marketing automation system. It is hosted on AWS (ECS, Lambda, S3, RDS and CloudFront) and managed in Terraform.

![Zeronest home energy app on a phone showing household energy flows](https://ordergroup.co/media/images/2192_r16x9.trim.format-webp.width-2880.webp)

## Running it after the migration: costs, logs, alerts

### Zeronest in production

Zeronest's production environment runs the API and the Celery workers on ECS, PostgreSQL in RDS with a read replica, Redis (Valkey) in ElastiCache and a load balancer. Logs go to separate CloudWatch log groups, and Sentry is part of the setup. RDS storage grows automatically through a setting kept in Terraform, and an alert warns about missing data or a blocked Celery queue.

Celery monitoring data now stays in Redis for 6 hours instead of 24, and the Django cache sits in a separate logical database. Together these changes lowered Valkey memory use to about 52.7%, when it had been about 99.8%, with no change in instance size.

### Enerace on ECS Fargate

Enerace runs the Django application and Celery as separate Fargate services. The Django service autoscales on CPU load with a target of 60%, between 1 and 4 tasks, and can also scale on memory and on requests per target.

Thirteen CloudWatch alarms cover RDS (CPU, free space, read and write latency, free memory), Redis (CPU, memory, key evictions), ECS (CPU and memory for Django and Celery separately) and load balancer response time.

PostgreSQL in RDS keeps backups for 14 days, and Redis 7 in ElastiCache replicates across several zones. Configuration lives in AWS Parameter Store (39 parameters) and Secrets Manager, and the PostgreSQL 17.11 version is set in Terraform. We log into production containers through ECS Execute Command, encrypt environment files and keys with ansible-vault and anonymize email addresses whenever production data is copied to test environments.

### Cost work

Since October 2026, cost optimization of Ticket Club's AWS environment has been part of our support work, and it is ongoing. For an industrial IoT inspection platform we prepared an analysis of infrastructure costs and of options for a full or partial move off managed services onto cheaper ones.

## AWS first, Azure where we have done the work

We work on AWS, Azure and Hetzner, and AWS is our default because we think it has the best tooling. Most of the evidence on this page comes from AWS, where we have run 50+ AWS engagements across the company.

### Azure at Skyfri

Since January 2024 we have worked on Skyfri's platform with Azure IoT Hub and Edge, Azure Data Explorer, Databricks and Azure DevOps. Our people work inside the client's team. Its [energy management system](https://ordergroup.co/glossary/ems/) covers 7 plants, with more than 5 MWh of storage and more than 4 MW of battery power. Read the [Skyfri case study](https://ordergroup.co/case-studies/skyfri-solar-asset-management-platform/).

### IoT on AWS at Global Green

For Global Green we work with AWS IoT Core and AWS accounts and run a simulation environment on AWS. The first AWS IoT setup was done between April and June 2026.

![Earth at night with city lights connected across a continent (Unsplash)](https://ordergroup.co/media/images/photo-1451187580459-4349027_wQaURgh.trim.format-webp.width-2880.webp)

## Why migrate to the cloud with us

### Infrastructure you can read

Ticket Club, Enerace, Zeronest, Skyfri and a three-brand platform are described in Terraform, so a change to the infrastructure is a diff that someone reviews.

### Staging before production

A new environment goes up and gets tested on staging before production moves, as in the Ticket Club migration above.

### We stay after the switch

Zeronest's logs and alerts, Enerace's alarms and autoscaling and Ticket Club's cost optimization are all part of our ongoing work on the platforms we moved.

Do you have questions?

## Cloud migration questions, answered

![Business meeting in a glass-walled conference room](https://ordergroup.co/media/images/cover_services_consulting_discovery.format-webp.webp)

### Tell us what runs today and where it needs to go.

[Book a free discovery call](https://ordergroup.co/contact-us/)

### What are cloud migration services?

Cloud migration services move an existing system onto cloud infrastructure and keep it running there. At Order Group that covers hosting, serverless functions and APIs, repositories and pipelines, and databases, with infrastructure described in Terraform and a staging environment ahead of production.

### What are platform engineering and DevOps services?

Platform engineering services build and run the foundation under an application: infrastructure code, environments, access and monitoring. DevOps services cover the delivery pipelines. We build both, for example Terraform-managed AWS environments with GitHub Actions pipelines for Zeronest and Enerace, and Azure DevOps pipelines for Skyfri.

### How do you migrate a platform from OVH to AWS?

You build the target environment in Terraform, rehearse on staging with anonymized production data, move the database and then switch production. For Ticket Club, production ran on AWS in September 2024 without downtime, and the old OVH instances were switched off in October after a backup.

### How do you migrate a database from MS SQL to PostgreSQL?

You migrate the schema and the data, then adapt the SQL dialect in the application code. For a monitoring-center software vendor we automated the dialect changes in Pascal code, trained the client's team in PostgreSQL administration and designed replication, failover and high availability on Windows.

### What does a cloud migration with Order Group look like, step by step?

It starts with a kick-off and access to the repository, AWS and the environments. We check existing resources and Terraform code, describe the target in code, bring up staging, move the database, switch production and archive the old environment before switching it off.

### How do you secure infrastructure during and after a migration?

We combine encrypted transport, closed access and monitoring with contractual data protection. On Centrum Komunikacji that means TLS 1.3, mTLS to the servers, VPN-only deployments and closed SSH, watched by Wazuh. Every project has a data processing agreement and named accounts, and we apply the principle of least privilege through AWS IAM Identity Center.

### Do you build CI/CD pipelines and infrastructure as code?

Yes. We build pipelines in GitHub Actions and Azure DevOps and describe infrastructure in Terraform. Zeronest deploys automatically from three branches through Docker, ECR and Terraform, Skyfri uses Azure DevOps with Terraform instead of ARM Templates, and mobile apps ship through Fastlane.

### How do you keep AWS costs under control after a migration?

We set autoscaling and alerts in Terraform. On Zeronest, RDS storage grows automatically, and a shorter Celery monitoring retention brought Valkey memory use down to about 52.7%, when it had been about 99.8%, with no larger instance. For Ticket Club, cost optimization has been part of our support since October 2026.

### Do you work only on AWS?

No. We work on AWS, Azure and Hetzner, and AWS is our default because we think it has the best tooling. Skyfri runs on Azure IoT Hub, Azure Data Explorer and Databricks. Our AWS Partner Central Validated tier status is in progress.

![Developer with headphones coding at desktop monitor in an open office](https://ordergroup.co/media/images/Image_1_3kejLC8_Y69T2Sz.format-webp.width-2880.webp)

## Migrate, move databases or automate deployments with one team

Your message goes to

![Filip Szamborski](https://ordergroup.co/media/images/Filip_dTWHyBo.2e16d0ba.fill-432x432.format-webp.webp)

Filip Szamborski

Co-founder & CEO

[](https://www.linkedin.com/in/filip-szamborski/)

SO FAR WE HAVE WORKED WITH BRANDS LIKE:

- [![Skyfri](https://ordergroup.co/media/images/skyfri-mono_KGicBgp.max-208x64.format-webp.webp)](https://ordergroup.co/case-studies/skyfri-solar-asset-management-platform/)
- ![AASA24](https://ordergroup.co/media/images/aasa24-mono.max-208x64.format-webp.webp)
- [![AP-Tech](https://ordergroup.co/media/images/ap-tech-mono_ihuJP5T_6b2rSSb.max-208x64.format-webp.webp)](https://ordergroup.co/case-studies/monster-airport-lighting-system/)
- [![BizBot](https://ordergroup.co/media/images/bizbot-mono_StdJIUN.max-208x64.format-webp.webp)](https://ordergroup.co/case-studies/bizbot-fintech-ux-design/)
- [![Enerace](https://ordergroup.co/media/images/enerace-mono_FKuME1X_Fp3WF4B.max-208x64.format-webp.webp)](https://ordergroup.co/case-studies/enerace-energy-trading-software/)

Thank you for your message.

We read every message ourselves and get back to you within 48 hrs on business days.

Something urgent?
[hello@ordergroup.co](mailto:hello@ordergroup.co)
