Getting started
Start to learn the main concepts of Mia-Platform and how to use to develop your services
Start to learn the main concepts of Mia-Platform and how to use to develop your services
Discover more
Discover all the benefits of becoming a Mia-Platform's partner entering the program.
Discover more
Developers, as the word suggests, develop software. However, before you can start writing the code, you need to determine how the software will be composed. This software design process identifies the various elements that will make up the software, the type of interaction between them, and what communications with other software are required. The output of the design process is a visual representation of the software architecture in the form of a diagram illustrating all the various internal components, their properties, and the relationships among them and with other external systems.
Over time, patterns for designing software architectures have emerged. Such patterns are solutions to common problems: they are reusable in similar contexts and based on best practices from accumulated experience over time. Adopting an architectural pattern brings several benefits:
There are a great many architectural patterns, which now cover most of the case scenarios in software design. In addition, new patterns are being devised and shared continuously in open‑source communities, including new available technologies.
In this landscape, Giulio Roggero, CTO and co‑founder of Mia‑Platform, collected some of the most commonly used styles and categorized them in a mind map according to the type of solution they offer. The list is not exhaustive because, as mentioned, the landscape of available patterns is vast and constantly evolving thanks to cloud-native technologies, but this map can provide beneficial insights in many contexts.
Below you can see a preview of the map:
To download the file in high quality, for free and without the need to register, click on the button below:
Below you will find a brief explanation of the various groups into which the architectural patterns in the image are divided.
There are several ways to connect services and applications by linking them together:
The very first software applications adopted the Divide and Rule principle with modules and functions. The more complex the software becomes, the more it needs to be isolated so that it can evolve:
Events are a great way to reduce coupling between different software components. An event‑driven architecture involves increased complexity and is more difficult to manage, but in certain contexts, this type of solution is recommended:
The amount of data flowing through software each day is increasing exponentially. Managing data streams to extract useful information can be of enormous value:
Data is central to making valuable applications. Entire businesses can depend on how it is managed:
Based on the ability to combine information, it is possible to build autonomous agents capable of solving complex problems:
By combining different patterns, more elaborate artifacts can be made with a particular purpose, aiming to generate value for the users:
Send the file to friends and colleagues, and share it on social by tagging Mia‑Platform’s official profiles!
If you would like to report any other patterns that you would like to see in this map please write a comment below and we will get back to you as soon as possible.