Architecture of mrupp.eu

Server and component architecture

See this post for details on my server infrastructure.

The website is split into different microservices which are managed in a docker-compose stack.

Node.js app

The backend-logic ist implemented in Node.js. It does various things:

  • Delivering dynamic and static content
  • Render Markdown and React to html
  • Compile sass to css
  • Caching
  • Sitemap generation

Font cache

Instead of using Google-Fonts directly, I wrote a microservice that downloads, caches and delivers Google-Fonts. That means, that Google does not gain any information about the users of this website.

This part of my website is written in Kotlin/Spring Boot.

Github stats

This is a very small microservice that uses the GitHub API to periodically update some information on this website (followers…). It is written in Node.js.

Frontend

The site uses sass and React for templating. The server-side rendered content is cached in a Redis database.

I also use client-side React in some parts.

Monitoring

The services are regulary checked using an Icinga2/Graphite stack, hosted on another server.