Cloud-driven Development is a methodology using cloud resources to improve the software development process from inception to production. Similar to test-driven development, cloud-driven development can dramatically improve the quality of your development and testing efforts. Implementing cloud-driven development means providing all of your developers and testers with dedicated test servers in the cloud whenever needed.
Benefits of Cloud-Driven Development:
- Find bugs earlier
- Empower team members to pass along near defect-free work
- Build scalability into your code from line one
Lack of Adequate Testing Resources
Many of today’s companies lack adequate computing resources for internal testing. Departments are forced to compete against each other for a limited pool of shared resources. Consequently, the quality and breadth of testing can be compromised, which leads to additional conflicts, delays, and bugs!
And even if more equipment can be acquired, the procurement and provisioning process can take 3 to 5 weeks. The maximum number of environments is also limited by the capabilities of the administrator to support the environments. Increasing the number of administrators may allow you to support more environments, but this causes coordination difficulties amongst the administrators. Even if you were able to delegate the maintenance of the configurations to the developers and testers once provisioned, keeping all the configurations in sync can become an organizational nightmare. The coordination necessary to keep track of all the software stack versions expands exponentially, making it difficult for administrators to manage all the testing environments.
Up until now, the only practical solution that companies had was to provision a limited amount of resources and share them across stake holders. But with the commercialization of cloud resources and their ability to provide nearly limitless, on-demand resources, more options are becoming available.
How Cloud Resources Can Drive Development
By using the cloud to provision resources needed, all developers have access to dedicated testing servers, removing the barrier to fully testing code before checking it into source control. Now developers can spin-up an all-in-one test server to test their code, or to stand-up a complete test environment to benchmark the performance of their code. They can debug and check for performance problems before checking in their code.
Let’s look at how a company that develops an E-commerce Website could use cloud-driven Development to work effectively. One developer can be testing changes to the shopping cart while a second developer is changing the layout and style sheets of the main pages. In parallel, your DBA group could be making changes to the database tables and queries without impacting the developers. Simultaneously, your QA group can test the performance of your application, while your support group is debugging a production problem on a cloned production environment without impacting current users. With dedicated testing resources for developers and testers, the competition for shared resources is eliminated.
Benefits of Cloud-Driven Development
With the ability to allow every stake holder in the development process to stand-up as many test environments whenever they need it, testing is pushed down to the person best able to perform the tests and then benefit from the results. The side effects can be quite startling:
- Empowers team members to pass along near defect-free work
- Improves quality by allowing more testing earlier in the development lifecycle
- Reduces testing duration by allowing the spin-up of multiple test environments to be able to perform tests in parallel
- Decreases costs by increasing the likelihood of finding problems earlier in the product development lifecycle where it is cheaper to solve
- Build and test for scalability while in the development phase
- Allows for experimentation of alternate architectures
Criteria for Cloud Platforms to Support Cloud-Driven Development
There are multiple vendors promoting their platform or software as helping with development and test in the cloud. To best support cloud-driven development, look for the following:
- Ability to create and save server configurations (Cloud Software Stacks)
- A self-service tool that allows developers to spin-up cloud resources
- Ability for administrators to control who can self-service and what configurations they can stand-up
- Ability to audit changes, and revert to previous versions of configurations or stacks (optional)
- Cost reporting (optional)
Conclusion
Cloud-driven development can improve quality and save costs by empowering your developers to fully test code whenever they need. By providing testing resources to developers as required and without delay, bugs are found earlier and performance issues are addressed in development instead of in staging. Together with agile development, cloud-driven development improves the efficiency of your development team.
Rock Rocaberte is a cloud computing technology director with expertise in managing the entire software development life-cycle from design to production implementation. Rock co-founded Software.com, a startup internet messaging firm which became a NASDAQ listed company. He has managed and led high-achieving, global software engineering teams in startup and enterprise environments. His background includes professional services, product management, program management and technical marketing. Rock has a computer science degree from Rensselaer Polytechnic Institute and an MBA from UCLA.