Pixelfuchs Geschrieben 20. September 2019 Teilen Geschrieben 20. September 2019 Hallo zusammen, habt ihr eine Literaturempfehlung über moderne Webarchitekturen für mich? Ich möchte gerne einen Überblick über aktuelle Webarchitekturen bzw. -technologien und deren Verwendung bekommen. Mir geht es dabei gar nicht darum solche Anwendungen zu konzipieren oder zu entwickeln, ich möchte lediglich einen Überblick bekommen und ein Grundverständnis bekommen. Damit steht das Thema DevOps sicherlich auch eng in Verbindung. Ich stolpere in letzter Zeit häufiger über Begriffe wie Docker, Ansible, Kubernetes, Serverless Computing etc. Bei serverseitigen Programmiersprachen landet man dann bei Python mit dem Django-Framework, bei Go oder bei node.js. Clientseitig sind es die JavaScript-Frameworks Angular.js oder React, die man häufiger hört. Die Grundausrichtung dieser Architekturen sind - nach meinem Verständnis - meist Microservices, die in einen Container "gesperrt" werden, über (REST-)Schnittstellen verbunden sind und über eine Software orchestriert werden. Ich würde gerne den Zusammenhang dieser Technologien im "Stack" genauer verstehen. Wie ist sind solche Webanwendungen aufgebaut? Was sind die Vor- und Nachteile der Technologien bzw. der Konkurrenten? Habt ihr in dieser Richtung eine kompakte (ca. 300-500 Seiten) Buchempfehlung in deutscher oder englischer Sprache für mich, um einen Überblick zu bekommen? Ich danke euch für eure Antworten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pr0gg3r Geschrieben 21. September 2019 Teilen Geschrieben 21. September 2019 vor 17 Stunden schrieb hendrik232: habt ihr eine Literaturempfehlung über moderne Webarchitekturen für mich? Ich möchte gerne einen Überblick über aktuelle Webarchitekturen bzw. -technologien und deren Verwendung bekommen Ich habe zwar keine Literaturempfehlung, deine Frage ist aber auch sehr allgemein und für jedes spezifische Gebiet gibt es mehr als genug Lektüre. Du würfelst viele Begriffe durcheinander, darum plauder ich einfach mal aus dem Nähkästchen, da ich vor allem in diesem Bereich arbeite und zu tun habe. vor 17 Stunden schrieb hendrik232: Wie ist sind solche Webanwendungen aufgebaut? Dadurch, dass man heutzutage viele Endgeräte hat (Browser, Smartphone-App, Smart-TV-App, was auch immer), geht man weg von serverseitigem Rendering über (Script)Sprachen wie PHP, Python (Django-Framework), usw. hin zu Schnittstellen (z.B. Rest), auf die dann von jeder App aus zugegriffen wird. Im Web-Frontend sieht es nun so aus, dass Single-Page-Applications (SPAs) entwickelt werden. Diese bestehen, wie der Name sagt, aus einer einzigen Seite. Das realisiert man vor allem mit JavaScript-Frameworks wie React, Angular (was ich hauptsächliche mache), VueJS o.Ä. Für die (REST-)API benötigt man natürlich auch einen Server. Dies kann bei einfachen Servern einfach eine Applikation sein, die Anfragen annimmt und Resultate zurück gibt. Zum Beispiel könnte man das auch mit serverseitigem Rendering über PHP machen, häufiger wird aber NodeJS (ggf. auch mit Express, NestJS oder einem anderen Framework) verwendet. Manche MVC-Frameworks wie Django bieten auch REST-Schnittstellen mit an. Das reicht erst mal für kleine Applikationen völlig aus. Werden Projekte aber nun größer, wird eine skalierung notwendig. Hierbei gibt es verschiedene Strategien. Man könnte zum Beispiel X Server hinstellen, auf denen X mal die gleiche Serveranwendung läuft und einen Proxy davor, der die Anfragen verteilt. Bei großen Applikationen ist es jedoch so, dass nicht alle "Teile" der Software gleich häufig verwendet werden. Darum verwendet man sogenannte "Microservices". Jeder Microservice ist ein Teil der Software, zum Beispiel ein Microservice für die Authentifizierung, einen für eine Timeline, einen um Bilder anzuzeigen, ein anderer für den Warenkorb, der nächste hat eine KI-Applikation laufen, die Informationen aus Bildern herausliest, die hochgeladen werden. Jeder Mircroservice kann in einem (Docker-)Container laufen und je nach Auslastung, kann orchestriert werden (z.B. über Kubernetes), also zusätzliche Container hochgefahren oder abgeschaltet werden. Mircoservices haben zudem den Vorteil, dass jeder Microservice mit einer anderen, dafür geeigneten Technologie entwickelt werden kann. Zum Beispiel kann der eine Container eine PHP-App beinhalten, der andere NodeJS mit ner MongoDB, der nächste Python, usw. Jede Abteilung kann also die Technologie verwenden, welche für ihre Zwecke am besten ist (z.B. ist Python für KI-Geschichten besser geeignet als PHP). Die Verwendung einer Microservice-Struktur hat spezielle Anforderungen. Zum Beispiel, wie autorisiert man einen Benutzer in den Containern untereinander? Was soll passieren, wenn ein Service zu lange für ein Response braucht? Wie kommunizieren die Container untereinander (muss nicht über REST sein)? Das sind alles Fragen, die man zu beantworten bzw. zu lösen hat. Hast du auf all das keine Lust oder Ressourcen oder das Knowhow, kannst du auch auf "serverless" setzen. Hierbei wird dir die Schnittstelle vom Serverless-Anbieter angeboten. Du benutzt einfach über deren Software-Libraries um deren User-Auth, Datenbank, Storage, usw. zu verwenden und musst dich dann nicht um die Skalierung dahinter kümmern. Dafür musst du das dann natürlich auch (ab einer gewissen Größe) bezahlen. vor 17 Stunden schrieb hendrik232: Damit steht das Thema DevOps sicherlich auch eng in Verbindung. Ich mag den Begriff nicht sonderlich, aber ich würde zu der Aussage eher "jein" sagen. Dev-Ops hat in meinen Augen mehr mit Continuous Integration und Continuous Delivery zu tun, wobei es natürlich auch Schnittpunkte mit den oben genannten Technologien gibt, zum Beispiel indem man Container baut, testet und (in einer orchestrierten Umgebung) deployed. Lange Rede kurzer Sinn: befass dich einfach nach und nach mit den Technologien. Baue eine kleine SPA, mit einem kleinen Server dahinter, schieb den in einen Container rein und bastel da einfach mal am besten rum. An Dinge wie Orchestrierung würde ich mir erst mal keine Gedanken machen, das kommt dann mit der Zeit. Wenn du dich eher in Richtung DevOps entwickeln möchtest, wäre vlt. ein guter Ansatz, agile Softwareentwicklung zu verstehen und wie DevOps dabei unterstützt. Pixelfuchs und Gooose reagierten darauf 1 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pixelfuchs Geschrieben 22. September 2019 Autor Teilen Geschrieben 22. September 2019 Hallo @pr0gg3r, vielen Dank für deine ausführliche Antwort. Das hilft mir weiter ? Vielleicht noch etwas zu dem Background: Ich komme aus dem Infrastrukturbereich. Ich habe viel mit Webservern (NGINX und IIS) und dem Betrieb von Reverse Proxies zu tun. Da ich sehe, dass sich die Webapplikationslandschaft von der monolithischen Webanwendung hin zu Microservices verändert, möchte ich gerne einen Überblick über die Architekturen bekommen. Eigentlich geht es mit um die Frage "Wer, warum mit wem?" ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pr0gg3r Geschrieben 22. September 2019 Teilen Geschrieben 22. September 2019 vor 6 Stunden schrieb hendrik232: Ich habe viel mit Webservern (NGINX und IIS) und dem Betrieb von Reverse Proxies zu tun. NGINX wird durchaus bei Docker-Umgebungen als Reverse-Proxy eingesetzt. Setz doch einfach mal eine Dockerumgebung mit ein paar NGINX auf und spiel damit ein wenig rum. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.