Using an “agile process” is listed as one of the Top 10 Reasons for Project Success[1]. So, it’s not surprising that everyone wants to be agile these days. There are numerous books and blogs available that explain how to adopt agile practices from a people and process perspective, but what about technology?
Do the decisions we make when choosing our “build, run and manage” application platform affect our ability to adopt agile practices?
To answer this question, we’ve looked at the principles behind the agile manifesto[2] and identified two core themes to help characterize the agile features of application platforms.
The 2 Key Agile Themes
 |
Theme 1 – Delivery Efficiency
Adopting agile practices means we need to deliver working software fast and often and in a sustainable way i.e. we need to choose application services that streamline the software delivery cycle. |
 |
Theme 2 – Adaptable Designs
Adopting agile practices means we need to create simple architectures that can support the fast changing business requirements we see emerging in today’s dynamic markets i.e. we need to choose a application services that encourage developers to create simple and adaptable designs. |
The 10 Features of an Agile Application Platform
By using these two key themes as a guidepost, we identified an initial set of 10 application platform features that 1) optimize delivery efficiency and 2) encourage adaptable designs. Each item is detailed further below:
- An application framework that minimizes coupling
- An application framework with great support for Unit and Integration Testing
- A messaging technology that can run anywhere
- An application platform that supports performance testing in the development cycle
- An application server that streamlines application deployment
- A web server that can be deployed quickly and consistently
- A cloud-enabled application provisioning solution
- Platform components that support “Database as a Service”
- An adaptable database solution
- A performance monitoring tool that automatically keeps pace with application changes
1. An application framework that minimizes coupling
 |
We all know that the less coupled an architecture it is, the easier it is to change. So, we need to look for an application framework that helps developers minimize coupling at all tiers of the architecture. |
2. An application framework with great support for Unit and Integration Testing
 |
In order to maintain quality and speed in an agile environment, you need to choose an application framework that facilitates the creation and execution of unit and integration tests as quickly as possible. |
3. A messaging technology that can run anywhere
 |
The use of messaging as a part of an overall enterprise architecture design provides the ability to swap out one system for another, change a technology platform, or even change a vendor solution without affecting the client. But what’s the point in having an architecture that allows for change if the messaging technology you use restricts your choices of language, operating systems or Internet protocols? |
4. An application platform that supports performance testing in the development cycle
 |
Often agile projects leave performance testing until late in the sprint, or even separate it into a hardening sprint of its own. This can seriously impact the amount of rework required and often means “done” code is not really production ready. |
5. An application server that streamlines application deployment
 |
Agile teams provide frequent deployments of the software in order to receive feature validation from the business and to show project progress. Configuration and deployment meta-data can often be more complicated than application code and more error prone when transitioning from dev to production. |
6. A web server that can be deployed quickly and consistently
 |
The time taken configuring, patching and compiling a web server for your application is time taken away from feature development. |
7. A cloud-enabled application provisioning solution
 |
The agility offered by cloud computing means many agile teams are now building and deploying applications to run on private, public, or hybrid clouds. Without automation, the deployment of mult-tier application deployment topologies into one or more cloud environments can be complex and time consuming. |
8. Platform components that support “Database as a Service”
 |
Self-service database management increases developer agility and accelerates application development cycles. |
9. An adaptable database solution
 |
The iterative and evolving nature of agile development means that the application domain model is likely to change over each release. This means the chosen database solution needs to be flexible enough to keep pace with this changing domain model. |
10. A performance monitoring tool that automatically keeps pace with application changes
 |
If you are doing agile development successfully, you are going to be frequently updating your application and deploying it to production. If each deployment means manually modifing your application monitoring tools, there will either be a delay in the application going live or a delay in you getting real performance metrics. Therefore, you need a management tool that can keep pace without requiring a large amount of manual reconfiguration. |
Where does vFabric fit as an Agile Application Platform?
While this list of 10 embraces evolution through feedback from a worldwide community of agile practitioners, resources like the Agile Journal already recognize the value of how cloud platforms and agile fit together. Keep a look out for the second part of this blog post where we will provide a view of this list with example capabilities of the vFabric application platform. Until then, we would appreciate any thoughts or feedback in the comments.
References
[1] The Chaos Manifesto, 2012 – The Standish Group
[2] http://agilemanifesto.org/principles.html
 |
About the Author: Beth Brown has over 15 years of experience in optimising software development and application lifecycle management processes across multiple domains. Beth currently works within the vFabric Cloud Application Platform division as an agile services delivery specialist. Prior to joining VMware, Beth was the Pre-Sales Manager for Southern Europe at Microfocus; before that she ran Borland’s Northern European Technical Services Division. She has successfully led Agile, ALM and SOA transformational change programmes across large scale enterprises such as BT, Cap Gemini and NATO. |