How Agile, DevOps, and Continuous Integration Changed Software Architecture
You can't talk about modern software development and testing without bringing up modern techniques and concepts like agile, DevOps, and continuous integration. We’re a fast-twitch industry thanks to the modernization of team and testing dynamics, and that increase in speed has forced other aspects of the process to become equally as malleable and fluid.
For the longest time, software architecture was something you built, adapted to your team or situation, and left in place—the old “if it ain’t broke, don’t fix it” mentality. Now, more rapid changes aren’t just expected, they’re necessary.
Neal Ford, a director and software architect at ThoughtWorks, believes that we need to build evolvable systems that can adapt and change at the speed that software now demands. In an interview with StickyMinds, Ford explains how the cloud has contributed to the changing nature of software architecture and how we can use it to our advantage.
“We now have the capabilities like the cloud. Here you can build things really quickly and speculatively and see if they're going to resonate with your audience before you invest a lot of time and effort into building your own infrastructure,” he explains. “And elastic scale is one of those things that we've wanted forever in architecture and now with cloud-based systems, we finally do have a reasonable use of elastic scale, and that is really nice because that frees up architects to start thinking about business problems more than just these purely plumbing mechanical problems that we had to solve over the last decade or so.”
Thanks to user expectations, mobile apps and other pieces of software are held to a higher standard. The audience is more hypercritical and aware that if your architecture isn’t responsive and you’re not able to build things quickly, they can move on to another company who can.
But it’s critical to note that even older architectures can be retrofitted. Ford believes in evolve-ability, and while this ability to adapt must be integrated into all modern software architectures, it can also be interested into what you already have.
“You can build architectures that evolve. It doesn't take a herculean amount of effort,” Ford continues. “In fact, you can incrementally start applying these ideas to your existing architecture.”
Change isn’t easy, but you can make it easier by building software architecture more willing to accept it. We live in an agile world, so look at your process and find ways to make quick alterations and updates as easy to apply as possible.