Continuous Delivery

The Platform for the Agile Enterprise

Organizations are always looking to become more efficient and more productive. Deploying smaller changes to your application on a continual basis allows organizations to be more agile. While Stackato is not a continuous integration (CI) tool, it is one of the components that make continuous delivery easier to implement in your organization. For a successful implementation of continuous delivery of cloud-based applications, some of the tools you should have include a good  continuous integration system (e.g. Jenkins/Hudson or Bamboo), a flexible and easy-to-configure PaaS, and some sort of cloud or virtualization infrastructure in place.
How does Stackato fit into the workflow?
One of the important components to continuous delivery is having a consistent environment at various stages of the application lifecycle.  The image below shows a traditional application deployment workflow.  As simple as the flow seems, potential breakage points can occur each time the code is handed off to a different team (e.g. between Developers and QA). When there is a platform mis-match at the various points in the workflow, breakages and inefficiencies in the process can result.  
Continuous Delivery - Traditional Application Development Workflow without Stackato

Two Ways to Incorporate Stackato into your Process

Traditional Workflow

Stackato helps achieve continuous delivery by eliminating some of the inefficiencies that are the result of system incompatibilities. Once the application environment has been defined, it can then be replicated to other machines across different environments. The Stackato VM used for development is the same one used by QA for testing, and then is the same for staging and production. Because the systems are identical in all aspects other than scale, the inconsistencies in the supporting software and operating systems are eliminated. The result is a much smoother development process.
Continuous Delivery - Traditional Application Development Workflow with Stackato
Organizations with a traditional application development workflow can use Stackato to achieve continuous delivery. While the traditional method will work for organizations (with no disruption to their current process), organizations can also perform a different type of implementation that can take full advantage of Stackato’s multi-tenant nature.

Cloud  Application Delivery Workflow

With the traditional workflow, you can have a separate Stackato VM or cluster is running at each stage of the 
process. However, if you are currently using cloud infrastructure for production, then one option is to provide developers direct access to that environment for development as well. The multi-tenant architecture of Stackato enables organizations tokeep a separate space for development on the same cloud without impacting the productionCloud Application Continuous Delivery Workflow environment. Instead of pushing the application to a VM on their local machine, the developer can push the application to the production Stackato cluster. The development application instances are only exposed internally. 
In a traditional environment, the QA engineer would receive the application from the developer and deploy it on their own micro cloud for testing. Alternatively, with this Cloud Application Delivery Method, QA would test the application in place instead. If deficiencies are discovered, they are reported back to Dev, fixed in the source, and redeployed to Stackato. If the build passes and is ready for staging, a Release Engineer scales the application by increasing the number of application instances (or increasing the memory allocation for those instances), and binds it to a production database. To switch the new version into production, the external application URL is mapped to the new version and unmapped from the old production version (which can then be shut down).

Finding a Better Way

Regardless of how a private PaaS is incorporated into your continuous delivery workflow, Stackato will provide you with a consistent environment.  As an added benefit, code deployment (the "push" in PaaS terminology) is made simpler and faster by the PaaS's API and toolchain. The 'stackato push' command that deploys the code can be automated with continuous integration utilities (more on that in an upcoming post). Organizations have different comfort levels when adopting Agile IT practices, but Stackato gives them the flexibility to approach the application development cycle in different ways and result in an optimal workflow that works for them.
To learn more about Stackato, view the Continuous Delivery with Stackato datasheet. If you would like to see how easy it can be to deploy your apps to the cloud, download the free micro cloud and set up your platform in minutes.