bg_image
header

Laravel Octane

Laravel Octane ist eine offizielle Erweiterung für das Laravel-Framework, die die Performance deiner Anwendung dramatisch verbessert, indem sie Laravel auf Hochleistungsservern wie Swoole oder RoadRunner ausführt.


Was macht Laravel Octane besonders?

Statt bei jeder HTTP-Anfrage den Laravel-Framework-Code neu zu laden (wie bei PHP-FPM üblich), hält Octane deine Anwendung permanent im Speicher. Das spart Bootstrapping-Zeit und macht deine App viel schneller.


🔧 Wie funktioniert das technisch?

Laravel Octane nutzt Worker-basierte Server (z. B. Swoole oder RoadRunner), die:

  1. Die Laravel-Anwendung einmalig booten,

  2. Dann Anfragen wiederholt und schnell verarbeiten, ohne das Framework neu zu starten.


🚀 Vorteile von Laravel Octane

Vorteil Beschreibung
Höhere Performance Bis zu 10x schneller als klassische Laravel-Setups mit PHP-FPM
🔁 Persistente Worker Keine Neuinitalisierung bei jeder Anfrage
🌐 WebSockets & Echtzeit Direkte Unterstützung dank Swoole/RoadRunner
🧵 Nebenläufigkeit Möglichkeit zur parallelen Verarbeitung von Aufgaben
🔧 Built-in Features Task Worker, Route Watcher, Task Dispatching usw.

Contentful

Contentful ist ein sogenanntes Headless Content Management System (Headless CMS). Es ermöglicht Unternehmen, Inhalte (Content) zentral zu verwalten und flexibel über APIs an verschiedene Ausgabekanäle auszuliefern – z. B. Websites, Apps oder digitale Displays.

Was bedeutet „Headless“?

Traditionelle CMS (wie WordPress) verwalten Inhalte und präsentieren sie gleichzeitig auf einer fest verknüpften Website. Bei einem Headless CMS ist die „Präsentationsschicht“ (Frontend) vom „Content-Management“ (Backend) getrennt. Man hat also nur den „Kopf“ (Frontend) abgetrennt – daher der Begriff „headless“.


Hauptmerkmale von Contentful:

  • API-first: Inhalte werden über REST oder GraphQL APIs bereitgestellt.

  • Flexibles Content Modeling: Man definiert eigene Content-Typen (z. B. Blogartikel, Produkte, Testimonials) mit frei wählbaren Feldern.

  • Mehrsprachigkeit: Gute Unterstützung für mehrsprachige Inhalte.

  • Cloud-basiert: Keine eigene Server-Infrastruktur nötig.

  • Integration: Lässt sich gut mit Tools wie React, Vue, Next.js, Shopify, SAP, etc. kombinieren.


Für wen ist Contentful interessant?

  • Unternehmen mit mehreren Ausgabekanälen (Website, App, Smartwatch, etc.)

  • Teams, die Frontend und Backend getrennt entwickeln wollen

  • Große Marken mit internationaler Präsenz

  • Entwicklerteams, die ein flexibles und skalierbares CMS suchen

 


Headless CMS

Ein Headless CMS (Content Management System) ist ein Content-Management-System, bei dem das Backend (die Inhalte und ihre Verwaltung) vom Frontend (der Darstellung für die Nutzer) vollständig getrennt ist.

Im Detail:

Klassisches CMS (z. B. WordPress):

  • Backend und Frontend sind gekoppelt.

  • Die Inhalte werden im System erstellt und direkt als HTML über ein fest integriertes Theme angezeigt.

  • Vorteil: Alles aus einer Hand.

  • Nachteil: Eingeschränkte Flexibilität, schwer für Multi-Plattform-Ausgabe (z. B. App + Webseite + Smartwatch).

Headless CMS:

  • Nur Backend.

  • Inhalte werden über eine API (z. B. REST oder GraphQL) bereitgestellt.

  • Das Frontend (z. B. eine React-Webseite, native App, Digital Signage) holt sich die Inhalte dynamisch.

  • Vorteil: Sehr flexibel, geeignet für Multi-Channel-Ausspielung.

  • Nachteil: Frontend muss separat entwickelt werden (mehr Aufwand).

