2015 habe ich viel Zeit darauf verwendet neue und wiederentdeckte Programmierparadigmen zu evaluieren, unter anderem anhand der Sprachen Rust, Go und Elixir. Zunächst nur aus Interesse, in weiterer Folge aber mit der Absicht auch ein zweites Pferd in meinem Entwicklungs-Stall anbieten zu können, nämlich eines aus der funktionalen Welt.
In Hinblick auf praktisch unbegrenzte Skaliierbarkeit und höhere Performance habe ich auf die Sprache Elixir und das Webapplikationsframework Phoenix gesetzt.
Der neue Stack setzt sich aus den gleichen Schichten wie der Ruby On Rails Stack zusammen, einige der verwendeten Komponenten wurden aber ausgetauscht, zum Teil nachdem sie auch bereits einige Jahre unter Ruby On Rails von mir eingesetzt wurden, wie KVM, PostgresQL oder nginx.
Der Stack
- Hypervisor KVM (optional, falls Applikation auf Hardware betrieben muss, aber nicht bare metal)
- Betriebssystem Ubuntu Server
- Proxyserver nginx
- Applikationsserver Cowboy
- Datenbank Management System PostgreSQL (Optionen: MySQL, SQLite)
- Programmiersprache Elixir
- Webframework Phoenix inklusive Phoenix LiveViews
- CSS-Framework tailwindcss
- Javascript-Bibliothek Alpine.js
- Monitoring Monit
- Test Framework ExUnit
- Backup Borgbackup (verschlüsselt, dedupliziert, komprimiert)
- Dokumentation in Markdown, auf Wunsch auch als stand alone statische Website in Jekyll
Das Versprechen von funktionalen Programmiersprachen und Elixir, das auf der Erlang Virtual Michine aufsetzt, im Speziellen, ist sehr weit skalierender, gut test- und wartbarer Code.
In meinem größten offenen Projekt, in dem ich den Stack verwende, Panoptikum.social, zeigt sich das eindrucksvoll. Sollten Sie an Hintergrund von Panoptikum Interesse haben, beginnen Sie am besten auf der About-Seite, im Blog haben wir im ersten Jahr bereits mehr als 50 Artikel über Panoptikum verfasst.