Cloud is the new generation platform that is evolving with a goal to solve the problems associated with traditional deployment. The infrastructure on the cloud could be chosen and provisioned in such a way that the costs are optimized. The applications can be deployed on a bare minimum infrastructure and later scaled up depending on the load and usage. Cloud providers like Azure offer compact control over the resources by providing peak hour scale up and odd hour scale down options, making it cost-effective.
The issues which are part of traditional deployment are eliminated in cloud deployment
- Publishing to wrong websites
- Deviation from standard process of deployment like changing the publishing folders creates inconsistency and makes it difficult to find the right publishing folder.
- Trying out a quick fix on the production box leads to major issues as well as creates untracked changes.
- Unintentionally adding an inessential character in the code while troubleshooting in the production environment.
- Manually copying libraries into the publishing folder leading to version mismatch.
- Repeated deployment on multiple environments might induce issues.
All these issues mentioned above can be avoided by configuring a robust CI-CD pipeline.
- Any traditional deployment involves a long downtime.
- The services would have to be stopped to ensure proper deployment causing downtime in the absence of an alternative server.
- Due to manual intervention, each item deployed has to be verified before calling the release a success.
- If something is left out from the standard checklist, it may create an issue.
- In the modern process, the systems have an inbuilt checklist for the tasks performed.
- On Azure,
- the web apps need not be stopped while deploying
- It is easy to switch deployment slots to ensure there is no downtime for the customer.
Long Duration of Deployment
- Even though a different version of the same code is deployed or a patch is being applied, the release team has to verify the entire configuration
- An unexpected error could be shown due to an unintentional variation in the deployment process.
- Using automation tools like Jenkins or VSTS ensure that the configuration remains intact while only the code changes and there is no deviation from the standard deployment process.
- Things, like attaching an SSL certificate or having an environment specific entry, have to be crosschecked for each deployment.
- The application may not work in a different environment even if one of the settings is forgotten or not entered.
- On Azure, it is assured that the environment settings remain intact once you set it up and don’t change during deployments. The deployment slots ensure that the slots are isolated, have their own environment settings, without any difference between the staging and the production environment in terms of the underlying OS, frameworks and other OS related settings.
Following are the advantages of cloud over traditional systems
- Cost optimization
- Cloud provides multiple avenues to cut cost like being able to shut down idle instances of VMs or configure scaling with web applications so that additional instances are spun up only when required.
- Ability to test on production environment before deployment
- Features like deployment slots allow developers to test the application on the production environment while the actual instance used by the end users run on a completely isolated slot.
- Quick and easy deployments
- The ability of the cloud infrastructure to gel well with automation/dev-ops tools makes deployments quick and easy.
- Scale up without redeploying
- The traditional systems require you to set up additional instances beforehand to be able to handle increased loads. However, this is a waste of money as the load may be just limited to weekends or during promotions. Cloud infrastructure can be configured to avail the additional instances only during specific days and times.
- High availability
- The cloud infrastructure comes with a failover in most scenarios. Even if it doesn’t, it is easy and affordable to configure one. This makes cloud-based systems highly available. The cloud vendors assure an availability of above 99.9% for many services.
Over and above this, the cloud platform allows developers and BAs to test the application on the production environment instilling a high level of confidence before deployment.