Application development is now focused on rapid and continuous delivery. Previous “legacy” practices, following previously traditional ideas such as releasing applications once or twice a year, are now out of vogue. It is not just a trend but an expectation in some organizations that end-users will receive [even if they don’t want], frequent updates and new software releases, as often as quarterly or monthly. Many commercial software manufacturers are already using software release cycles measured in weeks if not days, launching not just bug fixes but true new features regularly rather than saving up these enhancements for a big “annual product launch.” Amazon.com has release periods of less than a day.
The automation and cloud management systems used by the public cloud providers such as AWS, can also be used in a private or enterprise cloud to facilitate rapid application development, testing, and continuous pushing to production as quickly as you and your organization can muster. The figure below compares notional application delivery cycles for a traditional application to a cloud-based continuous delivery application (future state).
Notional application delivery cycle—traditional and with continuous delivery
This image presents a comparison of traditional application development compared to cloud-based development. Technically, this new pace and style of application development is not specific to the cloud; however, the cloud does provide unique capabilities such as elasticity, software-defined networking, on-demand Development/Testing as a Service (Dev/Test), shared application lifecycle platforms and tools, and an enormous worldwide hybrid infrastructure.
Cloud-based application development
CONTINUOUS APPLICATION DEVELOPMENT AND DELIVERY
Although not unique to the cloud, the term ‘continuous delivery’ is sometimes called continuous application development, and is now considered the modern methodology for application development and delivery. Continuous delivery employs an Agile type approach to deliver continuous small software releases into production. To facilitate this application development lifecycle, continuous delivery in a cloud environment takes advantage of automation and software-defined networking to speed application development and promotion to production.
Through the use of VMs and cloud automation, new development environments consisting of one or more VMs, can provision services on-demand within minutes. You can create multiple sets of VMs so that multiple development teams can work in parallel or on different versions of the same application. Using VM snapshots and automation, these development VMs can be copied to a separate network segment/subnet for testing purposes while the original VMs remain intact for the developers to continue their work.
Again, using snapshot technology, you can run multiple testing scenarios and then reset the application back to the previous snapshot for more testing. Finally, you can promote the test VMs or copy them to a production network or subnet through the application development automation thereby launching the new application for production users. This lifecycle is repeated over and over again while also allowing continuous development and testing activities on the next application release. The figure below offers an overview of the continuous application development and delivery process.
Continuous application development and delivery process
What Dev/Ops is trying to do in essence, is to freeze the production system; and put all changes through development and testing.
In this context, consider adding preconfigured VMs with your favourite application life-cycle management (ALM) tools that automatically launch when you order a new Dev/Test subscription. Combine this with automated OS and VM templates, and you can truly appreciate how drastically cloud automation can improve a development team’s efficiency. Maybe the best part is that you can easily pause, archive, or terminate your Dev/Test environments when they are not needed and thus stop paying for the service—no servers to disassemble or clear, and your VMs are ready to become active whenever you need them again.
Although the continuous delivery process is nothing new to software teams, the integration of cloud automation and multiple software-defined network segments greatly speeds up and governs an Agile software development lifecycle. This new style of application development has essentially replaced the legacy pro- cesses of delivering major software releases in one- or two-year increments. Although the cloud is not necessarily responsible for this shift, it certainly provides further automation and elasticity to facilitate the continuous delivery model.