Modell eines IT-Produkts
1. Moderne Produkte
Heutzutage nennt niemand Produkte mehr einfach nur Programme. Ein modernes Produkt kann dutzende Programme, hunderte Internet‑Services und viele APIs umfassen, die von einem Cloud‑Rechenzentrum bereitgestellt werden (auch als Data Center bezeichnet), in dem es deployed ist.
Viele moderne Produkte (wenn nicht alle) arbeiten nach der Client‑Server‑Paradigma. Das bedeutet, auf Ihrem Gerät (Telefon, Laptop, Computer) läuft ein Programm, das für die Kommunikation mit dem Benutzer (Ihnen) zuständig ist, während die kritische Funktionalität auf einem entfernten Server liegt, wo alles Wichtige passiert ➡️🖥️
Manchmal kann Ihr Client mit mehreren unabhängigen Servern kommunizieren, oder der Server eines Produkts kann Anfragen an den Server eines anderen Produkts stellen. Es entsteht ein globales Netzwerk aus Clients und Servern, in dem alle miteinander interagieren.
Daher lässt sich das moderne Anwendungsmodell vielleicht besser als Client‑Internet‑Server‑Paradigma beschreiben. Die Kommunikation ist mittlerweile sehr vielschichtig. Es sind sogar sogenannte „intelligente Kommunikationskanäle“ entstanden, die selbst entscheiden, wem und wann Ihre Anfrage gesendet werden soll.🛰️📡
2. Clients
Client‑Programme lassen sich grob in vier Kategorien einteilen:
- 🖥️ Desktop‑Client — ein Programm, das auf einem Desktop‑Computer läuft.
- 📲 Mobile‑Client — eine App für iOS oder Android.
- 🌐 Web‑Client — eine Website/eine Webanwendung, die im Browser läuft.
- 🌍 Server‑Client — eine Anwendung, die auf einem anderen Server ausgeführt wird.
Jede dieser Kategorien lässt sich wiederum weiter in Komponenten unterteilen. Ein Web‑Client ist zum Beispiel eine Website oder Webanwendung, also besteht er aus Browser und Website, die in diesen geladen wird. Browser sind ebenfalls nicht alle gleich und können unterschiedlich funktionieren.
Selbst beim verbreitetsten Browser bleibt noch die Website, die in ihn geladen wird. Eine Website besteht normalerweise aus drei Dingen:
- 📄 HTML
- 🎨 CSS
- ⚡ JavaScript
„Nichts einfacher als das“, werden Sie sagen. Nur schreibt heute kaum noch jemand Websites nur mit HTML und JavaScript. Für die Entwicklung werden statt einzelner Bibliotheken mittlerweile vollwertige Frameworks wie React, Angular oder Vue verwendet ⚛️. Und das sind oft gar keine reinen Websites mehr, sondern vollwertige Webanwendungen mit Build‑Prozessen, Tests und eigenen Paradigmen.
Reines CSS wird ebenfalls selten direkt verwendet. Es gibt CSS‑Preprozessoren, die bei der Generierung helfen, sowie komplette CSS‑Frameworks. Sogar für E‑Mails existieren spezielle CSS‑Frameworks, damit Ihre Mail in Browsern und in den meisten Mailclients ansprechend aussieht 💌.
Auch reines JavaScript wird kaum noch direkt geschrieben — die großen Webanwendungen basieren meist auf TypeScript, das dann nach JavaScript kompiliert wird. Sie wissen schon...
3. Internet und Infrastruktur
Die Kommunikation zwischen Client und Server — was kann einfacher sein? Doch auch in dieser Beziehung hat sich vieles verändert.
Ihr Produkt wird höchstwahrscheinlich in einem modernen Data Center gehostet. Zahlreiche Anbieter weltweit bieten verschiedene Hosting‑Dienste für Ihre Produkte an, sei es auf deren Servern oder auf Ihren eigenen physischen Servern. Jeder Wunsch gegen Bezahlung.
Ein physischer Server ist längst nicht mehr rein physisch. Moderne Data Center bieten die Vermietung virtueller Server an. Ein virtueller Server ist ein virtueller Computer, und auf einem physischen Server können Dutzende davon laufen. Das macht Upgrades praktisch: wenn Sie mehr Speicher brauchen, können Sie ihn Ihrem virtuellen Server in Minuten hinzufügen ⏱️.
Dieser Ansatz ist jedoch ebenfalls im Wandel; derzeit ist der Umzug in die Cloud populär — das heißt, Ihr Produkt ist nicht nur auf einem virtuellen Server im Data Center deployed, sondern nutzt aktiv ein breites Spektrum an Infrastruktur und Services dieser Data Centers.
Sie brauchen einen Server zur Speicherung von Backups? Dafür gibt es fertige, komfortable Cloud‑Infrastrukturen. Sie benötigen eine Datenbank mit einer Verfügbarkeit von 99,9999999 %? Auch das ist verfügbar. Kafka, RabbitMQ, NoSQL? Alles existiert und lässt sich leicht konfigurieren. Man muss nur bezahlen.
Diese Data Centers und Clouds werden ein Teil Ihres Produkts. Beispielsweise betreibt Amazon zahlreiche Data Centers weltweit und bietet deshalb einen CDN‑Service an: Ihr öffentliche Inhalte werden an den Amazon‑Standorten zwischengespeichert, sodass Ihre Nutzer weltweit schneller darauf zugreifen können 🛰️.
Oder der Aufruf einer API Ihrer Anwendung kann über den Amazon API Gateway Service geleitet werden, der eine sehr flexible Konfiguration der Interaktion mit Ihren Services ermöglicht. Man kann Lasten auf verschiedene Services verteilen, DDoS‑Attacken abwehren, Datei‑Uploads automatisieren, intelligentes Caching konfigurieren und vieles mehr 🛡️.
Dadurch entstehen zwischen Client‑Anwendungen und Ihren Services zahlreiche „intelligente Kommunikationspfade“, die konfiguriert werden können und sollten. Selbst wenn Sie diese Aufgaben nie persönlich übernehmen, sollten Sie wissen, dass sie existieren und die Funktionsweise Ihrer Anwendung erheblich beeinflussen können.
Und dabei haben wir Themen wie Router, 5G‑Masten, Satelliten und Unterseekabel noch gar nicht berührt. Sie senden einen Videostream von Ihrem Server an den Client, und dieser ruckelt, weil die Verbindung des Clients schlecht ist und die Verbindung ständig abreißt. Raten Sie mal, wer dieses Problem lösen soll? Sie 😅
4. Server
Hinter dem Wort „Server“ können ganz unterschiedliche Konzepte stecken. Es ist hilfreich, die geläufigsten davon zu kennen.
🖥️ Physischer Server
Ein physischer Server ist Hardware, also ein eigenständiger Computer mit Ressourcen (CPU, RAM, Speicher), der zur Datenverarbeitung und zum Betrieb verschiedener Software‑Anwendungen eingesetzt wird. Solche Server werden in Data Centers installiert und bieten Kapazität für Hosting von Websites, Anwendungen, Datenbanken und anderen Diensten.
🪐 Virtueller Server
Ein virtueller Server ist ein software‑emulierter Server, der auf einem physischen Server läuft. Mit Virtualisierungstechnologien kann ein physischer Server in mehrere isolierte virtuelle Server aufgeteilt werden, von denen jeder ein eigenes Betriebssystem hat und unabhängig neugestartet sowie konfiguriert werden kann.
🕹️ Server‑Software (z. B. Nginx)
Server‑Software wie Nginx ist eine Anwendung zur Verarbeitung von Anfragen an Web‑Ressourcen. Nginx ist bekannt als Webserver, kann aber auch als Mail‑Proxy, Reverse‑Proxy in Microservices‑Architekturen sowie als Load Balancer eingesetzt werden.
💾 Datenbank‑Server
Ein Datenbank‑Server ist ein spezialisierter Server zur Verwaltung von Datenbanken und zur Verarbeitung von Anfragen an diese. Er ermöglicht zentrale Datenspeicherung und -verarbeitung und bietet Zugriff über das Netzwerk. Datenbank‑Server unterstützen Transaktionsverarbeitung, Suche und Datenänderungen und gewährleisten Zuverlässigkeit und Sicherheit der Speicherung. Beispiele für Datenbank‑Server sind MySQL, PostgreSQL, Oracle Database und Microsoft SQL Server.
Und so wird irgendwo in einem Rechenzentrum auf einem der virtuellen Server Ihr Projekt auf C++ 23 und STL laufen. Es wird mit einer Datenbank arbeiten, Anfragen über Nginx, Apache HTTP Server oder einen Load Balancer in AWS Elastic Load Balancing oder Google Cloud Load Balancer empfangen und seine Logs an Monitoring-Systeme wie Prometheus + Grafana, Elastic Stack oder Splunk senden 📈.
Doch gerade dank Ihres Codes werden Millionen Nutzer mit Ihrem Produkt zufrieden sein. Sie werden den Service nutzen, dafür bezahlen, und am Ende wird auch der Produktinhaber zufrieden sein. Die Aktien des Unternehmens könnten steigen, Sie erhalten Aktien‑Bonusse — und sind glücklich 💸. Ein echter Kreislauf des Glücks in der Branche :)
GO TO FULL VERSION