Managing performance is hard. Managing performance in distributed, fragmented architectures such as MicroServices Architectures (MSAs) is even harder: bottlenecks and slowdowns can happen at any point in a complex, most of the times asynchronous, interaction chain. The usual way organizations tackle performance issues is monitoring runtime expectations and addressing problems once they arise, in typical war room fashions, with huge teams involved in long, highly pressured investigation and troubleshooting sessions on the misbehaving production systems (often ending up “giving more power” to the underlying infrastructure as the default response).
Performance (and associated costs) should be considered as a first-class citizen, starting from thorough architecture and solution design phases, and encompassing performance management and tuning throughout the entire software development lifecycle. Based on direct experiences in a number of war rooms and tested beliefs of better ways of designing for performance, we discuss the mindset and approaches to enable shifting left performance management and tools in complex, distributed architectures.
Stefano Monti is an architect and senior advisor at Imola Informatica and he is currently involved in the design and management of digital transformation programs for customers, mainly in the financial sector. His current interests relate to software development lifecycle, with a specific focus on monitoring/observability, and end-to-end software quality and performance.