Agile Application Development

Creating a more agile testing and development architecture.

 

Any organisation that develops or customises software in-house for use in their business, or develops software products to sell, no doubt has a significant reliance on IT.  When teams of developers and testers are involved, the minimum IT capabilities required usually include some form of source code repository, a solution to conduct and track software testing, and one or more environments that the software can be installed and run on for both developers and testers.

In order to maximise productivity and accelerate time-to-market, each developer and tester will ideally have access to their own end-to-end environment to work with in isolation. This includes full installations of all the systems, components and datasets that exist in Production.  A couple of advantages come from everyone having their own self-contained, Production-equivalent environment.  Firstly, each individual developer and tester can work independently and projects can be run in parallel without having to share datasets or risk software conflicts.  This enables business agility, accelerates time-to-market for new functionality and products, and allows more testing cycles to increase software quality.  Secondly, by having complete Production-equivalent environments, the new code can be run against, and interface with, full installations of all the other software and components that make up a complete Production environment - avoiding the need to write stubs and providing a truly Production-like run state.  

However, there are three major downsides to providing multiple end-to-end Production-like environments for development and testing.  Firstly, the cost of IT infrastructure to store and run many full environments concurrently is significant and can add up to many terabytes of storage alone.  Secondly, creating new Production-like environments and refreshing replicas of Production datasets requires a large investment in time and labour. Maintaining several environments to ensure configuration doesn’t "drift" away from the original Production environment is also an ongoing challenge.  Thirdly, the sheer complexity of instantiating a new end-to-end environment usually means it cannot be performed on-demand by developers and testers alone. Generally speaking the Infrastructure, Server, Virtualisation, Database and App teams need to be involved to bring it all together.

NetApp has unique technology built into its storage systems to address each of these challenges.  First off is the ability to create zero-space, near-instantaneous copies of anything from a single dataset to entire end-to-end environments using the NetApp FlexClone feature.  By effectively eliminating the storage capacity required for many end-to-end Dev/Test environments, a big IT infrastructure cost impediment is removed.  When new data is created in these zero-space Dev/Test environments, NetApp deduplication automatically ensures the underlying storage remains very space efficient over time.  

Secondly, NetApp also provides technology to minimise the time and labour required for the environment creation/maintenance process.  All functionality provided by NetApp storage systems can be controlled and automated using Microsoft PowerShell cmdlets.  A Dev/Test operations person can use an orchestration tool, such as Microsoft System Center Orchestrator, to automate the process of creating a new end-to-end environment or refreshing an existing environment.  Automation significantly reduces the labour effort for environment provisioning and maintenance, and when coupled with the near-instantaneous cloning capabilities of NetApp FlexClone, dramatically reduces the time the whole process takes.

Finally, once the environment creation and maintenance processes have been automated, it becomes a relatively straight-forward task to enable self-service provisioning.  Through tools such as Microsoft System Center Service Manager, a portal can be published to developers and testers where, with the click-of-a-button, they can have an up-to-date copy of Production, provisioned dynamically and rapidly!  For example, Service Manager can simply execute the underlying workflow from the orchestration tool, or it can perform more advanced functions such as check for available resources or request permission from a manager.

Through just a few of NetApp's many unique features, combined with tools such as Microsoft System Center Orchestrator and Service Manager, organisations can now provision dozens of self-service, full end-to-end environments for development and testing in a fraction of the time and cost it would traditionally take.  IT for Dev/Test that was typically seen as a time and cost burden on an organisation instead turns into an agile, business enabler that helps accelerate time-to-market, deliver higher quality software, and lower the cost of application development.