We’ve successfully navigated the first major section of “Accelerate” journey: Continuous Deployment. Now let’s take a look at the Architecture capabilities that you need.
It’s no surprise that a “loosely coupled architecture” is necessary for the organization to be high performing. A loosely coupled architecture allows for incremental changes to occur without relying upon other changes to be implemented concurrently.
So, what is loosely couple?
My wife likes puzzles of all shapes and sizes. For jigsaw puzzles she likes it when the size and shape of the puzzle pieces are very similar in appearance. This allows her to concentrate on the image that she is trying to bring to life. Rather than worry about how the pieces fit together she is worried about the final product. Much like a developer.
If, however, the pieces are randomly shaped then it makes it more difficult to put together. Add in a picture that is not clear and distinct (like the end product of any application development effort is clear and distinct at the beginning) and you have yourself a much more difficult puzzle.
Some people like these more complicated puzzles and that’s why Tangram was born. A simple puzzle where you have seven shapes that you need to combine to create an image.
These are the basic shapes.
And these are some of the images you need to construct.
But developing software is more than just seven shapes. It could be dozens or even hundreds of different components / services / microservices / functions calling one another. And while Tangram is fun with the seven basic shapes, add more shapes and the puzzles become increasing complex.
A loosely couple architecture has standard connectors, much like a jigsaw puzzle or Lego bricks, where it is easy to add / remove a single piece to see if you have the solution you are looking for. And why is it so easy? All of the pieces adhere to the same connectivity model of studs and tubes where the studs fit. It is easy to replace a red piece with a blue piece because the connectivity is the same.
A tightly coupled architecture is a Tangram of large proportions where each piece must be laid in an exact spot in order for the solution to work. No substitutions and no changes. (Yeah, the analogy is wearing thin, but I think you get my point.)
Loosely coupled allows teams to work independently as long as the interface remains the same. Tightly coupled means that they have to work in conjunction with each other as the slightest change in one area may impact the processing in another.
Loosely couple means that code can be migrated independently of each other. Tightly coupled? Not so much. If you have an application that has to be deployed as one big package, then you are tightly coupled, and, quite frankly, you’re probably doing yourself more harm than good.