Separator

Agile Architecture

Separator
Girish Managoli, Chief Architect, MindtreeFor nearly two decades now, Agile has heralded in an effective model of application development in the industry. With focus on early delivery and close collaboration between stakeholders,setting a standard for self-organizing and cross-functional teams, Agile has made rapid response to change possible.

Akin to civil building architecture, the software architecture lays down the fundamental structure of a software system by defining its critical components and composition. Software architectural decisions range from the macro dimensions such as n-tiers, data management, interoperability, platform independence, interfaces, API and non-functional requirements to the micro dimensions including algorithms. With multitude of languages available and business dynamics, a programming language decision is often a primary decision. A typical software project has critical role for architects who act as medium between the customers and the developers. The architects translate the business language to technical language understandable and realisable by the developers.

It is worth recapping the Agile manifesto at this point:

•Individuals andInteractions over processes & tools
•Working Software over comprehensive documentation
•Customer Collaboration over contract negotiation
•Responding to Change over following a plan

Agile is also guided by 12 key development principles. It clearly focuses on tangible, incremental and iterative results. Architecture, on the other hand, is considered as “under the hoot” activity, which is not visible to the management, often raising doubts of its benefits and results.
To bring the critical architecture activity under agile, it is now necessary to introduce two principles. We will call these Agile software development principles number 13 and 14.
13. Segment macro and micro architectures
14. Architect for long term, implement for short
term

I Got Garbage is a cloud platform that followed these two principles driven by Agile. The two new principles enabled the platform to reach market within one year. This project is a lucid example of application of Agile Architecture principles.

The project architecture is divided into two phases – macro architecture and micro architecture. Macro architecture is a defined time zone activity performed under agile framework.

Each sprint under the macro architecture phase tackles and defines one of the critical architectural aspects. By the end of macro sprints, the big picture of the architecture consisting of system layers, data infrastructure and interfaces emerges. This phase usually also involves creating proof of concepts within the defined sprints.

Under the micro phases, critical functions needed for social organizations under IGG were developed one by one in sprints. These functions included features such as CRM, fulfilment, grassroots, inventory management, logistics, market, product management, roster, sales and finance. The ground-work laid in macro architecture enabled rapid development of these micro features compliant to the well-defined high-level platform.
Following the guidelines, IGG segmented its architectural activities into macro and micro phases. Under the macro phase, these critical parameters were defined:

•Decision to use microservices
•Data architecture based on RDBMS
•A fundamental MULTI-X model (Multi-Tenant, Multi-
Domain, Multi-Language and Multi-Channel)
•REST API to support multi-channel apps
•Technical and Functional platform layering

These decisions laid the groundwork for further development of functional features under the micro development phase.

The next architectural stages under the micro architecture phase are performed within the implementation phase delivery sprints. Each delivery sprint defines a tangible deliverable output. Each sprint involves the complete lifecycle of development – requirements, architecture, design, implementation and tests.Each micro activity is planned to demonstrate a feature concretely. Over several micro activities, the system emerges and takes the shape of a coherent product. The micro architectures in these phases are designed compliant to the high-level macro architecture. Over a period of time, the complete system with cogent architectural features emerges. What we see by the end of these micro phases is a senile, realistic, usable system designed on a comprehensive architecture that represents the real-world use cases.

It is essential to mention here at this point that the micro architectures are guided by the 14th principle “Architect for long term, implement for short term.”

The focus of micro phases are short term delivery and demonstration of incremental features but the architectural activities under it are fundamentally long-term focused.An architect needs to have a long-term view of the problem and ensure the system can grow to meet the known (and unknown) requirements of the future. However, agile development is more immediate focused with priority on delivery of immediate and visible needs.One of the primary goals of an architect is to design the system for future extensibility. This leads to a fundamental conflict. The solution is to keep the long-term focus in architecture but immediate focus in delivery.

As an example, IGG needed domain modelling where a waste picker is labelled not as a worker specific to waste management domain but as a general civil worker. This is to facilitate future growth of the platform to cater to more social sectors such as agriculture, primary education and skill development of semi and un-skilled youth. IGG was set to become IGX over a period of time (I Got Crops, I Got Knowledge and I Got Skills). However, the challenge was to prove the social development model of “I Got” immediately. Only then, the management would be willing to invest further for IGX to manifest. Had the engineers spent the time and effort to realise social modelling for the entire IGX, they would have missed the boat. At the same time, it was essential to design an extensible system. Following the 14th principle, they designed domain modeling for the entire IGX, but implemented only for the immediate IGG need.

Agile is certainly not anti-architecture. The two new principles allow us to bring architecture under the Agile software development methodology.