Joint Application Design & Architecture Review Board
We have mentioned a couple key processes in other posts that we want to explain in a little more detail. These two fundamental processes to producing scalable and highly available architectures are the Joint Application Design (JAD) and Architecture Review Board (ARB). These two processes help create strong bonds of communication between organizations thereby enabling shared ownership of products by all of the organizational disciplines within the extended technology team. These processes can fit into any PDLC be it waterfall, iterative (including Agile), or any variant of those. If you don’t have similar processes in place, we highly recommend you consider adding them.
The JAD is usually accomplished through a series of small meetings where the architecture and design of any feature of significant size is discussed. The participants of the JAD are the engineers assigned to a feature along with the operations/infrastructure engineers who have been assigned to assist with the feature in question. Ideally, the meetings are held early in the development process to ensure that the design of the feature receives input from both software and operations engineers and that it does not violate the architecture principles of scalability and availability. In an Agile development process these people can be normal members of the project team augmented by DBAs or systems administrators. The JAD members will present to the ARB if the feature meets the criteria for board review.
The ARB is intended to catch potential scale and availability problems before they are launched to the site. The ARB team should consist of the highest quality software and hardware engineers and members of the leadership team. The membership of the ARB ideally be static (i.e. change very little over time). The ARB should convene once every development cycle (monthly is usually sufficient) to review all features that are either greater than a specified number of development days (e.g. 5) or introduce a significant new technology (caching, language, service, etc). The ARB members should a set of clearly defined architectural principals against which to test the new product by asking questions such as “How does this allow us to scale horizontally, maintain higher availability, etc”. The development engineers and operation engineers who are responsible for the design of the feature present to the board and the board decides whether the feature was designed in such a manner that it will meet the scalability and availability requirements.
Hopefully these descriptions of the processes will give you general understand of what is required and help you see why they are critically important to the development of scalable architectures. There are obviously a lot of details about each of the processes that we have not covered in a post but this should get you started.
[...] Additionally, world class teams include an architectural principle addressing the need to be monitored as a criterion for release for any new functionality. ARB is a process or meeting in which the criterion is evaluated. Questions such as “How will we know the system is functioning properly” are asked, and a bad answer is one that sounds like “Because we log errors to a log file” whereas a good answer might be “Because we plot the rate of errors and timeliness of responses in real time and alert on statistically significant anomalies”. [...]