Prior to the migration of an application to cloud, would it not be a good idea to migrate the development (code and build) and test environment to the cloud? I think this would be an idea to sell to the management the practical benefits of cloud and overcome internal objections in the process of proving a cloud solution.
The development and test environment of traditional software development has the below inherent challenges, which cloud migration can provide efficient solutions.
• Utilization of development servers is very less, if they are running at all .
• Provide very less business value compared to the cost to maintain them
• Access to compute and storage resources for distributed teams like team members distributed geographically or across outsourced teams.
• Agile mode of development demanding quality decisions in short time.
• Managing multiple environments in parallel
This model can transform in to resources hosted on private cloud model or on public cloud provider or hosting provider or a combination of the above. This give rise to 3 variations of the model for development irrespective of deployment model.
• Develop and Build on–premise and Deploy on the cloud
• Develop and Build on the cloud and deploy on the cloud
• Develop and Build on the cloud and Deploy on-premise.
Irrespective of the mode of cloud adoption for software development and testing , one should look for the following in the new model.
1. Environments need standard VMs. Some of VMs might take time to be setup. Hence the cloud shall be able to provide a set of available predefined template of available VMs is necessary for software and sizes. For example, AppServer VM is equivalent to VM with operating system WS 2008 R2 and specific roles enabled.
2. There should be capability to build specialized templates of development environments like single tier, client-server, three tier and multi-tier environments. Some specialized template examples are
• AppServer and Database
• AppServer and Load Balancer, Database
• AppServer and Load Balancer, Master Database and Slave database
3. There should be capability to inspect, clone and customize an established development or testing environment with minimal effort at a short duration of time.
4. There should be ability to audit who, what and when across the environment
5. In all of the above scenarios, there should be the ability to make use of available licenses with enterprise.
Some constraints that might still be open after migrating to cloud are
1. Server Failures
2. Network outages
3. Inefficient usage of cloud resources resulting in increase of costs.
4. Ramp Down of resources is a challenge and finding optimal resource usage takes effort and time