Australian teams change hosts more often than most, because the local constraints, a region opening, a database moving, a customer demanding residency, force the question periodically. Design for that.
Keep business logic in plain functions with platform specifics in thin adapters. Code written against standard Request and Response objects moves between every platform on this page. Code reaching for a provider's caching helpers, environment magic or proprietary storage bindings does not.
Prefer standard interfaces wherever one exists, S3 for objects, Postgres
for the database, plain HTTP for everything else. Each of those has a dozen providers, which turns every one into a price negotiation rather than a dependency.
The things that quietly pin you are individually trivial: an image optimisation endpoint, a KV store with a proprietary API, an authentication integration assuming the platform's environment. Collectively they're the reason a migration takes a month instead of a week.
One Australian-specific note: if you win a customer with a residency requirement, the cheapest path is usually a separate deployment in a Sydney region rather than moving everything. Portable code makes that a configuration exercise. Platform-coupled code makes it a project.