Most cloud environments are not designed on a drawing board, they grow on the side: a resource clicked together in the portal, a firewall rule added by hand, a server only one person still understands. That works until something fails, until someone leaves, or until a second environment is needed for testing. This is exactly where I start: I turn grown infrastructure into described, versioned code and make deployments a process that can be repeated at any time.
As a freelance senior software engineer I come from application development, not from pure administration. For DevOps work that is an advantage: I know the application that has to run – its dependencies, its database migrations, its startup times, its logs. Pipelines and clusters therefore follow what the software actually needs, rather than a generic reference diagram.
Which platform it becomes depends on your constraints: existing licences and contracts, requirements on data location, the knowledge in your team, the cost of operations. I work with Microsoft Azure, Amazon AWS and Google Cloud and hold certifications for Azure and AWS (Azure Fundamentals, AWS Cloud Practitioner). I will say just as openly when part of the load is cheaper and simpler on classic Linux servers or in your own data centre.