Software architecture is a metaphor derived from the architecture of buildings. It’s a way of describing the high level structure of an application and is considered to be a balance of science and art, but I'd describe it more as a silent killer. Get it wrong and it will handcuff you beyond escape. At that point, the business impact will be devastating.
A client came to us to add features to their 4 year old application. You’d expect development over this period of time to result in a refined and well architected application. In our experience this is rarely the truth. It was an overly complex system lumped into one application.
The condition of its architecture and lack of tests today gave us big hints as to how future development was going to pan out.
It was going to be slow and painful. It makes you wonder though, how does this happen? How does an application back itself into a corner?
One common cause is what developers refer to as a “tightly coupled” codebase. That means code that’s dependant on other code and is very resistant to change. As you attempt to add a new feature to a tightly coupled codebase you'll find you have to change other seemingly unrelated parts of your application. Repeat this process and your application development will slowly grind to a complete halt.
You’ll end up with a monolithic application: One application that does everything. It’s a frustrating tangled mess to deal with.
At first you won’t know you’re headed down this path. Development will be rapid, agile and appear to be going great. Fast forward several months and you’re now considering a rewrite and freezing all new features until it’s fixed.
As you attempt to scale a monolithic tightly coupled application, it will tax you in just about every way possible. It will:
- be more time consuming to add new features and you’ll have a higher chance of introducing bugs when doing so.
- be tricky to upgrade because you have to change your entire application in one shot.
- make it difficult to onboard new developers as they’ll have to learn so much before they can start any real work.
During the lifespan of a project, you should expect significant requirement changes. Architect your application accordingly.
Instead of a single large application, what you need is an application that’s modular and expects change. Modularise your application into logical, organised parts. You might even split those parts into a new application. Your admin area or marketing website are common examples of this.
Aside from the larger segments of the project, the details matter too. Within these modules, focus on keeping them decoupled.
Give your developers time to identify and refactor appropriate areas within your codebase.
Easily said but you’ll no doubt have other important todos you’re going to have to put aside. You need to be prepared to take the time to improve what you have without adding new features. This will help decouple and enhance your application’s architecture.
Writing tests (code that tests code) is crucial to confidently refactoring your codebase.
A quality test suite makes your codebase more open and inviting to being refactored.
Your developers will use it to check the external functionality still works while they refactor the internal workings.
Focusing on architecture regularly has some real business benefits too:
- You’ll be able to pivot and adapt your business more easily. This is vital for startups.
- Your developers will be happier, stay around for longer and it will be faster onboarding new development team members.
- You’ll be able to adopt new versions of software you rely on in smaller more manageable chunks. This is considerably less risky than attempting to upgrade an entire application at once.
- Most importantly you won't hit a wall where you're considering a rewrite or feature freeze while you attempt to fix your application's architecture.
Just remember, architecture is important but not urgent. But when it’s urgent, it’s often too late.
Let's work together
Tell us about your project and we'll get back to you shortly.
Join The Conversation
More On The Blog
8 Best Ruby On Rails Gems For eCommerce Applications
Everyone within the eCommerce space knows of Ruby On Rails. This framework is used by approximately 3,866,870 websites right now, showing just how efficient it can be for creating efficient yet beautiful web applications. Now, this unique Ruby-based framework comes with its fair share of add-ons and extra features to discover as well. One of the most important ones is the gems in Ruby On Rails.
Sol Dieguez — Nov 30, 2022
How To Improve Your eCommerce With PHP
With the ever-changing state of the IT industry and the fluctuating eCommerce development trends, it’s more than necessary to be flexible in trying out different tech stacks for your eCommerce site. Now, PHP is one of the most popular programming languages out there, and one with a long-standing track record.
Sol Dieguez — Nov 24, 2022
Tips For Getting The Most Out Of Your AWS Free Tier
This cloud computing service currently has over one million users, with enterprise-scale customers making up about 10% of their clients. This shows just how widely used AWS is and gives a solid reason to try it out: it seems to work for most eCommerce businesses out there. Now, there’s a way to check out AWS for free and see if it works for your online business.
Sol Dieguez — Nov 18, 2022