Skip to content

Serlo Infrastructure

Stephan Kulla edited this page Jul 12, 2023 · 9 revisions

Our Infrastructure

We have a microservice architecture that looks like this:

Bildschirmfoto 2021-03-03 um 15 05 51

We made this switch for a plethora of reasons:

  • the monolith grew large and unwieldy
  • with microservice infrastructure it is much easier to incorporate a new microservice that is suited to a specific problem without refactoring the entire code base (an example: it was no problem to insert a new database layer in Rust)
  • in theory, integrating and working together with other learning software will be easier to do in the future
  • serlo.org was not fast enough for our needs any longer

The switch has not been made completely yet, so serlo.org is still sticking around for now. Currently, the Cloudfare worker decides which request is routed via serlo.org and which is going through the api. However, we are working on eliminating serlo.org as soon as possible.

List of repositories belonging to this project

How we publish our services? Where can I find a changelog?

frontend / cloudflare-worker

Both the frontend as well as the cloudflare-worker are published continuously. This means that always the most recent version on GitHub for each repository is also deployed in our infrastructure. Particularly:

Thus both repositories do not have a changelog. The list of merged pull requests already reflect the list of last changes. For the repositories you can find them at:

api.serlo.org / database-layer

For our backend micro services we use semantic versioning. Both repositories contain a changelog for each version:

In order to check which version is currently deployed you can have a look at the following files (server stands for api.serlo.org):

Legacy Infrastructure (not used any more)

Formerly, all requests would go through a monolith written in php (repo serlo.org-legacy). The path of a request would look like this:

Bildschirmfoto 2021-03-03 um 15 06 08

Overview of repositories

We have many repositories in our organization. They serve different purposes:

Clone this wiki locally