For the deployment of cloud apps, I recommend using containers to package up software code with all its dependencies necessary to run an app or a service. Containers consume fewer cloud resources and can be easily configured, scaled, replicated and orchestrated via such management systems as Kubernetes. The use of containers facilitates CI/CD implementation and infrastructure automation.
To make the cloud more attractive to users, major cloud providers offer PaaS services for developing, testing, deploying, managing and updating cloud applications: AWS Lambda, Azure Functions, Google App Engine, etc. PaaS releases you from cumbersome server management and lets you extend your cloud infrastructure with special modules for AI, machine learning, IoT, blockchain, etc., with no extra development efforts.
With the Infrastructure as Code (IaC) approach, your DevOps team can automate cloud infrastructure setup and management of its components. They use configuration files to organize unified and instantly configured development environments and trace changes committed to the infrastructure.
As services of a cloud-native app are detached and have clear criteria for their functional operability, they enable a high level of automation and can be simultaneously developed and then assembled, tested and deployed through the branching CI/CD pipelines.
More InfO; it technician