Software Backbone

Containerization

One of the principles we wanted to implement in our project is to containerize our applications. Containerization is a technique that consists in encapsulating applications in independent and isolated units. This allows a fast deployment, and more security. It allows us greater modularity, since the installation that was once hard, and that impacted the system environment, is no longer necessary. To deploy an application, you only need one command, or a block in a YAML file. The package we use is Docker, which is a fairly common containerization service. For our project, containerization has been implemented so that all the necessary services can be started from a single command. Here are the services that are in production, and are all started as containers:

  • DNS: A BIND service that runs with read-only configuration files.
  • Database: A MongoDB database, with the database files in a /home/mongo directory.
  • Web server: A web server for the documentation (which you are on), with the HML files generated by Hugo read-only.
  • APIs: The application APIs, deployed for Network Rooms 1, 2, and 3, as well as for a test asset.
  • Topology Manager: The topology manager developed for the project.
  • Traefik: The reverse proxy, allows to provide the right service, depending on the requested URL.

To start these services with a single command, we use Docker Compose. Docker Compose is a tool that allows to deploy containers, and to configure them in a YAML file. The configuration YAML file used for our project is proposed in appendix 6.

Traefik

Traefik is a reverse proxy, whose specificity is to discover the services to provide from the Docker service. Its configuration is done via tags applied to containers, in the Docker Compose file. Via these tags, we can configure the URL that routes to the service, the service port, and other useful parameters for a reverse proxy. Traefik also provides a web interface, which allows to monitor the correct functioning of the service. Traefik rp Obviously, the reverse proxy service would not work for a user, without name resolution, so it works in union with DNS.

DNS and zone delegation

The DNS allows to translate domain names into IP addresses. It is one of the foundations of the Internet, and our project is no exception to this principle. For our project, we have been granted several resources:

  • an A registration: cloudstack.chalons.univ-reims.fr
  • a zone delegation: sdn.chalons.univ-reims.fr

These resources have been assigned as follows:

ServiceAddressPort
Traefik management interfacecloudstack.chalons.univ-reims.fr8080
Documentation and project reportdoc.sdn.chalons.univ-reims.fr80
Topology manager and web interfacesdn.chalons.univ-reims.fr80
APIsR[123].api.sdn.chalons.univ-reims.fr80