š”š¼ ššØšš š®š¹š¹š¼šš²š±! BUD means Big Upfront Design where every architectural aspect is planned in detail before the first line of code is written. Folks working in tech for more than 15 years are nodding in agreement.
Early on I was taught that my role was create the blueprint, build reference samples, then guide teams to āš°š¼š±š², š¹š¼š®š±, š®š»š± šµš¶š ššµš² šæš¼š®š±ā. We made sure we could “transition” the finished project to the O&M team.
š¦š¼š³ššš®šæš² š¶š š»š²šš²šæ š±š¼š»š²! We’re used to building robust, scalable, and efficient systems. But how often do you design for change? As business needs and tech evolves rapidly, time for a mindset shift.
šš²šš¶š“š» š³š¼šæ š°šµš®š»š“š² š®š»š± š°š²š¹š²šÆšæš®šš² š¶š! We must craft architectures that are not only robust and scalable but also flexible and inherently adaptable. We must be able to react to changing mission/business needs, cyber threats, market trends, and tech advancements to secure a competitive edge.
Acknowledge that initial assumptions will evolve and the software should evolve too. –> Iām going to foot stomp the need for continuous recording of design decisions (ARDs).<–
“Building Evolutionary Architectures” by Neal Ford, Rebecca Parsons, and Patrick Kua lays out evolutionary architecture as being built to evolve as an inherent characteristic of the software. Evolutionary architecture is not a one-size-fits-all blueprint; it is an approach tailored to business needs.
When you design for change, do you make any initial decisions! š¬š¼š šš²šš°šµš®!!
-
High-Level Tech Stack Selection like choosing a primary programming language or data storage if known.
-
Basic Architectural Style needs identified along with flexible architectural patterns.
-
Core Security Aspects need to be in the mix from the start.
There are design patterns that support change. Keep in mind, you need to be thoughtful in understanding the software quality attributes and priorities of the stakeholder.
-
Event-Driven Architecture pattern allows for high flexibility and adaptability. The architecture responds to changes by reacting to events, providing a loose coupling between services and enabling asynchronous communication.
-
Strangler Fig pattern allows for incremental replacement of a legacy system by gradually replacing specific parts of the system’s functionality with new applications and services.
-
API-First Design treats APIs as first-class citizens, protecting that services can be replaced/updated without disruption.
-
Microservices Architecture pattern focused on decomposing into small, loosely coupled, and independently deployable services. The benefits are easier scaling, isolated deployments, and technology diversity.
Agile software is built in small increments; agile architecture changes in small, manageable ways over time. Enter the value of continuous feedback!
#DesignForChange #SoftwareArchitecture #DevSecOps #SomethingToNoodleOn
Pic by Robert Ruggiero on Unsplash