Moving to the cloud from a VPS or on-prem: a migration checklist for Greek companies

· 5 min read · aws · migration

Most migrations don't fail on cutover day. They fail in the weeks before, when nobody wrote down the cron job on the old server. This is the checklist we work through with Greek teams moving to AWS, GCP or Azure.

A lot of Greek companies still run production on a VPS, a local hosting provider or a rack of servers in the office. It works until it doesn't: the server is full, the one person who set it up has left, or a large customer asks where the backups are and what happens if the data centre goes down.

Moving to the cloud fixes those problems, but only if the move is planned. Here is the checklist we use, in the order we use it.

1. Decide whether the move is worth it

Before any technical work, write down why you are moving and what it should cost afterwards. Good reasons: you need redundancy you can't build yourself, you are growing faster than your servers, a customer or regulator requires it, or the people who know the old setup are leaving. A weak reason: "everyone is on the cloud". A single well-run VPS can be cheaper than a badly designed cloud setup, and a migration that doubles your bill without improving reliability is a step backwards.

Get a rough monthly estimate of the target setup before you start, and decide who will own that number after go-live.

2. Inventory everything

This is the step that decides whether cutover day is calm. List every component, with an owner next to each one:

The IP whitelists catch Greek companies more than anything else. Start those requests early.

3. Pick the region

For AWS, the usual choices for Greek workloads are Frankfurt (eu-central-1) and Milan (eu-south-1). Both keep data in the EU and are a few tens of milliseconds from Athens, which is fine for almost every web application. Frankfurt has the widest service catalogue and usually gets new features first.

AWS has also announced a Local Zone in Athens. A Local Zone extends a parent region with compute and storage physically close to your users, but it offers a subset of services. It makes sense for latency-sensitive parts of a system, such as real-time processing or data that must stay in the country, while the rest of the platform runs in the parent region. Check which services are available there before designing around it.

On GCP and Azure the logic is the same: choose the nearest EU region with the services you need, and keep everything, including logs and backups, in the EU. Our AWS vs GCP vs Azure comparison covers the provider choice itself.

4. Set up the foundations before anything moves

5. Choose compute: VMs, ECS or Kubernetes

This is where many migrations overspend. The honest guidance:

If you are moving five services, you probably don't need Kubernetes yet. If you are moving fifty, you probably do.

6. Plan the database cutover

The database decides how much downtime you have. Copying a dump during a maintenance window is simple and fine for small databases. For anything larger or busier, replicate continuously into the new managed database (with native replication or AWS Database Migration Service), let it catch up, then switch over with only seconds to minutes of write freeze.

7. Rehearse, then cut over

  1. Lower DNS TTLs to a minute or two at least a day before.
  2. Do a full dry run in staging, with a stopwatch and the actual runbook.
  3. On the day: freeze writes, let replication catch up, switch DNS or the load balancer, and verify with real requests.
  4. Keep the old environment running and untouched for a few days in case you need to go back.

Pick a quiet time for your business, not for the engineers. For many Greek consumer products that is a weekday morning, not a Friday night.

8. The first 30 days

How long it takes

A single application with one database typically moves in a few weeks. A company with several services, environments and external integrations usually takes two to six months, most of it spent on inventory, foundations and testing rather than on the cutover itself. The inventory in step 2 is what gives you a realistic estimate.

Frequently asked questions

How long does a cloud migration take?

A single application with one database usually takes a few weeks. Companies with several services, environments and integrations typically need two to six months, mostly for inventory, foundations and testing.

Should a startup use ECS or Kubernetes?

With a handful of services, managed containers such as ECS on Fargate or Cloud Run are usually cheaper and simpler. Kubernetes pays off with many services and several teams deploying independently.

Which AWS region is best for Greece?

Frankfurt (eu-central-1) and Milan (eu-south-1) are the usual choices, both in the EU and a few tens of milliseconds from Athens. The Athens Local Zone can host latency-sensitive parts of a system alongside a parent region.