Design of modular, distributed and event driven systems: a practical approach
25-27 Oct 2022, GÉANT Amsterdam Office
Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality. Designing modular systems is something similar, but the problem shifts to the level of microservices and applications being deployed so that they work together and behave as if they were one piece of software. To be able to achieve this, new problems must be faced that are not present in monolithic systems – for example, maintaining data integrity or ensuring reliable and fast communication between components. This workshop will allow you to face them all for the first time at an architectural level.
The workshop is aimed at all GN4-3 project participants involved in developing software and interested in improving external quality of their products. This training is not only for programmers but everybody involved in software development, including team leaders, architects, developers, analysts and system administrators!
After the workshop, participants will be able to:
- consciously and professionally decide what to optimize architecture for, and which technical and organizational constraints have to be taken into account
- create professional architecture diagrams in C4 model, verify validity of their design, present it to the stakeholders
- decide which approach to architecture will be better in particular case: modular monolithic, synchronous microservices or distributed event driven system
- optimize the architecture for SLA and performance of critical path, without creating error-prone combinations
- optimize the system for maintainability and extensibility, so that more business value can be delivered by the implementing team
WHY IS IT NEEDED
The GEANT development community is developing dozens of projects increasingly turning to distributed architectures such as microservices to achieve better and better performance (e.g. scalability) of the solutions built. At the moment, the Software Catalogue tool (sc.geant.org) has information on 42 projects running today or in the recent past at GEANT, and this is just the tip of the iceberg if you include all the initiatives running in NRENs. Building and implementing an efficient and trustworthy distributed system is much more difficult than building and running a single application (a so-called monolith). The teams’ expanded knowledge of distributed solution design will certainly translate into their ability to create even more tools that are flexible, more efficient, scalable and fault-tolerant in the future. The workshop is aimed at those involved in software development, including architects, developers and system administrators.