Agile application

An agile application is the result of service-oriented architecture and agile development paradigms. An agile application is distinguished from average applications in that it is a loosely coupled set of services with a decoupled orchestration layer and it is easily modified to address changing business needs and it is scalable by design.

Using agile applications development paradigms, a set of services can be built to address business specific functional components. These services can be exposed using any one of the standard communication protocols including web services. A well designed agile application will standardize on a common communication protocol and a common data model. The services can then be orchestrated using a decoupled layer to implement business logic. There are many tools by different vendors (IBM, Intel etc.,) in the industry that can support the orchestration layer.

The decoupled nature of an agile application permits it to accommodate fault tolerance and scalability. For example, scalability is addressed through focusing the attention of the QA team in the set of services that are causing the bottleneck as opposed to trying to solve scalability for the entire system which can be a much bigger problem. Similarly, fault tolerance can be achieved through deploying multiple instances of a service. If one service fails, another instance can pick up the load. For stateless services, this can lead to continuous availability.

Following the Agile Development paradigm, each unit of development cycle can be focused on a single service. Furthermore, multiple of these development cycles can run in parallel leading to faster development completion.

Agile is a means of responsiveness based on customization rather than stable production or standardization.