Do you have some of the qualities necessary to achieve hyper-agile software development? Ravello Systems, a start-up company, explores key guidelines for building a coveted development/testing lab by standardizing the cloud.
In a world where competitive advantage and business agility are almost equal, the reality is that companies often need a lot of time to develop and test software that drives their business.
In software development, hyper-agility requires that infrastructure and automation not only align with the development process, but also materially help to accelerate the cycle and improve overall quality. Under the premise of the burst and transient nature of the development/testing workload, it is economically infeasible to create an ideal fully deployed local laboratory. Now, however, with the new technology to standardize the cloud, the distance between hyper-agile development and testing is shrinking for most businesses.
Here are 10 guidelines that will help drive the development/testing lab to Nirvana. Although it is almost impossible to achieve this "dream lab" without spending a lot of money today, it is easy to build the ideal lab with all the latest technology: it will not only improve software quality, accelerate time-to-market, but also reduce overall costs.
1. Agile development/testing features burst patterns and actually requires an unlimited pool of infrastructure resources
Typical software development and testing is now automated, but because of resource constraints, not all tests can be done in parallel. For any enterprise, it is extremely costly for the development/qa team to wait for test results – not just a inefficient act, but also a loss to a more agile competitor in the business competition. Ideally, the developer should be able to access the resource pool without waiting, and the resource pool is endless in his view-public, private, or mixed-and so any number of tests can be done immediately and in parallel.
2. Developers should have access to the infrastructure's Self service channels
To take full advantage of potentially near-limitless resources, engineers need to be able to access resource pools on an as-needed, as-a-service basis through pre-defined licenses, rather than waiting for it to allocate resources and authorize access for each request.
3. Ability to use product replicas for testing
From the Ravello survey of development/test engineers, IT administrators, automation engineers, and DevOps, up to 75% of architects and IT administrators are aware that creating a development/test environment is too complex and time-consuming, and that these environments do not represent the product. While everyone can recognize the need for speed, let's not forget that software quality is another equally important aspect. Especially in a very smart environment, to ensure that the end result is always high quality, testing product replicas is challenging, but it is critical. For example, if we have a local VMware environment and want to test these applications on Amazon AWS Cloud Services, then the two types of environments should be completely seamless.
4. Infrastructure should be automated at the application level
Manually replicating complex multiple virtual machine applications, based on separate snapshots and replicas, is a cumbersome and error-prone task, especially when it comes to complex network configurations. In an ideal situation, you should be able to replicate multiple virtual machine applications and their networks through a simple click.
5. Continuous integration-from application to infrastructure
With continuous integration, developers should be able to submit code with multiple instances of the application (product replicas) and run a complete set of integrated tests at the same time. Developers need immediate feedback to understand that the functionality of the test works well in the class production environment (production like environment), or that there are problems and need to be revised. As an excellent tool to support continuous integration, Jenkins has been widely used. To be successful, however, it needs to be tightly integrated with the underlying infrastructure for seamless end-to-end automation-from code to hardware.
6. Development and testing teams around the world can easily collaborate
Imagine that a QA identified a bug that did not need to interrupt or postpone other ongoing testing efforts to invite developers to examine or debug the same application-no matter where they are. This rapid access and sharing will accelerate the development/test cycle and improve team collaboration.