What Is Software Architecture?
Architecture of a software is a plan that describes a set of aspects and decisions that are important to a software.
Importance of Software Architecture
Software architecture, no matter if you are building frontend, backend, native app, desktop application or any other system, it matters. Without it, it's super hard to continuously innovate on top of it.
Here are few problems to highlight importance of software architecture
- If there is no proper separation of concern, a simple change may take a large effort.
- If third party services are not abstracted away, it would be hard to replace them.
- If the relation between various components are not done right, it would be hard to write automated tests for them.
- If the code is not broken down into proper pieces and written in similar language of the domain it solves, it would be hard for new developers to understand the code base.
Essentially, if you want to ship anything more than a sample application, you need to pick a architecture consciously for your application and ensure you see it through. You have to be bit careful which architecture is right for your application but do pick one and stand to it.
One thing that I really like in any software architecture is it should help speak the domain language effectively (over something that focus on functional programming). This way business and engineering can speak the same language - essentially a software architecture, the heart of which, is the good old object oriented design. Inherently, OOPS when done right, enforces SOLID design principle.
At JTC, we wrote a Node JS boilerplate in TS that implements a simple architecture that helps keep sanity yet keep the startup agility.
The http server injects the dependencies into application (abstracted away to large extent from Express). The app dependencies are passed into controller.
Controller essentially uses injected repositories to persist the data. The repository abstracts out how and where the data is stored (file storage, Mongoose, SQL, InMemory DB etc) and converts the model into domain model before handing it over.
Other than software architecture, you gotta ensure that you keep maintaining your software to keep up its health. This articles has 8 tips to do so .
What’s the biggest thing you’re struggling with right now that we as a technology consulting company can help you with? Feel free to reach out to us at firstname.lastname@example.org. We hope our assistance will help!