Typische Einsatzszenarien:

  • Webseiten mit modernen JavaScript-Frameworks (z. B. React, Next.js, Vue)

  • Mobile Apps, die denselben Content wie die Website zeigen sollen

  • Omnichannel-Strategien: Website, App, IoT-Geräte, etc.

Beispiele für Headless CMS:

  • Contentful

  • Strapi

  • Sanity

  • Directus

  • Prismic

  • Storyblok (Hybrid-Ansatz mit Visual Editor)

 


Data Manipulation Language - DML

Die Data Manipulation Language (DML) ist ein Teilbereich der SQL (Structured Query Language), der für das Bearbeiten von Daten in einer Datenbank verwendet wird. Mit DML können Benutzer Daten einfügen, abfragen, ändern und löschen – also genau das, was man im Alltag mit Daten in einer Datenbank machen möchte.

Zu den wichtigsten DML-Befehlen gehören:

Befehl Zweck
SELECT Daten aus einer Tabelle abfragen
INSERT Neue Daten einfügen
UPDATE Bestehende Daten ändern
DELETE Daten löschen

Beispiel:

-- Einfügen
INSERT INTO kunden (name, stadt) VALUES ('Müller', 'Berlin');

-- Abfragen
SELECT * FROM kunden WHERE stadt = 'Berlin';

-- Aktualisieren
UPDATE kunden SET stadt = 'Hamburg' WHERE name = 'Müller';

-- Löschen
DELETE FROM kunden WHERE name = 'Müller';

Wichtig:

  • DML arbeitet mit den Daten innerhalb der Tabellen, nicht mit der Struktur der Tabellen selbst (dafür gibt es die Data Definition Language, DDL).

  • DML-Befehle können oft rückgängig gemacht werden (z. B. durch ROLLBACK), sofern Transaktionen unterstützt werden.

Kurz gesagt: DML ist das Werkzeug, mit dem du Daten in einer Datenbank lebendig hältst – also ständig anpasst, liest und veränderst.


Doctrine Database Abstraction Layer - DBAL

Doctrine DBAL (Database Abstraction Layer) ist eine PHP-Bibliothek, die eine Abstraktionsschicht für den Datenbankzugriff bietet. Sie ist ein Teil von Doctrine, einem weit verbreiteten ORM-Projekt (Object-Relational Mapping), aber kann unabhängig vom ORM verwendet werden.

Ziel und Nutzen von Doctrine DBAL:

Doctrine DBAL bietet eine einheitliche API, um mit verschiedenen Datenbanken (wie MySQL, PostgreSQL, SQLite usw.) zu kommunizieren, ohne direkt SQL für die jeweilige Datenbank schreiben zu müssen.


Hauptfunktionen von Doctrine DBAL:

  • Verbindungsverwaltung:
    • Verbindungsaufbau zu Datenbanken über Konfigurationsarrays.

    • Unterstützung für Verbindungs-Pooling, Transaktionen usw.

  • SQL-Query-Builder:
    • Dynamisches Erstellen von SQL-Abfragen über eine objektorientierte API:

$qb = $conn->createQueryBuilder();
$qb->select('u.id', 'u.name')
   ->from('users', 'u')
   ->where('u.age > :age')
   ->setParameter('age', 18);
$stmt = $qb->executeQuery();
  • Datenbankunabhängigkeit:

    • Die gleichen Funktionen und Abfragen funktionieren mit verschiedenen DBMS, z. B. MySQL, PostgreSQL, SQLite.

  • Schema-Management:

    • Werkzeuge zum Erstellen, Ändern und Vergleichen von Datenbankschemata.

    • Nützlich für Migrationen.

  • Datentyp-Konvertierung:

    • Konvertiert Daten zwischen PHP und dem nativen Datenbankformat.

use Doctrine\DBAL\DriverManager;

$conn = DriverManager::getConnection([
    'dbname' => 'test',
    'user' => 'root',
    'password' => '',
    'host' => 'localhost',
    'driver' => 'pdo_mysql',
]);

