On December 4th, 2020, at the Cesena campus of the University of Bologna, Simone Grotti and Davide Giacomini from eResult hosted a seminar entitled: “Scalable Software Architectures: from design to containerized deployment”, intended for students of the Software Systems Laboratory course in the master’s degree course in Engineering and Computer Science.

The first part of the intervention dealt with describing the metamodel underlying the proprietary software platform Omniaplace, which allowed it to be used in countless contexts and application domains.

Omniaplace, as a complex software system, was taken as an example not only to show the advantages of a metamodel-based approach, such as the factoring of evolutions and functionalities within the platform which are then available for all installations, but also as a reference to describe the experience of eResult in the transition to a scalable cloud-native system, focusing on the architectural aspects, technologies, tools and innovative methodologies used for the realization of complex software systems based on microservices. At the end of the first part, the main components of architectures of this type were described, showing both the use of typical components of these architectures (service discovery, api gateway, …), and the decomposition of the platform in the various microservices.

The second part of the seminar started with an introduction to the DevOps methodology, in particular on the main objectives and the enabling technologies. Among these:

  • Automated build tools (e.g. Gradle)
  • Runtime to run containers (e.g. Docker)
  • Container orchestrators (e.g. Kubernetes)
  • Specific platforms to aggregate in one place and use all these technologies (e.g. GitLab)

The discussion, therefore, concentrated on a subgroup of these technologies, namely those specific to deployment, proceeding by abstraction levels starting from the lowest level ones. Docker was then introduced, explaining the basic concepts, the methods of use, the commands to manage containers, the alternatives, finally defining the strengths and weaknesses of this technology. Subsequently, Docker-compose, a more advanced product, was introduced. Also in this case, after a quick overview and introduction of the various aspects, the pros and cons have been analyzed. At the end of this section, docker-compose was shown in action using as an example a pipeline for ingestion of big data developed in eResult and responsible for the acquisition of data relating to the use by users of the Omniaplace platform.

The next step in the seminar was the introduction to the first true cloud-native technology, namely Kubernetes. Its infrastructure and all its components have been described, developing in the discussion all the main concepts necessary to understand and implement a solution using this type of platform. In particular, the concepts discussed in more detail were:

  • Objects
  • Workloads
  • Networking resources
  • Storage resources
  • Configuration resources

Finally, again analyzing the positive and negative characteristics of the technologies illustrated, the pipeline already shown was deployed on Kubernetes and the differences compared to the previous case were shown.

The next part of the seminar concerned Helm, a technology linked to Kubernetes that allows solving some problems related to its usage. Also in this case its operation and the reasons justifying its use were described. The aspects for and versus the use of Helm were once again exposed, together with possible alternatives. Then, the pipeline was re-deployed using Helm to show the differences and the practical advantages it offers.

At the end of the seminar, some Kubernetes features were exhibited, exploiting a deployment inherent to the microservices version of the Omniaplace platform, in particular the self-healing and autoscaling operation.