Nikhil Barthwal is passionate about building distributed systems. He has several years of work experience in both big companies & smaller startups and also acts as a mentor to several startups. Outside of work, he speaks at international conferences on several topics related to Distributed systems & Programming Languages. You can learn more about him via his homepage: www.nikhilbarthwal.com.
A common practice among software engineers is to define the architecture of a complex system in the beginning and use it as a blueprint for future implementation. This approach works poorly in practice because requirements keep evolving, and the architecture defined initially is hard to change later on. This leads to expensive re-architecting and re-implementation work.
Evolutionary Architecture is an approach that treats architecture as an evolvable entity that has no end state but is designed to adapt to ever-changing requirements. An evolutionary architecture is defined as one that supports guided, incremental change across multiple dimensions.
This approach involves defining a set of architectural characteristics and an objective function called a fitness function, which evaluates how close a prospective design solution is to achieving its objectives. The fitness function is used to make guided incremental changes to the system.
Architectural characteristics are defined across multiple dimensions like scalability, security, agility, and ability to test & deploy, and the impact of each incremental change is considered across all dimensions.
The objective of this talk is to demonstrate how principles of evolutionary architecture can be used to design systems whose architecture does not degrade over time and develop an understanding of how system changes would impact the system's architectural characteristics across multiple dimensions.
Searching for speaker images...