Home > Blogs > VMware vFabric Blog


How to Achieve Continuous Provisioning (CP) for Agile Development

The development practice of Continuous Integration has become a de facto standard for development teams trying to become more Agile. The benefits of Continuous Integration are extremely impactful and much has been written on the topic.  By automating the building and testing of software, a development team creates a repeatable and consistent build process.  By extending this process into the concept of continuous provisioning, a development team extends the same type of repeatability and consistency to application deployments.  If the up-front cost of automating the build and deployment of an application is nothing compared to the time and cost savings to be incurred, then why does automation stop there?  Why do most development teams still need to wait for the underlying infrastructure to be provisioned?  Why do developers and operations teams manually install and configure middleware (application servers, databases, etc)? 

This article will illustrate to teams how continuous provisioning can be leveraged during development.

Using Application Director For Continuous Provisioning

vFabric Application Director is a tool designed to automate the provisioning of applications to cloud-based environments.  If you haven’t seen it, you should check out the 5 minute demonstration or the post illustrating how to model applications. In addition to modeling and deploying applications and their environments to production, Application Director can also be used to incorporate continuous provisioning into the software development process.

How to incorporate Continuous Provisioning into your Agile practices

It is likely that the effort to provision an application environment at your organization includes many different people with different areas of focus.  Operations teams and development teams are often interdependent.  Operations teams measure success by producing stable environments, and development teams have a goal of delivering software functionality often and fast.  This silo approach frustrates communication and collaboration issues, two things Agile methodologies fiercely aim to avoid.  In contrast, by creating a unified DevOps organization, you can converge teams with a common goal of rapidly producing high quality software and services.

To incorporate Continuous Provisioning into your organization, a collaborative team environment should be formed.  To support this, Application Director assigns functional roles that can be applied to activities such as the creation and approval of application blueprints, managing the inventory of middleware available in the service catalog, and cloud template creation.

Integrating Application Director with Jenkins CI Server

Application Director can be integrated easily with any CI server (in this example, we’ll use the Jenkins CI Server) through a simple command line interface (CLI).  This approach could be used to teardown a complete application environment and quickly provision then deploy the end-to-end application environment on a daily basis (or whatever frequency makes the most sense for your project).

The first step is to create an application blueprint within Application Director to model your application and it’s environment.  This is accomplished by utilizing the intuitive drag and drop interface and catalog of cloud templates and middleware services.

Vfabric-application-director-app-blueprint

Next, a deployment profile needs to be created and saved.  A deployment profile encapsulates the specific settings and configuration for a specific environment.  In this case, a deployment profile could be targeting an integration, test, or dedicated environment for Continuous Provisioning.

Vfabric-application-director-deployment-profile

Once a deployment profile exists, it is possible to tear down and re-deploy (end to end) from a Spring Roo based command line interface provided by Application Director. The command line interface is invoked utilizing the following command:

java -jar darwin-cli.jar

Then Spring Roo commands are used to teardown and deploy:

teardown.roo

login –serverUrl https://192.168.110.204:8443/darwin –username admin –password vmware123

teardown –name "appd-Spring Travel-1.0.0-admin-37-4025b745-55d9-4f9f-8523-fd9ca2d89de4"

exit

deploy.roo

login –serverUrl https://192.168.110.204:8443/darwin –username admin –password vmware123

deploy –name "Spring Travel-1.0.0-dev_profile"

exit

You may have noticed a specific deployment identifier used when tearing down a deployment.  Because this process will be automated, it is important to obtain the latest deployment identifier when deploying in order to teardown the specific deployment before the next deployment.  Using the powerful sed utility, I’m able to modify the teardown Roo script in place so that it is ready for the next cycle.

deploy.sh

deployment_name=`java -jar darwin-cli.jar script –file deploy.roo | sed -n 's/^Name *\(.*$\)/\1/pw deploymentName.log'`

sed -i 's/\(^teardown –name *\).*$/\1\"'"$deployment_name"'\"/' teardown.roo

These scripts can now be called from a Jenkins build job utilizing a plugin such as the Post Build task plugin, similar to how you would accomplish continuous deployment with an application server (see Integrating Jenkins and Apache Tomcat for Continuous Deployment).  Importantly, the Continuous Provisioning process should include the same activities as Continuous Integration to ensure the latest application code is being tested against the latest version of application infrastructure.

Summary

It is possible to extend the same Agile benefits of continuous integration and deployment to the process of provisioning application infrastructure.  Continuous provisioning encourages interative based improvement, better collaboration, and improved system visibility.  By continuously improving the process of application provisioning, technical excellence can be achieved for all the moving parts of a system.

Jonathan-Fullam-picture-2404

About the Author: Jonathan Fullam has over 12 years of experience with software development with a heavy focus on enterprise Java based applications and open source frameworks. Currently employed by SpringSource, a division of VMware, Jonathan advises enterprises on building scalable architectures using modern technologies and tools.  With a passion for public speaking, he most recently presented Test Driven Developement at the 2011 Java Server Side Symposium.  Jonathan received his education from The College of New Jersey where he obtained a B.S. in computer science.

This entry was posted in Application Director, Spring and tagged , , , , , , , , , , on by .
Stacey Schneider

About Stacey Schneider

Stacey Schneider has over 15 years of working with technology, with a focus on working with sales and marketing automation as well as internationalization. Schneider has held roles in services, engineering, products and was the former head of marketing and community for Hyperic before it was acquired by SpringSource and VMware. She is now working as a product marketing manager across the vFabric products at VMware, including supporting Hyperic. Prior to Hyperic, Schneider held various positions at CRM software pioneer Siebel Systems, including Group Director of Technology Product Marketing, a role for which her contributions awarded her a patent. Schneider received her BS in Economics with a focus in International Business from the Pennsylvania State University.

One thought on “How to Achieve Continuous Provisioning (CP) for Agile Development

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>