$result = $conn->fetchAllAssociative('SELECT * FROM users');

Wann DBAL statt ORM?

Du verwendest DBAL ohne ORM, wenn:

  • Du mehr Kontrolle über SQL willst.

  • Dein Projekt keine komplexe Objekt-Mapping-Logik braucht.

  • Du bereits vorhandene SQL-Strukturen nutzen musst.


Fazit:

Doctrine DBAL ist ein mächtiges Werkzeug für sauberen, portablen und sicheren Datenbankzugriff in PHP, ohne sich auf ein vollständiges ORM einlassen zu müssen. Es liegt genau zwischen direktem PDO-Zugriff und einem vollwertigen ORM wie Doctrine ORM.

 


Inner Join

Ein INNER JOIN ist ein Begriff aus der Datenbankabfrage (SQL). Er wird verwendet, um Datensätze aus zwei (oder mehr) Tabellen zu kombinieren – und zwar nur die Datensätze, bei denen es in beiden Tabellen passende Werte gibt.

Beispiel:

Du hast zwei Tabellen:

 

Tabelle: Kunden

KundenID Name
1 Anna
2 Bernd
3 Clara

 

Tabelle: Bestellungen

BestellID KundenID Produkt
101 1 Buch
102 2 Laptop
103 4 Handy

Jetzt willst du wissen, welche Kunden Bestellungen gemacht haben. Dafür brauchst du nur die Kunden, die in beiden Tabellen vorkommen.

SQL mit INNER JOIN:

SELECT Kunden.Name, Bestellungen.Produkt
FROM Kunden
INNER JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID;

Ergebnis:

Name Produkt
Anna Buch
Bernd Laptop

Erklärung:

  • Clara hat nichts bestellt → wird nicht angezeigt.

  • Die Bestellung mit KundenID 4 hat keinen passenden Kunden → wird ebenfalls ignoriert.

Kurz gesagt:

Ein INNER JOIN zeigt nur die Datensätze, bei denen es Übereinstimmungen in beiden Tabellen gibt.


Salesforce Apex

Salesforce Apex ist eine objektorientierte Programmiersprache, die speziell für die Salesforce-Plattform entwickelt wurde. Sie ähnelt Java und wird hauptsächlich verwendet, um benutzerdefinierte Geschäftslogik, Automatisierungen und Integrationen in Salesforce zu implementieren.

Wichtige Merkmale von Apex:

  • Cloud-basiert: Läuft ausschließlich auf den Servern von Salesforce.

  • Syntaxähnlichkeit zu Java: Wer Java kennt, kann Apex schnell lernen.

  • Eng mit der Salesforce-Datenbank (SOQL & SOSL) verknüpft: Ermöglicht direkte Datenabfragen und Manipulationen.

  • Ereignisgesteuert: Wird oft durch Salesforce-Trigger (z. B. Änderungen an Datensätzen) ausgeführt.

  • Governor Limits: Salesforce begrenzt Ressourcenverbrauch (z. B. maximale Anzahl von SOQL-Abfragen pro Transaktion), um die Performance der Plattform zu sichern.

Verwendung von Apex:

  • Triggers: Automatische Aktionen bei Änderungen an Datensätzen.

  • Batch-Prozesse: Verarbeitung großer Datenmengen in Hintergrundjobs.

  • Web Services & API-Integrationen: Kommunikation mit externen Systemen.

  • Custom Controllers für Visualforce & Lightning: Steuerung von Benutzeroberflächen.

 


Memcached

Memcached ist ein verteiltes In-Memory-Caching-System, das häufig zur Beschleunigung von Webanwendungen eingesetzt wird. Es speichert häufig abgefragte Daten temporär im Arbeitsspeicher, um teure Datenbankabfragen oder API-Aufrufe zu vermeiden.

