๐ก๐ผ ๐๐จ๐๐ ๐ฎ๐น๐น๐ผ๐๐ฒ๐ฑ! 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