A Development and Test as a Service (also called DTaaS, Dev/Test, or AppDev) cloud offering is a form of Platform as a Service (PaaS) with several unique features that facilitate application development teams.
First a Brief Description of a DTaaS cloud service
The DTaaS service consists of one or more virtual machines, each running an operating system and applications–all hosted by a cloud service provider. There are often multiple tiers of database, application, and web front-end virtual machines that could be scaled out for more capacity/performance when deployed to a production environment. All of the DTaaS virtual machines and applications are stored on non-production networks so that, often numerous, developers can program the applications, test, and continuously improve. There are often specialized Application Lifecycle Management (ALM) tools in place for the development staff to utilize as they create and test the applications. Finally, when the application is ready quality control/review or production use, the virtual machines and applications can be copied, moved, or “promoted” to production networks and server farms–now available to the end users or customers.
Customer Use Case
Customers benefit from a DTaaS by being able to quickly launch new virtual machines within minutes, perform testing of an application, and turn off the DTaaS service when no longer needed. Because all the servers are hosted with virtual machines in the cloud, the consuming organization does not have to pre-purchase and deploy a server farm in-house, sitting idly when an application development team has finished their work, or between application releases.
Example: A good example case scenario is where the application development team needs a new 10-computer environment deployed. With one purchase via the cloud management portal, 10 new virtual machines are provisioned with 2 SQL servers clustered, 2 front-end web servers, 2 middleware application servers, and 4 QA workstations (for testing to be used by developer team). Once launched, the application team can load their custom application code and begin further programming or testing. They can add or remove additional virtual machines as needed or snapshot the environment, test the system, and roll back the entire 10-system environment back to the snapshot state – retrying their test each time based on their base snapshot image.
There are often many versions of the environment held on the storage system so the development team can roll back or forward to various software versions. The development team can also operate multiple sets of the 10-system environment, so that the operations team can do routine testing or troubleshooting against a copy of the production/released code while the development team works to develop the next release. This requires multiple sets of the 10-virtual machine environment, but this is economical because everything is based on virtual machines that can be brought up and down, paying only for actual usage to the cloud provider.
Features of DTaaS
Specific features of a Dev/Test environment are detailed below. The basic offering and systems architecture is similar to IaaS, which means there is a pool of physical servers, each running a hypervisor system providing capacity for hundreds of thousands of virtual machines on-demand.
- Isolated Dev/Test network. Many organizations have strict policies and procedures that must be followed whenever a new virtual machine or application is installed in the production network. In a dev/test environment, the application developers need the ability to quickly bring VMs up, reconfigure them, install application code, test it, then shut the systems down. All of this is performed regularly during the time a development team is creating their application for production release, and can last for months. For the developers to have this “freedom” without being restrained by paperwork, isolating the Dev/Test network from the production network using a firewall is a common technique. Even if both the production and dev/test networks are hosted by a cloud provider, organizations want to protect their production network from untested or new application code. In fact, some dev/test systems provide a separate subnetwork for each application project, so that one application development team cannot interfere with others. This protects other development teams from such possibilities as an untested, ‘run-away’ application clogging the network with traffic.
- Multiple versions, snapshot and rollback. The ability of the application development team to make a backup or snapshot of a VM – or the entire environment – was briefly touched on earlier. This snapshot saves a copy to disk, and allows the development team to run numerous copies of their system. They can perform testing against a copy of their environment rather than on a single instance, and avoid potentially messing it up. If testing is successful,,a rollback of the environment is not necessary, and this set of VMs would become the new “baseline” release. This feature is a very significant benefit of using virtual machine/hypervisor technology, and by only paying for the usage of VMs and storage, the consuming organization truly benefits from on-demand just-in-time provisioning and shutdown in developing their application projects. Creating numerous copies of VMs with many different versions can consume a great deal of storage space, so a great deal of storage space can be required by the system. To keep costs low, delete older copies that are no longer needed.
- Application Lifecycle Management (ALM) tools. Many application development teams use application lifecycle management tools to help coordinate and facilitate the development process. These ALM tools can be installed on one more VMs within the cloud alongside the application VMs and database systems. The application development team uses the ALM tools to track their project milestones, maintain a code repository, perform QA checks, perform load-testing, and promote application revisions from Dev/Test into production. Popular ALM suites in the industry include offerings from Hewlett Packard and IBM. There are also many smaller, and even open-source. tools that an application team may use. Additionally, some cloud service providers that offer DTaaS will offer the ALM suites as an option – this is a nice benefit, since the ALM suite will already be configured and ready for use upon ordering, and the licensing costs the cloud provider charges may be less than a single customer would pay for their own copy.
- Promotion into staging and production. Some dev/test offerings provide the application development team with the ability to promote individual or multiple VMs to the next phase of the application lifecycle. For example, when all testing of an application release is completed in the dev/test environment, clicking on a “promote” button would automatically copy or move the VMs to a staging or production network within the cloud provider data center. This automated promotion greatly speeds the deployment process when releasing new versions of applications. Technically, this same promotion from dev/test into production can be utilized for any and all new applications, even COTS software, that the consuming organization wishes to test and configure before loading into the production network. An additional benefit to the customer is the ability to launch a new release of their application into production while maintaining the availability of their dev/test environment for the next release. If the dev/test VMs are no longer needed, they are simply de-provisioned and the customer stops paying for them. I recommend keeping a copy of all dev/test VMs in storage (ie. dormant VMs not incurring costs) so you can revert to previous code should the need later arise.
Figure: Sample Dev/Test Architecture
Pricing for Dev/Test offerings is typically in the same range as multiple VMs within an IaaS. You pay either a fixed fee and/or variable fees each day/week/month for using the VMs and storage. You can pick your VM sizes, OS templates, and storage amount just as you would in production. You often don’t need as large a VM in dev/test as you do in production, since you are not running many active users. This can result in savings by ordering smaller, less powerful VMs in dev/test. Any ALM tools you purchase will of course incur additional charges.
Categories: cloud computing