What is software architecture in software development

What is system architecture?

Architecture is the preoccupation with the question of how to structure and orchestrate code. What architecture options are there and what are their advantages and disadvantages?

Anyone who deals with software development is often primarily concerned with writing code. In fact, that's not all, it is also important to plan and design the structure of the code - this is exactly the topic that the large field of architecture deals with.

In principle, architecture can be operated at the system and software level. While the system architecture deals with cross-process structures and their orchestration, the software architecture deals with the structure within a process. Some types of architecture exist on both levels, others only on the level of the system or software architecture.

The monolithic architecture

The simplest architecture is the monolith - there is only one single, large, self-contained structure. The monolith works without layers or other structure, which is why it most closely corresponds to a "non-architecture" that one does not have to think about, but that in a certain sense simply arises.

Client server

The next more complex approach is the client-server architecture, in which an application is broken down into two parts - a front end and a back end. In some situations, this architecture is the natural approach, for example in web development, which generally separates the UI executable in the web browser from the business logic executed on the server and the data access. Mobile applications also often follow this approach.

The great advantage of this approach is the possibility of being able to control and ensure consistency and integrity at a central point - but this is also the greatest disadvantage, because systems designed in this way have a single point of failure with the central server, which the system in More vulnerable to attack or censorship compared to other approaches.

Peer to Peer (P2P)

An alternative to this are P2P architectures that work in a decentralized and distributed manner, but manage entirely without a server: Instead, all nodes are equal to each other and they exchange data directly. Permanently disrupting an application set up in this way is very time-consuming, as the system itself searches for new ways around holes that have arisen - in case of doubt, via other nodes.

Historically, P2P systems are primarily known from the various more or less legal file sharing sites that were particularly widespread around the turn of the millennium. However, the same concepts, protocols and methods can also be used to develop business applications.

Service-based architecture

The distributed service-based architectures, which are based on the idea of ​​breaking down an application into smaller functional units that can be developed, operated, tested and updated independently of one another, represent a mixture of all of this. The basic principle is not new, because in the mid-1990s there were corresponding approaches with SOA and WOA, which, however, were still very complex technically.

In the meantime, micro- and nano-services are the common approach with this type of architecture, which is often combined with serverless approaches from the cloud. The ideas behind it, however, are still the same, namely to build an application as a network of individual, self-sufficient and autonomous services instead of developing a single large piece of software.

tl; dr: Architecture deals with the structuring and orchestration of software and the associated components. There are different types of architecture, each with their own advantages and disadvantages - from monolith to client-server and P2P to service-based architectures.

Golo Roden

Golo Roden is the founder, CTO and managing director of the native web GmbH, a company specializing in native web technologies.

Read CV »