Wichtige Eigenschaften von Memcached:

  • Schlüssel-Wert-Speicher: Daten werden als Key-Value-Paare gespeichert.

  • In-Memory: Läuft vollständig im RAM, daher extrem schnell.

  • Verteilt: Unterstützt mehrere Server (Cluster), um die Last zu verteilen.

  • Einfach: Bietet eine minimalistische API mit grundlegenden Operationen wie set, get, delete.

  • Eviction (Ablaufstrategie): Verwendet LRU (Least Recently Used), um alte Daten bei Speicherüberlastung zu löschen.

Typische Anwendungsfälle:

  • Caching von Datenbankabfragen: Reduziert die Last auf Datenbanken wie MySQL oder PostgreSQL.

  • Session-Management: Speichert Benutzersitzungen bei skalierbaren Web-Apps.

  • Temporäre Datenspeicherung: Z.B. für API-Rate-Limiting oder kurze Zwischenspeicher.

Memcached vs. Redis:

  • Memcached: Schneller bei einfachen Key-Value-Speichern, skaliert gut horizontal.

  • Redis: Bietet mehr Features wie persistente Speicherung, Listen, Hashes, Sets und Pub/Sub.

Installation & Nutzung (Beispiel für Linux):

sudo apt update && sudo apt install memcached
sudo systemctl start memcached

Mit PHP oder Python kann Memcached über entsprechende Libraries verwendet werden.

 


Single Page Application - SPA

Eine Single Page Application (SPA) ist eine Webanwendung, die vollständig innerhalb einer einzigen HTML-Seite läuft. Statt bei jeder Benutzerinteraktion eine neue Seite vom Server zu laden, werden Inhalte dynamisch über JavaScript aktualisiert. Dies führt zu einer schnellen, flüssigen Benutzererfahrung, ähnlich wie bei nativen Apps.

Merkmale einer SPA:

  • Dynamisches Nachladen von Inhalten: Neue Inhalte werden per AJAX oder Fetch API geladen, ohne die Seite neu zu laden.
  • Client-seitiges Routing: Die Navigation erfolgt über JavaScript (z. B. mit React Router oder Vue Router).
  • State-Management: SPAs nutzen oft Bibliotheken wie Redux, Vuex oder Zustand zur Verwaltung des Anwendungszustands.
  • Trennung von Frontend und Backend: Das Backend dient meist nur als API (z. B. REST oder GraphQL).

Vorteile:

✅ Schnelle Ladezeiten nach dem ersten Aufruf
✅ Bessere Benutzererfahrung (keine Seiten-Neuladungen)
✅ Offline-Funktionalität durch Service Worker möglich

Nachteile:

❌ Erster Ladevorgang kann langsam sein (größerer JavaScript-Bundle)
SEO-Probleme (da Inhalte oft erst per JavaScript geladen werden)
❌ Komplexere Implementierung, insbesondere bei Sicherheit und Routing

Typische Frameworks für SPAs sind React, Angular und Vue.js.

 


Jest

Jest ist ein JavaScript-Testing-Framework, das von Meta (Facebook) entwickelt wurde. Es wird hauptsächlich zum Testen von JavaScript- und TypeScript-Anwendungen verwendet, insbesondere für React-Anwendungen, eignet sich aber auch für Node.js-Backends.

Hauptmerkmale von Jest:

  • Einfache Konfiguration: Jest funktioniert oft "out of the box", ohne komplizierte Einrichtung.
  • Schnelligkeit: Es verwendet Parallelisierung und intelligentes Caching, um Tests schnell auszuführen.
  • Snapshot-Tests: Ideal für UI-Tests, um sicherzustellen, dass sich die Darstellung nicht unerwartet ändert.
  • Mocking & Spying: Ermöglicht das Ersetzen von Abhängigkeiten durch Mock-Funktionen.
  • Code-Coverage-Berichte: Zeigt an, wie viel Code durch Tests abgedeckt ist.

Beispiel für einen einfachen Test mit Jest:

// sum.js
function sum(a, b) {
  return a + b;
}
module.exports = sum;

// sum.test.js
const sum = require('./sum');

test('addiert 1 + 2 und ergibt 3', () => {
  expect(sum(1, 2)).toBe(3);
});

Um den Test auszuführen, nutzt du:

jest

Oder falls du es in einem Projekt installiert hast:

npx jest