1. Moderne Produkte
Moderne Produkte nennt man schon lange nicht mehr Programme. Ein modernes Produkt kann aus Dutzenden von Programmen, Hunderten von Internet-Services und vielen APIs bestehen, die von einem Cloud-Datacenter (auch Datenzentrum genannt) bereitgestellt werden, in dem es deployed ist.
Viele moderne Produkte (wenn nicht alle) arbeiten nach der Client-Server-Paradigma. Das heißt, auf deinem Gerät (Smartphone, Laptop, PC) läuft ein Programm, das für die Kommunikation mit dem Nutzer (also dir) zuständig ist, während die kritische Funktionalität auf einem dedizierten Server läuft, wo alles Wichtige passiert ➡️🖥️
Manchmal kann dein Client mit mehreren unabhängigen Servern kommunizieren, oder ein Server eines Produkts kann den Server eines anderen Produkts ansprechen. Es entsteht so eine Art globale Netzwerk aus Clients und Servern, die alle miteinander arbeiten.
Deshalb ist es vielleicht besser, das moderne Modell von Anwendungen mit der Client-Internet-Server-Paradigma zu beschreiben. Es gibt inzwischen so viel komplexe Kommunikation. Es sind sogar sogenannte „smarte Kommunikationskanäle“ entstanden, die selbst entscheiden, wem und wann sie deine Anfrage schicken 🛰️📡
2. Clients
Client-Programme lassen sich grob in 4 Kategorien einteilen:
- 🖥️ Desktop-Client — Programm, das auf einem Computer läuft.
- 📲 Mobile-Client — App für iOS oder Android.
- 🌐 Web-Client — Webseite/Web-App, die im Browser läuft.
- 🌍 Server-Client — App, die auf einem anderen Server läuft.
Und jede dieser Kategorien kann man noch weiter unterteilen. Zum Beispiel ist ein Web-Client eine Webseite oder Web-App, also besteht er aus Browser und Webseite, die darin geladen wird. Browser sind auch nicht alle gleich und funktionieren unterschiedlich.
Aber selbst wenn wir den beliebtesten Browser nehmen, bleibt noch die Webseite, die darin geladen wird. Eine Webseite besteht meist aus drei Teilen:
- 📄 HTML
- 🎨 CSS
- ⚡ JavaScript
„Ist doch einfach“, sagt man vielleicht. Aber heute bauen kaum noch Leute Webseiten nur mit HTML und JavaScript. Für die Webentwicklung benutzt man heute nicht nur Libraries, sondern komplette Frameworks wie React, Angular oder Vue ⚛️. Und es sind nicht mehr nur Webseiten, sondern vollwertige Web-Apps mit eigenen Builds, Tests und Paradigmen.
Auch reines CSS wird kaum noch benutzt. Es gibt CSS-Präprozessoren, die dabei helfen, CSS zu generieren, und ganze CSS-Frameworks. Sogar für E-Mails gibt es spezielle CSS-Frameworks, damit deine Mail sowohl im Browser als auch in den meisten Mail-Clients schön aussieht 💌.
Und auf reinem JavaScript wird kaum noch programmiert — die großen Web-Apps werden meist in TypeScript geschrieben, das dann in JavaScript kompiliert wird. Du verstehst schon...
3. Internet und Infrastruktur
Kommunikation zwischen Client und Server — was kann da schon kompliziert sein? Aber auch in ihrer Beziehung hat sich schon viel verändert.
Dein Produkt wird wahrscheinlich in einem modernen Datenzentrum gehostet. Viele Firmen weltweit bieten Hosting-Services für deine Produkte an, egal ob auf ihren Servern oder auf deinen eigenen physischen Servern. Alles gegen Bezahlung.
Ein physischer Server ist heute nicht mehr nur physisch. Moderne Datenzentren bieten virtuelle Server an. Ein virtueller Server ist eine Art virtuelle Maschine, die auf einem physischen Server läuft. Mit Virtualisierung kann man einen physischen Server in mehrere isolierte virtuelle Server aufteilen, jeder mit eigenem OS, der unabhängig neu gestartet und konfiguriert werden kann.
Aber auch dieser Ansatz wird langsam alt. Der Trend geht jetzt zu Cloud-Hosting — dein Produkt läuft nicht nur auf einem virtuellen Server, sondern nutzt aktiv eine Vielzahl von Infrastruktur-Services der Datenzentren.
Wenn du Backups brauchst, gibt es dafür fertige Cloud-Infrastrukturen. Brauchst du eine Datenbank mit 99.9999999% Verfügbarkeit? Gibt’s auch. Kafka, RabbitMQ, NoSQL? Alles vorhanden und einfach zu konfigurieren. Nur bezahlen musst du natürlich.
Diese Datenzentren und Clouds werden Teil deines Produkts. Zum Beispiel hat Amazon viele Datenzentren weltweit, und bietet CDN-Services an: Dein öffentlicher Content wird auf allen Amazon-Datenzentren gecached, damit Nutzer weltweit ihn schneller laden 🛰️.
Oder du kannst dein API über Amazon Gateway API laufen lassen, das sehr flexibel ist. Es verteilt die Last, schützt vor DDoS, automatisiert File-Uploads, macht smartes Caching — alles möglich 🛡️.
Dadurch entstehen viele „smarte Kommunikationswege“ zwischen deinem Client-Application und den Services, die man konfigurieren und anpassen kann. Auch wenn du das nie selbst machst, solltest du wissen, dass sie existieren und die Performance deiner App stark beeinflussen können.
Und wir haben noch nicht mal Themen wie Router, 5G-Tower, Satelliten oder Untersee-Internetkabel angesprochen. Du sendest einen Videostream vom Server an den Client, aber die Verbindung ist schlecht und bricht ständig ab. Rate mal, wer das Problem lösen wird? Du 😅
4. Server
Unter "Server" können sich ganz unterschiedliche Dinge verbergen. Es ist hilfreich, die gängigsten zu kennen.
- 🖥️ Physischer Server
Ein physischer Server ist ein Gerät, also ein eigener Computer mit CPU, RAM, Storage, der Daten verarbeitet und Anwendungen hostet. Diese Server stehen in Datenzentren, wo sie Websiten, Apps, Datenbanken und andere Dienste bereitstellen. - 🪐 Virtueller Server
Ein virtueller Server ist eine Software-Emulation, die auf einem physischen Server läuft. Mit Virtualisierung kann man einen physischen Server in mehrere isolierte virtuelle Server aufteilen, jeder mit eigenem OS, der unabhängig neu gestartet und konfiguriert werden kann. - 🕹️ Server-Programm (z.B. Nginx)
Ein Server-Programm wie Nginx ist eine Software, die Anfragen an Web-Resourcen verarbeitet. Nginx ist bekannt als Webserver, kann aber auch als Mail-Proxy, Reverse-Proxy oder Load-Balancer in Microservice-Architekturen dienen. - 💾 Datenbank-Server
Ein Datenbank-Server ist ein spezieller Server, der Datenbanken verwaltet und Anfragen dazu verarbeitet. Er speichert Daten zentral, ermöglicht Zugriff über das Netzwerk und sorgt für Zuverlässigkeit und Sicherheit. Beispiele sind MySQL, PostgreSQL, Oracle, SQL Server.
Und irgendwo im Datenzentrum, auf einem virtuellen Server, läuft dein C#-Projekt mit ASP.NET Core. Es arbeitet mit der Datenbank, empfängt Anfragen über Nginx oder Azure Application Gateway, und sendet Logs an Monitoring-Systeme wie Azure Monitor oder Splunk 📈.
Dank deines Codes sind Millionen Nutzer zufrieden. Sie nutzen den Service, zahlen dafür, und der Owner ist happy. Die Aktien steigen, du bekommst Boni, und alle sind glücklich 💸. Das ist der wahre Happiness-Circle in der Industrie :)
GO TO FULL VERSION