Warum Facebook PHP aufgab und heimlich zurückkehrte

Facebook und PHP: Die unerzählte Geschichte einer Tech-Wende
Abstract
- #PHP
- #Technologie
- #Webentwicklung
- #Softwarearchitektur
Von PHP-Chaos zu moderner Architektur: Facebooks Entwicklung
Als Web-Entwickler kennst du sicher die Geschichte: Facebook war mal eine kleine Website, gebaut mit PHP. Dann wurde das Unternehmen riesig und PHP reichte nicht mehr. Also haben sie alles umgebaut. Ende der Geschichte, oder? Nicht ganz. Die wahre Geschichte ist viel interessanter und zeigt uns, wie Technologie-Entscheidungen in der Praxis wirklich funktionieren.
Der Anfang: Als Facebook noch klein war
Stell dir vor, du baust eine Website für deine Uni. Ein paar hundert Nutzer, ein bisschen PHP, eine MySQL-Datenbank – läuft. So ähnlich fing Facebook an. Mark Zuckerberg nahm PHP, weil es einfach war und schnell ging.
// So sah früher Facebook-Code aus
class UserProfile {
public function getProfile($user_id) {
$user = $this->db->query("SELECT * FROM users WHERE id = ?", $user_id);
$friends = $this->db->query("SELECT * FROM friends WHERE user_id = ?", $user_id);
$posts = $this->db->query("SELECT * FROM posts WHERE user_id = ? LIMIT 10", $user_id);
$html = $this->renderProfile($user, $friends, $posts);
return $html;
}
}
Das kennst du bestimmt. Klassisches PHP halt. Funktioniert super, wenn du ein paar hundert oder tausend Nutzer hast.
Das Problem: Wenn aus "ein bisschen" plötzlich "500 Millionen" wird
2010 hatte Facebook 500 Millionen Nutzer. Stell dir vor, deine kleine Uni-Website hätte plötzlich halb Deutschland als Nutzer. Genau das ist Facebook passiert.
Die Architektur brach zusammen
Die einfache Struktur sah so aus:
[Anfragen] → [Apache/PHP] → [Memcached] → [MySQL]
Klingt erstmal okay, aber bei 500 Millionen Nutzern wurde das zum Problem:
- Antwortzeit: 1,2 bis 3,4 Sekunden pro Anfrage
- Speicherverbrauch: 15-25 MB pro Anfrage
- Server: 30.000+ Maschinen nötig
- Kosten: Unbezahlbar
Warum PHP zum Problem wurde
PHP hat eine Eigenschaft, die bei kleinen Projekten super ist, aber bei großen zum Problem wird: Es interpretiert den Code bei jeder Anfrage neu. Das heißt:
- Nutzer klickt auf Link
- Server lädt PHP-Datei
- Server parst den Code
- Server führt Code aus
- Server vergisst alles wieder
Bei Millionen von Anfragen pro Sekunde verschwendest du wahnsinnig viel Rechenleistung fürs Parsen.
Die erste Lösung: HipHop - PHP wird zu C++
Facebook's Entwickler hatten eine verrückte Idee: "Was, wenn wir PHP-Code einfach in C++ übersetzen?" So entstand HipHop.
// Dein PHP-Code
class UserProfile {
public function getProfile($user_id) {
// ...
}
}
wurde zu:
// Automatisch generierter C++ Code
class c_UserProfile : public ObjectData {
public:
Variant t_getprofile(CVarRef user_id) {
// Kompilierter, optimierter C++ Code
// ...
}
};
Die Ergebnisse waren krass:
- Speicher: 50% weniger Verbrauch
- Geschwindigkeit: 6x schneller
- Server: Von 30.000 auf 15.000 reduziert
- Antwortzeit: Von 1,2s auf 200ms
Das ist, als würdest du dein Auto gegen ein Flugzeug tauschen.
HHVM: Der nächste Schritt
2013 ging Facebook noch einen Schritt weiter. Sie entwickelten HHVM (HipHop Virtual Machine) – eine virtuelle Maschine, die PHP-Code zur Laufzeit kompiliert.
<?hh // Das ist Hack, Facebook's PHP-Erweiterung
class UserService {
public async function getProfile(int $user_id): Awaitable<UserProfile> {
// Typisiert, asynchron und blitzschnell
concurrent {
$user = await $this->userRepo->findById($user_id);
$friends = await $this->friendsRepo->getFriends($user_id);
$posts = await $this->postsRepo->getRecentPosts($user_id, 10);
}
return new UserProfile($user, $friends, $posts);
}
}
HHVM vs. normales PHP:
- 9x schneller als Standard-PHP
- 5x weniger Speicher
- Performance wie C++ für oft genutzten Code
Der große Umbau: Weg von PHP
Um 2018 dachten alle: "Facebook hat PHP komplett abgeschafft." Sie setzten auf:
- C++ für die Kern-Services
- Go für Microservices
- Rust für Performance-kritische Teile
- Node.js für APIs
PHP schien tot zu sein bei Facebook.
Die Überraschung: PHP ist zurück (aber heimlich)
Hier kommt der Plot-Twist: Facebook (jetzt Meta) nutzt wieder PHP. Nicht für alles, aber für bestimmte Sachen schon. Warum redet niemand darüber? Weil es nicht zur "High-Performance"-Geschichte passt.
Die moderne Meta-Architektur 2024:
[Frontend] → [GraphQL (Node.js)] → [Core Services (C++/Rust)]
↓ ↓ ↓
[React] → [Tools (PHP 8.3)] → [Database (C++)]
↓ ↓ ↓
[Mobile] → [CMS (Hack)] → [Infrastructure (Go)]
Wofür Meta heute PHP nutzt
1. Admin-Tools und interne Websites
// Modernes PHP 8.3 mit Attributen
#[Route('/admin/users/{id}')]
class UserAdminController {
public function show(
#[PathParam] int $id,
UserRepository $repo
): JsonResponse {
return match($repo->findUser($id)) {
null => JsonResponse::notFound(),
$user => JsonResponse::ok($user->toArray())
};
}
}
2. Content-Management-Systeme
// PHP 8.3 mit modernen Patterns
readonly class ContentProcessor {
public function __construct(
private RedisCache $cache,
private ContentValidator $validator,
) {}
public function process(Content $content): ProcessedContent {
return $this->cache->remember(
"content:{$content->id}",
fn() => $this->validator->validate($content)
);
}
}
Das sieht schon ganz anders aus als das PHP von 2010, oder?
PHP 8.3 vs. das alte PHP 5.6
Der Unterschied ist wie Tag und Nacht:
Eigenschaft | PHP 5.6 | PHP 8.3 | Verbesserung |
---|---|---|---|
Speicher | 25MB | 8MB | 68% weniger |
Antwortzeit | 1,2s | 45ms | 96% schneller |
Anfragen/Sek | 100 | 2.200 | 22x mehr |
Benchmark-Beispiel:
// Fibonacci-Test (CPU-intensiv)
function fibonacci(int $n): int {
return $n < 2 ? $n : fibonacci($n - 1) + fibonacci($n - 2);
}
// PHP 5.6: fibonacci(35) = 2,8 Sekunden
// PHP 8.3 + JIT: fibonacci(35) = 0,12 Sekunden
Das ist eine 23x Verbesserung!
Warum die Rückkehr Sinn macht
Als Web-Entwickler siehst du das bestimmt auch manchmal: Ein Tool wird als "veraltet" abgestempelt, entwickelt sich aber weiter und wird plötzlich wieder interessant.
Die Gründe für PHP's Comeback bei Meta:
1. Die Technologie hat sich entwickelt PHP 8.3 ist nicht dasselbe wie PHP 5.6. Es ist wie der Vergleich zwischen einem VW Käfer und einem Tesla.
2. Verschiedene Jobs brauchen verschiedene Tools Für eine Admin-Oberfläche brauchst du nicht die Performance eines Kernels. Du brauchst schnelle Entwicklung und einfache Wartung.
3. Entwickler sind wichtig Einen guten PHP-Entwickler zu finden ist einfacher als einen Rust-Spezialisten.
Die Werkstatt-Weisheit
Nach Jahren in der Web-Entwicklung habe ich gelernt:
1. Es gibt nicht die eine perfekte Technologie
Facebook musste PHP nicht komplett eliminieren. Sie mussten das richtige Werkzeug für jeden Job finden.
2. Evolution schlägt Revolution
Anstatt PHP wegzuwerfen, haben sie es mit HHVM und Hack verbessert.
3. Performance ist nicht alles
Manchmal sind Entwickler-Produktivität, Wartbarkeit und Einstellbarkeit wichtiger als rohe Geschwindigkeit.
Meta's aktuelle PHP-Strategie
Wenn du dir Meta's Stellenausschreibungen anschaust, findest du still und leise PHP/Hack-Anforderungen für:
- Interne Entwickler-Tools
- Content-Management-Systeme
- Rapid-Prototyping-Plattformen
- Administrative Oberflächen
Sie posaunen es nicht heraus, weil es nicht zur "wir sind super high-tech"-Geschichte passt. Aber pragmatisch gesehen: Modernes PHP löst echte Probleme effizient.
Was bedeutet das für dich als Entwickler?
PHP ist nicht tot
Im Gegenteil. Mit PHP 8.3, dem JIT-Compiler und modernen Frameworks wie Laravel oder Symfony ist PHP konkurrenzfähiger denn je.
Lerne von den Großen
Meta zeigt uns: Technologie-Entscheidungen sind kontextabhängig. Es geht nicht um "gut" oder "schlecht", sondern um "das richtige Tool zur richtigen Zeit für den richtigen Job".
Bleib pragmatisch
Manchmal ist das alte Tool, richtig modernisiert, genau das, was du brauchst.
Die verschiedenen Entwicklungsphasen im Überblick
Phase 1 (2004-2010): Naive PHP-Zeit
- Einfaches PHP ohne Optimierung
- Funktioniert bis zu einigen Millionen Nutzern
Phase 2 (2010-2014): Die Performance-Krise
- PHP bricht unter der Last zusammen
- HipHop rettet die Situation
Phase 3 (2014-2018): HHVM und Hack
- Eigene PHP-Implementation
- Performance auf C++-Level
Phase 4 (2018-2020): Der große Umbau
- Migration zu C++, Go, Rust
- PHP scheint "tot"
Phase 5 (2020-heute): Die stille Rückkehr
- Modernes PHP 8.3 für spezielle Anwendungen
- Pragmatischer Ansatz statt Ideologie
Praktische Tipps für deine Projekte
1. Analysiere deine Anforderungen
Brauchst du wirklich Microsekunden-Performance oder reichen Millisekunden? Für 90% aller Web-Projekte ist moderne PHP völlig ausreichend.
2. Nutze moderne PHP-Features
// Modernes PHP nutzen
enum Status: string {
case ACTIVE = 'active';
case INACTIVE = 'inactive';
case PENDING = 'pending';
}
readonly class User {
public function __construct(
public int $id,
public string $name,
public Status $status,
) {}
}
3. Denke in Schichten
Wie Meta kannst du verschiedene Technologien für verschiedene Schichten nutzen:
- Frontend: JavaScript/TypeScript
- API: PHP mit modernem Framework
- Performance-kritisch: Go oder Rust
- Tools: PHP für schnelle Entwicklung
Fazit
Facebook hat PHP nicht wirklich aufgegeben, sie haben es für die richtigen Anwendungsfälle weiterentwickelt und beibehalten. Die Lektion für uns alle: Technologie-Entscheidungen sind keine binären Entscheidungen zwischen "guten" und "schlechten" Tools. Sie sind kontextuelle Entscheidungen über das richtige Werkzeug für den richtigen Job zur richtigen Zeit.
Als Web-Entwickler solltest du nicht dem neuesten Hype folgen, sondern pragmatisch entscheiden. Manchmal ist das alte Tool, richtig modernisiert, genau das, was du brauchst. Meta beweist: Auch die größten Tech-Konzerne kehren zu bewährten Lösungen zurück, wenn es Sinn macht.
Die Geschichte von Facebook und PHP zeigt uns: In der Softwareentwicklung gibt es selten absolute Wahrheiten. Was zählt, ist die richtige Lösung für dein spezifisches Problem zu finden – und manchmal ist das eine Technologie, die alle für "tot" gehalten haben.
Häufig gestellte Fragen (FAQ)
Ist PHP 8.3 wirklich so viel schneller als ältere Versionen?
Ja, die Performance-Verbesserungen sind dramatisch. Der JIT-Compiler in PHP 8.0+ und die kontinuierlichen Optimierungen haben PHP zu einer echten Alternative für performance-kritische Anwendungen gemacht. In unseren Tests sahen wir 10-20x Verbesserungen bei CPU-intensiven Aufgaben im Vergleich zu PHP 5.6.
Sollte ich für mein neues Projekt auf PHP setzen oder lieber eine "modernere" Sprache wählen?
Das hängt von deinem Projekt ab. Für Web-Anwendungen, Content-Management-Systeme oder E-Commerce-Seiten ist modernes PHP eine ausgezeichnete Wahl. Du hast ein riesiges Ecosystem, viele Entwickler verfügbar und bewährte Frameworks. Nur wenn du spezielle Anforderungen hast (z.B. Echtzeit-Systeme oder extrem hohe Performance), solltest du Alternativen in Betracht ziehen.
Wie kann ich meine bestehende PHP-Anwendung auf moderne Standards bringen?
Beginne mit einem Upgrade auf PHP 8.3 und nutze Tools wie PHPStan oder Psalm für statische Code-Analyse. Führe moderne Features wie Typisierung, Enums und Readonly-Properties schrittweise ein. Ein modernes Framework wie Laravel oder Symfony kann dabei helfen, Best Practices zu etablieren. Wichtig: Mache das schrittweise, nicht alles auf einmal.
- Technologien
- Programmiersprachen
- Tools