Cloud computing and virtualization allow you to create virtual machines and use cloud-based services for project management, problem management, and software construction with automated testing. This has encouraged agile software development in six ways.
Australian Federal Bank (Commonwealth Bank), one of Australia's leading providers of integrated financial services, has built a private cloud to run internal applications as a service. These applications use more than 300 Oracle databases that are merged into an on-demand Oracle instance that can be configured very quickly by the application development team within the browser interface. This reduces the preparation time for the development team to configure the production quality environment from three months to two minutes.
At the same time, Salesforce.com R&d has dramatically accelerated its product release cycle with cloud computing. The company publishes a major product each quarter, but incremental improvements are required every month, week, or even every day. The company's cloud infrastructure helps it build a single, unified code base that can be used by development teams located in different geographies. These teams have successfully combined agile development and continuous integration/delivery with cloud computing.
The federal bank and Salesforce.com R&d are just two examples of how Agile software development teams can use cloud computing to speed development operations and achieve efficiencies and benefits. Cloud computing and virtualization allow Agile development teams to seamlessly integrate multiple development, test, and production environments with other cloud services.
The following cloud computing and virtualization help improve six key aspects of Agile software Development:
1. Cloud computing provides unlimited number of test and development servers
Before agile development "encounters" virtualization or cloud computing, the development team is constrained by a single physical server to meet the needs of its development and production servers. However, after using a virtual machine or cloud instance, the development team has an unlimited number of servers. They do not have to wait for the physical server to start or continue their work until they are idle.
2. Turn agile development into a truly parallel activity
You may be using agile development while still experiencing latency when configuring server instances and installing the necessary underlying platforms, such as database software. Just as the federal bank reduces the time it takes to configure Oracle databases from three months to two minutes, agile development teams can quickly configure the servers they need instead of waiting for IT operations to be configured for them.
While the agile development approach is designed to eliminate inefficiencies and delays in software development, in practice it becomes a serial activity, and cloud computing can turn it into a parallel activity. This will help the Agile software development team improve efficiency and effectiveness.
3. Encourage innovation and experimentation
The ability to generate as many instances as needed can help agile development teams innovate. If a feature looks good, the team can quickly generate a development instance to encode and test it without having to wait for the next product release. When adding cloud computing to agile development, software builds faster, which encourages innovation and experimentation.
4. Enhanced continuous integration and delivery
As mentioned earlier, cloud instances and virtualization can greatly improve continuous integration and delivery. It takes a while to build and automate Tests. The Agile development team may then need to fix the code for the tests that failed during the automated test, and they need to fix the code repeatedly before all the tests pass.
In the Agile development team's own cloud environment or public cloud, owning a large number of virtual machines can increase the speed of continuous integration and delivery.
5. Bringing more development platforms and external services
Agile development teams may need to use a variety of project management, problem management, and automated test environments (if continuous integration is used). Many of these services are in the cloud as software as a service (SaaS).
· Agile development can use the combination of virtualization, private cloud, and infrastructure, a service-level public cloud. This product includes Amazon network services, Gogrid, Opsource and Rackspace Cloud.
· Then there are platform-service (PaaS) instances, such as Oracle Database cloud services, Google APP engine and salesforce.com platform force.com, all of which contain databases and locales as services.
· Finally, there are SaaS services dedicated to agile development, including Salesforce.com, Basecamp project management portals and TestFlight, which provide managed test automation for Apple iOS devices.
6. Simplify code branching and merging
In theory, agile development assumes that all functions can be decomposed into chunks of the same size. In practice, agile projects may experience the ability to develop work longer than build or even publish. In code refactoring work, the current version may require minor improvements and be used in the production process, while the code redesign is still in progress. In this case, the code branch is necessary. There are many versions of code branching and merging design development and upgrades, and through virtualization and cloud computing, you do not need to purchase or rent additional physical servers for these purposes.
In general, virtualization and cloud computing eliminates the reliance of test and development servers on physical servers, whether they are virtual machines that have only one operating system installed, or servers that have a full configuration of database software, language, or code base. Virtualization and cloud computing are also essential if the Agile team intends to adopt a continuous integration and delivery approach. In addition, virtualization and cloud computing allow agile development to turn into parallel activities rather than serial activities by eliminating delays in configuration. Enterprises can better integrate innovative development projects with business objectives.
(Responsible editor: The good of the Legacy)