Information systems architecture is a branch of computer science whose purpose is to design all the bases and components required for the effective construction of an information system. Its use in companies is of vital importance, since it will allow the development of systems in a professional way, so understanding what it consists of is key to know when to use it and how far to go in its use.
To understand systems architecture you can think of building a house. You may decide to save some money and not use an architect to design the building plans. In the end, you may manage to build the house, but maybe not with the best overall dimensions and design.
On the other hand, if you hire an architect to help you with the house plans, you will have a preview of your house from different angles and perspectives, you will be able to visualize changes and other needs before starting construction. And you don't need to know about construction to be able to understand many of the things you see on the floor plan.
In the case of system architecture, something similar happens. If you develop a system without a blueprint, you can finish the system, but what happens when you have to make a change such as adding a new functionality or what happens if new developers enter the team who know nothing about the system and how it was built.
It is at that moment when we can consider that having a design of the system could be very useful to visualize the impact of that change or how useful it could be for a co-worker to understand how it was built and how all the pieces that make it up are connected.
Therefore, including architecture time in the development of a system will allow us to have a graphical view of many parts of the system and at the same time will help to follow good industry practices, speed up the incorporation of changes and facilitate training. This will ultimately be a letter of presentation of our professionalism to our customers.
Now, these and many other questions may arise:
Should I hire a system architect for this?
Where do I start?
Which design is the most important?
Should I design each and every component and its relationships?
System architecture is simpler than it seems and does not require, for the most part, the hiring of an architect. The knowledge, many times, we already have it in the same work team. If we have received the customer's requirements and they are clear, we can start with the main design, better known as the System Architecture.
The System Architecture is the highest level of abstraction we can find. This design will graphically show all the main elements of the system and their relationship. It is the first to be built when we want to better understand the customer's ideas.
This type of diagram, although it includes technical elements, most of the time the client understands it very clearly and allows him to visualize where his system will be running, which other components will help the system to work better, type of communication, protocols and security used according to his needs and of course, it will help him to determine some costs of the platform in general.
The simplest architecture of all is the Client-Server architecture. From this simple and widely used diagram you can visualize the architecture of your project, where there may be more servers, different types of communication equipment, different protocols, security, databases and other elements that together form the information system.
The system architecture does not show elements such as: screen layouts, class design or anything that includes code, database model, messaging design such as JSON messages or security policies. For all this we design different diagrams that I will explain in other articles.
Given the particularity of each information system, it is difficult to follow a standard for the design of the architecture, since there are pre-designed components specifically for certain platforms, such as AWS or Azure. And although there are many products on the market to make an architecture, I recommend using Draw.io. Besides being free, it has several very useful templates to design our architecture, has a lot of predesigned components and is quite intuitive when using it.
In summary, the architecture of an information system will help you to make visible all the components that are part of your project, it will allow you to identify components that had not been considered, as well as changes and risk factors in a timely manner. Remember to keep it updated as the system grows so that it will always be of great use.