Transcription

Sicheres Generieren auf dem Webserver private Schlüssel sollten niemals unsicher übertragen werden Bei der Anfrage kann eine sog. „Certificate Signing Request“ (CSR) generiert Enthält folgende Informationen Land Bundesland Stadt Organisation Abteilung Common Name (Bezeichnung / URL) Mail-Adresse asymmetrischer privater RSA-Schlüssel verbleibt auf dem ServerWeb Engineering IIDuale Hochschule Baden-Württemberg71

CSR generieren Ein CSR kann bspw. mit OpenSSL generiert werden Die Anfrage wird anschließend bei der CA für die Generierung einesZertifikats verwendetopenssl req -nodes-newkey rsa:4096-sha256-keyout 'meinedomain com.key'-out 'meinedomain com.csr'-subj '/CN meinedomain.com/C DE'! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg72

Installation auf dem Webserver (nginx) Dem Webserver muss mitgeteilt werden, dass eine Website via SSL mit einembestimmten Zertifikat bereitgestellt werden soll Port ist TCP 443 Protokolle sind unterschiedlich Anpassen der Config unter „/etc/nginx/sites-available/meinedomain.com“# Domain-Nameserver name meinedomain.com www.meinedomain.com;## SSL / TLSlisten 443 ssl;## Protokolle - hierzu spaeter mehrssl protocols TLSv1 TLSv1.1 TLSv1.2;## Öffentlicher und privater Schluesselssl certificate/etc/ssl/meinedomain.com.public;ssl certificate key/etc/ssl/meinedomain.com.private;! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg73

Installation auf dem Webserver (Apache) Dem Webserver muss mitgeteilt werden, dass eine Website via SSL mit einembestimmten Zertifikat bereitgestellt werden soll Port ist TCP 443 Protokolle sind unterschiedlich Anpassen der Config unter „/etc/apache2/sites-available/ssl.conf“ VirtualHost *:443 SSLEngine cSSLCertificateKeyFile /etc/ssl/meinedomain.com.private# Pfad zu den docs/ /VirtualHost ! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg74

Installation auf dem Webserver (Apache) Dem Webserver muss mitgeteilt werden, dass eine Website via SSL mit einembestimmten Zertifikat bereitgestellt werden soll Port ist TCP 443 Protokolle sind unterschiedlich Anpassen der Config unter „/etc/apache2/sites-available/ssl.conf“ VirtualHost *:443 SSLEngine cSSLCertificateKeyFile /etc/ssl/meinedomain.com.private# Pfad zu den docs/ /VirtualHost ! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg75

Installation auf dem Webserver (Windows IIS)tr.im/modbesWeb Engineering IIDuale Hochschule Baden-Württemberg76

Welche Protokolle sollen verwendet werden? SSL ist mehr als nur ein Protokoll, sondern vielmehr eine Familie von Protokollen Unterstützung von Fallback für altere Systeme Verschiedene Plattform erfordern unterschiedliche ProtokollstandardsWeb Engineering IIDuale Hochschule Baden-Württemberg77

Poodle Wo?Ist ein Fehler im (veralteten) SSLv3-ProtokollSicherheitslücke ist seit 1999 anwendbar. Warum schlimm?Verschlüsselte Datenpakete können durch eingeschleusten Javascript-Code entschlüsseltwerden. Dies kann auch durch Dritte als „Man-in-the-middle“-Attacke durchgeführt werden. Wie schützen?Serverseitig SSLv3 Protokoll deaktivieren, bzw. TLS FALLBACK SCSV verwenden.Web Engineering IIDuale Hochschule Baden-Württemberg78

Heartbleed Wo?Ist ein Fehler in OpenSSL 1.0.1 bis 1.0.1fund wurde ab 1.0.1g behoben Warum schlimm?Ursprüngliche „Heartbeat“ (periodische Kontaktaufnahme) Funktion kann überlastet werden und eskönnen Teile des aktiven Arbeitsspeichers (bis zu 64kb) ausgelesen werden. Wiederholt können somitBenutzerpasswörter und private Schlüssel abgerufen werden. Wie schützen?OpenSSL serverseitig aktualisieren.Web Engineering IIDuale Hochschule Baden-Württemberg79

SSL Verbindungstest (Qualys SSL Labs)tr.im/ssltestWeb Engineering IIDuale Hochschule Baden-Württemberg80

Good to know: StartSSL und Let’s Encrypt Kostenlose Web- und SMIME-Zertifikate stellt StartSSL aus Ebenfalls möglich: günstige Code-Signing-Certificates und Wildcard-SSL Let’s Encrypt ist eine neue - kostenlose - CA. automatische Verlängerung mit einem Serverdienst kostenfrei automatische Installation und CSRWeb Engineering IIDuale Hochschule Baden-Württemberg81

Serverseitige ProgrammierungAnfragen dynamisch beantworten

Serverseitige Programmierung bedeutet, dass serverseitige Programme erstellt und ausgeführt werden, um Daten aus Datenbanken zu lesen, Daten in Datenbanken zu schreiben und Webseiten dynamischen aufzubauen, bevor die Webseite zum Benutzer geschickt wirdWeb Engineering IIDuale Hochschule Baden-Württemberg83

Serverseitige ProgrammierungClient (Webbrowser)dynamische her Inhaltdynamische Inhalteserverseitiginterpretiert mittelsclientseitigerWebtechnikenWeb Engineering IIWebserver fügt mittelsserverseitigerWebtechniken einDuale Hochschule Baden-Württemberg84

Auslieferung statischer Web-InhalteAnfrage an den Webserverdurch Hyperlink oder DirektaufrufClient (Webbrowser)WebserverRequest / Response im HTTP-Protokoll- Aufbau TCP-Verbindung- HTTP-Request, der vom Web-Deamon entgegengenommen wird- Zurücksenden der Informationen über dieselbe Verbindung- Schließen der VerbindungDarstellung auf Clientdurch Interpretation von HTML / CSSStatische Inhalteaus FilesystemWeb Engineering IIDuale Hochschule Baden-Württemberg85

Auslieferung dynamischer Web-InhalteSkriptsprachen, Plugins, JAVA-Applets, Komponenten,DHTML, FlashClient (Webbrowser)client- und serverseitige Erweiterungen machendynamische Webinhalte möglichWebserverStatische Inhalteaus FilesystemWeb Engineering IISSI, PHP/ASP, J2EE, CGIje nach Anwendungszweck soll überlegt werden,welche dynamischen Inhalte clientseitig und welcheserverseitig realisiert werdenDatenbankDuale Hochschule Baden-Württemberg86

Dynamische Webtechniken Erweitern statische Webseiten um dynamische Inhalte Clientseitig Bewegung im Browser (Animation) Interaktive Elemente Serverseitig Generieren der Seite erst bei Aufruf Integration aktueller Daten aus Datenbanken und anderer Systemen Einbinden speziell für diesen Abruf relevanter DatenWeb Engineering IIDuale Hochschule Baden-Württemberg87

Serverseitige Programmierung Zur serverseitigen Programmierung stehen mehrere konkurrierende Technologien zurVerfügung Unterschiede in der Leistungsfähigkeit und unterstützten Plattformen Wichtige Vertreter CGI und Perl PHP ASP und ASP.NET Coldfusion Java-Servlets und JSP Node.JSWeb Engineering IIDuale Hochschule Baden-Württemberg88

Serverseitige Programmierung: CGI CGI Common Gateway Interface CGI definiert eine Schnittstelle zwischen dritter Software und Webserver, die esermöglicht, mit Programmen auf dem Webserver Anfragen vom Browser zubearbeiten und Webseiten dynamisch zu generieren CGI kann dazu die Eingaben von HTML-Formularen verarbeitenCGI startet für jedeAnfrage einen eigenen Prozess auf dem Server, weshalb die Performance desWebservers bei vielen Anfragen sinktWeb Engineering IIDuale Hochschule Baden-Württemberg89

Serverseitige Programmierung: CGI Perl ist eine Skriptsprache, die zur Laufzeit interpretiert wird und daher alsInterpretersprache keinen Compiler benötigt. Perl setzt nur einen auf dem Server installierten Perl-Interpreter voraus Perl hat Ähnlichkeiten zur C-Syntax und wurde ursprünglich für Unix-Plattformenentwickelt, um schnell kleine Programme für die Netzwerkentwicklung schreiben zukönnen Perl besteht aus einfachen ASCII-Zeichen Perl ist frei erhältlich (GPL) es gibt eine kleinere, aber recht rege Perl-Fan-Gemeinde Perl wird oft im Zusammenhang mit CGI verwendet, obwohl Perl ursprünglich nichtspeziell für CGI entwickelt wurdeWeb Engineering IIDuale Hochschule Baden-Württemberg90

Funktionsweise von Perl in Verbindung mit CGIRequest *.plClient (Webbrowser)Web Engineering IIWebserverCGISTDOUTPerlInterpreterResponse .*pl (HTML)Server-BetriebssystemDuale Hochschule Baden-Württemberg91

Ausführung CGI Aufruf über CLI Ausführung auch über die Konsole möglich ?phpecho "Dies ist eine dynamische Ausgabe! \n";date default timezone set("Europe/Berlin"); timestamp time(); uhrzeit date("H:i", timestamp);echo "Uhrzeit: " . uhrzeit . "\n";? ! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg92

Serverseitige Programmierung: Node.js Node.js ist eine Laufzeitumgebung zur Ausführung verschiedenen Diensten Ausführung von serverseitigem Quellcode erfolgt in einem Prozess, der auchweitere Prozesse starten kann Es existieren Module für HTTP-Webserver und WebSocket-Server, die als Basis fürdie Entwicklung eines Webprojekts verwendet werden Anfragen werden von einem Webserver (bspw. Apache oder nginx) lediglich an denNode-Prozess weitergegeben Der Webserver fungiert hier als Reverse-proxyWeb Engineering IIDuale Hochschule Baden-Württemberg93

Funktionsweise von Node.js und einem Reverse-ProxyReverse ProxyRequest /indexClient (Webbrowser)Web Engineering IIWebserverNode ProzessResponse ./index (HTML)Server-BetriebssystemDuale Hochschule Baden-Württemberg94

Clouddynamische Lastenverteilung und Ressourcenaufteilung

Beispiel: Dokumentenverarbeitung als SaaS Texterkennung innerhalb von PDF-Dokumenten als „Software-as-a-Service“ Eine eigene Schnittstelle (API) stellt Funktionen für den Upload und Verarbeitungeines PDF-Dokuments bereit Dokument wird zwischengespeichert OCR wird auf das Dokument angewendet PDF-Dokument wird optimiert Abrechnung Bereitstellung des ErgebnissesWeb Engineering IIDuale Hochschule Baden-Württemberg96

SaaS: Mit eigener InfrastrukturAnfrage vom Client1.Annahme der Datei2.Zwischenspeichern der Datei undEinsortieren in eine Verarbeitungsschlange3.Starten der Erkennung des Dokuments4. . Warten .5. Warten .6.Ergebnis abspeichern und an den Client zurücksendenAntwort an den Client7.nächste Datei verarbeitenProblem tritt auf, Dienst beendetsichVerarbeitung nicht mehr möglichWeb Engineering IIDuale Hochschule Baden-Württemberg97

Clouddienste Anfragen im Web werden nicht von einem dedizierten Server sondern von einemGesamtsystem verarbeitet Das Gesamtsystem greift dabei auf einen zentralen Ressourcenpool zu Rechenkapazität und Arbeitsspeicher Datenspeicher und Backupspeicher Das Gesamtsystem stellt eigene Dienste, die ebenfalls verwendet werden können Load-Balancer zur dynamischen Lastenverteilung auf Hintergrundsysteme Datenbankdienste DNS, Routing, Überwachung und sonstige DiensteWeb Engineering IIDuale Hochschule Baden-Württemberg98

Anbieter Skalierbare Plattformen mit Diensten Microsoft Azure Amazon AWS Google Cloud Computing Heroku u.v.m.Web Engineering IIDuale Hochschule Baden-Württemberg99

Skalierbarkeit und Dynamik Dienste können automatisch zu Stoßzeiten skalieren und Webdienste sind damitauch bei hoher Last immer reaktionsschnell Herunterfahren von Diensten und bereitgestellten Kapazitäten wenn Dienst nichtverwendet wird georedundante Spiegelung von Servern und Datenbanken für schnelle ZugriffszeitenWeb Engineering IIDuale Hochschule Baden-Württemberg100

Amazon AWS - Dienstübersichttr.im/modbesWeb Engineering IIDuale Hochschule Baden-Württemberg101

SaaS mit Cloud Infrastruktur: DNStr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg102

DNS Verwaltung mit Route 53 Konfiguration von DNS Weiterleitung an Amazon AWS Infrastruktur sog. „Endpunkte“ können basierend auf Standort des Benutzers automatisch gewähltwerden (latenzbasiertes DNS) DNS Failover Auswertung von Statistiken Überwachung und Benachrichtigung durch Amazon-Dienst (Simple NotificationService)Web Engineering IIDuale Hochschule Baden-Württemberg103

DNS Verwaltung mit Route 53 Im Beispiel des SaaS DNS steuert den Zugriff auf den - abhängig vom Standort - nächstenVerarbeitungsserver Konfiguriert Szenarien für Failover (Routing in das nächste Rechenzentrum) Schaltet ggf. Ressourcen für Kostenreduktion in dem Rechenzentrum abWeb Engineering IIDuale Hochschule Baden-Württemberg104

SaaS mit Cloud Infrastruktur: Load-Balancertr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg105

Lastenverteilung mit Elastic Load Balancer Anfragen werden nicht an einen bestimmten Server gestellt sondern es findet einAuswahlverfahren statt: Enthält die „Resourcengruppe Webserver“ mindestens einen Server? Falls nicht, wird ein Server von einer „Webserver-Vorlage“ gestartet und in dieResourcengruppe aufgenommen Welcher Server hat noch Kapazität frei? Weiterleitung der Anfrage an diesen Server Falls kein Server eine Kapazität von X zur Verfügung stellen kann Weiteren Server von einer „Webserver-Vorlage“ starten und in dieResourcengruppe aufnehmenWeb Engineering IIDuale Hochschule Baden-Württemberg106

Lastenverteilung mit Elastic Load Balancer Der Load-Balancer kann die bereitgestellte Leistung (mögliche „Anfragen/Sekunde“)selbstständig skalieren Das „Auto-Scaling“ von Servergruppen stellt eine schnelle Beantwortung vonAnfragen bereit Auto-Scaling kann auch Server herunterfahren und löschen, falls diese nichtausreichend ausgelastet werden Diese Grenzen können vom Administrator definiert werdenWeb Engineering IIDuale Hochschule Baden-Württemberg107

Elastic Load Balancer Im Beispiel des SaaS Der Load-Balancer stellt sicher das Web-Server die Anfragen von einem Clientbeantwortet werden können Teilt die Anfragelast zwischen vorhanden Webservern aufWeb Engineering IIDuale Hochschule Baden-Württemberg108

SaaS mit Cloud Infrastruktur: Web-Servertr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg109

Beantwortung von Anfragen: Webserver Der Webserver kann Informationen von anderen Servern oder Diensten abrufen,aufbereiten und eine gewünschte Information zurückgeben Statistikdaten aus einer Datenbank Grafiken von der Festplatte Layout und Design Ausführung von dynamischen Quellcode (bspw. PHP) Kombination der Ergebnisse wird als Webseite zurückgegebenWeb Engineering IIDuale Hochschule Baden-Württemberg110

Webserver Im Beispiel des SaaS Wickelt die Authentifizierung des Anfragenden ab Legt einen neuen Arbeitsauftrag an Speichert Informationen zu dem Vorgang in der Datenbank und Dateisystem ab Keine Speicherung auf dem Webserver, da nicht garantiert werden kann, dassdieser Server die nächste Anfrage übernimmt!Web Engineering IIDuale Hochschule Baden-Württemberg111

SaaS mit Cloud Infrastruktur: Application-Servertr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg112

Abarbeitung der Anfrage Der Webserver kommuniziert mit der hinterliegenden Infrastruktur Datenbankserver (Daten und Cache-Datenbanken) Anwendungsserver Cache DatenspeicherWeb Engineering IIDuale Hochschule Baden-Württemberg113

Anwendungsserver Im Beispiel des SaaS Vorgeschalteter Load-Balancer sorgt für genügend Kapazität Datenbank (Amazon RDS-Dienst) speichert Arbeitsauftrag PDF-Datei für die Verarbeitung wird in Amazon S3 „Bucket“ gespeichert(Festplattenspeicher) Für den Verarbeitungsprozess der Datei wird ein Prozess auf einem separatenServer gestartet Sollten weitere Ressourcen notwendig sein, werden weitere Server bereitgestelltWeb Engineering IIDuale Hochschule Baden-Württemberg114

SaaS mit Cloud Infrastruktur: S3 Speichertr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg115

Speicherung der Daten im S3-Bucket Der S3-Bucket ist ein Datenspeicher für Dateien bis zu einer Dateigröße von 5 TB Alle Amazon-Resourcen können auf einen S3-Bucket und dessen Inhalt zugreifen Es ist der zentrale Speicherort für Logs, Anwendungsdateien, Konfigurationsdateien Die Daten in einem Bucket müssen manuell gelöscht werden(Server haben einen temporären Speicher)Web Engineering IIDuale Hochschule Baden-Württemberg116

S3-Speicher Im Beispiel des SaaS Beinhalten Log-Dateien, Konfigurationsdateien und die „Eingabedatei“ Server holen sich die Ressourcen und legen das Ergebnis im Bucket abWeb Engineering IIDuale Hochschule Baden-Württemberg117

SaaS mit Cloud Infrastruktur: Webservertr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg118

Aktualisierung der Informationen in der Datenbank Amazon AWS bietet NoSQL-Datenbanken und relationale Datenbanksysteme an Die Lese- und Schreibgeschwindigkeit kann für jede Tabelle granular definiertwerden Datenbanken können per Knopfdruck zwischen verschiedenen AmazonRechenzentren synchronisiert werdenWeb Engineering IIDuale Hochschule Baden-Württemberg119

Datenbanken Im Beispiel des SaaS Aktualisieren des Kundenprofils innerhalb der Datenbank Speicherung der Metriken Wie lange wurde die Datei verarbeitet? Aktualisierung des Kundenkontos (eCommerce)Web Engineering IIDuale Hochschule Baden-Württemberg120

Bereitstellung der Datei Im Beispiel des SaaS Datei wird nach der Verarbeitung in einem gesonderten S3-Bucket abgelegt undkann von dem Client heruntergeladen werdenWeb Engineering IIDuale Hochschule Baden-Württemberg121

Zusätzliche AWS-Dienste CloudFront Content Distribution Network statische Websitedaten (Grafiken, CSS/Javascriptdateien) einem Client besondersschnell zum Abruf anbieten Spezielle Caching-Optionen Im SaaS-Beispiel: Bilder, CSS und Javascriptdateien der Website speichernWeb Engineering IIDuale Hochschule Baden-Württemberg122

Zusätzliche AWS-Dienste Elastic Beanstalk AWS Infrastruktur basierend für ein Quellcode-Repository bereitstellen Live-Umgebung und Staging-Umgebung für Tests Migration von Staging-Umgebung mit einem Klick in ProduktivumgebungWeb Engineering IIDuale Hochschule Baden-Württemberg123

Zusätzliche AWS-Dienste Glacier preisweiter Langzeit Archivspeicher Kosten für Restore: Je nach Zeitraum der Wiederherstellung wenige Stunden bis hin zu mehreren Tagen WartezeitWeb Engineering IIDuale Hochschule Baden-Württemberg124

Amazon AWS Datenzentrentr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg125

Vorteile Hohe Ausfallsicherheit Keine Vorhaltung von redundanter Hardware Keine Vorhaltung von georedundanter Hardware Produkt kann „klein beginnen“ und skaliert mit der Anwenderzahl mit Umsetzung von „Big-Data“ ProjektenWeb Engineering IIDuale Hochschule Baden-Württemberg126

Nachteile komplexes Abrechnungsmodell(Einheiten, Stunden, Datentransfer, Grundgebühren u.v.m.) Projekt muss für Cloud-Dienste optimiert werden horizontale Skalierbarkeit der Aufgabe (Aufgabe muss in Teilprobleme aufgeteiltwerden können) Wechsel zu einer anderen Plattform mit sehr hohem Aufwand verbunden Nutzung von anbieterspezifischen Diensten(bspw. Amazon eigene Datenbank „DynamoDB“) Migration und TestsWeb Engineering IIDuale Hochschule Baden-Württemberg127

Skalierung der Dienste am Beispiel Netflixtr.im/netflixWeb Engineering IIDuale Hochschule Baden-Württemberg128

Netflix setzt auf die Amazon AWS Infrastruktur für die Datendienste führt dauerhaft in der Produktivumgebung Tests durch eigener Bot „Chaos-Monkey“ zerstört rund um die Uhr Produktivserver pro Jahr um die 65.000 Serverinstanzen während des normalen Streamingbetriebszerstört und der Failoverbetrieb getestet Andere Monkeys testen Latenzen Sicherheit Aufräumarbeiten (Clean-Ups) vieles mehrWeb Engineering IIDuale Hochschule Baden-Württemberg129

Caching mit RedisErgebnisse zwischenspeichern

Cache Ein Cache speichert Informationen für einen schnelleren (wiederholten) Zugriff Diese Informationen können vorab dynamisch generiert worden sein Aufbereitete Informationen aus einer Datenbank Ausgabe eines Interpreters einer dynamischen Skriptsprache (bspw. PHP) Teilinhalte einer Website die sich nur gelegentlich ändern (bspw. Infoseite) Im Webbereich sind Caches üblicherweise dateibasiert (Ablage der Datei auf der Festplatte) datenbankbasiert (NoSQL Datenbank) „In Memory“ gecached oder ein hybrid: „In-Memory Datenbank“Web Engineering IIDuale Hochschule Baden-Württemberg131

Redis Ist eine open source In-Memory Datenbank Basiert auf einem „Key-Value-Store“, wie bspw. Hashtabellen (nicht relational) bietet sich für einfache Datenstrukturen an Ein beliebiger Wert wird unter Angabe eines Schlüssels eingetragen Dieser Wert kann unter Angabe des Schlüssels wieder abgerufen werden Sehr performant bis zu 80.000 Lesevorgänge pro Sekunde bis zu 100.000 Schreibvorgänge pro Sekunde auf herkömmlicher HardwareWeb Engineering IIDuale Hochschule Baden-Württemberg132

Wo kann gecached werden? Nginx kann als Reverse Proxy betrieben werden und speichert so Webinhaltezwischen, bzw. ruft diese von internen Systemen ab Auch Datenbankabfragen können mit Redis zwischengespeichert werden, bspw. Komplexe Auswertungen Abfragen die eine hohe Auslastung des Servers bezwecken Abfragen von Werten, die sich nicht verändern (aggregierte Umsatzzahlen derVorwoche)Web Engineering IIDuale Hochschule Baden-Württemberg133

Cache Gültigkeit Die Dauer der Gültigkeit muss durch den Entwickler festgelegt werden Definierte Zeitspanne Neustart des Systems (ggf. Verlust des Caches) Löschen des Caches nach Aktualisierung der Daten durch externen Prozess Manuelles Löschen des CachesWeb Engineering IIDuale Hochschule Baden-Württemberg134

Cachen mit Redis - keine Daten im CacheClientWeb Engineering II5) Daten abrufen8) /index cachenServer6) Ergebnis erhalten1) GET /index9) AntwortSQL-Datenbank3) Nicht gefunden2) /index gecached?Redis Cache4) Seite generierennginx WebserverNode Prozess7) HTML zurückgebenDuale Hochschule Baden-Württemberg135

Cachen mit Redis - Daten im Cache3) Gefunden2) /index gecached?Redis CacheSQL-DatenbankServer1) GET /index4) Antwortnginx WebserverNode ProzessClientWeb Engineering IIDuale Hochschule Baden-Württemberg136

Vorteile des Caching Anfragen an den Webserver werden schneller beantwortet Jede zwischengespeicherte Information muss nicht generiert werden, was dieAuslastung des Servers vermindert pro Webserver können mehr Anfragen beantwortet werden Bei rechenintensiven Datenbankabfragen weniger Last auf dem Datenbankserver schnellere Antwortzeiten bei anderen parallelen AbfragenWeb Engineering IIDuale Hochschule Baden-Württemberg137

Nachteile des Caching Die Gültigkeit des Caches muss gewartet werden Informationen die nicht mehr Up2Date sind, müssen entfernt oder aktualisiertwerden Kein Cachen bei der Verwendung von Cookies möglich Nicht alle Bereiche einer Webseite sollten gecached werden Echtzeitstatistiken Interne Bereiche einer WebseiteWeb Engineering IIDuale Hochschule Baden-Württemberg138

Übersicht der WebsprachenAktuelle Sprachen und deren Verteilung

Übersicht über aktuelle GitHub Repositoriestr.im/githutWeb Engineering IIDuale Hochschule Baden-Württemberg140

Aktuelle TSpracheWeb Engineering IIDuale Hochschule Baden-Württemberg141

JavaScript Client oder serverbasiert (bspw. jQuery / Node.JS) Plattformunabhängig Windows, Mac, div. Linux-Distributionen, Embedded & Internet of Things// Kommentartextfunction eineFunktion() {var autoName "BMW";}! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg142

Java Java Web-Applications (J2EE) Plattformunabhängig Windows, Mac, div. Linux-Distributionenpublic void startDocument()throws SAXException{nl();nl();emit("START DOCUMENT");nl();emit(" ?xml version '1.0' encoding 'UTF-8'? ");nl();}! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg143

Python Plattformunabhängig Windows, Mac, div. Linux-Distributionen # Python 3: Fibonacci series up to ndef fib(n):a, b 0, 1while a n:print(a, end ' ')a, b b, a bprint()fib(1000)! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg144

PHP In Version 5 auch objektorientiert (v4 nur prozedural) Plattformunabhängig Windows, Mac, div. Linux-Distributionenpublic function execute( handlers, path, method, data '', headers array()) { config this- apiContext- getConfig(); httpConfig new PPHttpConfig(null, method); httpConfig- setHeaders( headers array('Content-Type' 'application/json'));return response;}! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg145

Ruby Modular mit „Gems“ Bekannte MVC-Bibliothek ist „Ruby on Rails“ Online Beispiel auf tryruby.org Plattformunabhängig Windows, Mac, div. Linux-Distributionendef welcome(name)puts "howdy #{name}"endwelcome("nana")# inside double quotes, #{ } will evaluate the variable# traditional parens! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg146

ASP.NET Modular mit „NuGet Packages“ Plattformabhängig Windows, andere Plattformen mit Monopublic class IntroParams{[Params(100, 200)]public int A { get; set; }[Params(10, 20)]public int B { get; set; }public void Benchmark(){Thread.Sleep(A B 5);}}! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg147

Webserver Marktanteiletr.im/netcraftWeb Engineering IIDuale Hochschule Baden-Württemberg148

Web ServicesREST und SOAP

Anwendungsgebiet: Web ServicesBusinesslogikDatenmodelleDatenbankenWeb ServiceiPhone App Android App PC App Mac App WebseiteWeb Engineering IIDuale Hochschule Baden-WürttembergDrittanbieter150

Was sind Web Services? eine im Internet veröffentlichte Software die über Standardschnittstellenangesprochen werden kann Interaktion zwischen Client und Server geschieht durch den Austausch von XMLbasierten Nachrichten über Internetprotokolle die Technologien hinter Web Services sind plattformunabhängig mit Web Services können eigene Dienste bereitgestellt werden, die Informationenfür Webseiten, Apps und Anwendungen gleichzeitig bereitstellenWeb Engineering IIDuale Hochschule Baden-Württemberg151

SOAP: Allgemeines SOAP steht für Simple Object Access Protocol ist ein Netzwerkprotokoll mit dessen Hilfe Daten zwischen Systemen ausgetauschtwerden können oder entfernte Prozeduren aufgerufen werden können ist ein industrieller Standard des World Wide Web Consortiums (W3C) Basiert auf XML Plattformunabhängig Programmiersprachenunabhängig Es existiert kein bestimmtes Transportprotokoll, üblicherweise wird HTTP benutztWeb Engineering IIDuale Hochschule Baden-Württemberg152

SOAP: Anwendungsoptionen RPC (Remote Procedure Call) Es wird eine Methode des Servers per Web Service aufgerufen Funktionsname und Namen werden in der SOAP-Nachricht an den Serverübertragen Dokumentbasiert Es werden strukturierte Informationen versendet Der Webserver verarbeitet diese Informationen und sendet das Ergebnis sofortoder zeitlich versetzt zum Server zurückWeb Engineering IIDuale Hochschule Baden-Württemberg153

Aufbau einer SOAP-NachrichtTransport Header Transport Header üblicherweise HTTP Optionales Element Beinhaltet Anwendungsspezifische InformationenSOAP HeaderSOAP BodySOAP Umschlag/EnvelopeWeb Engineering II Enthält Informationen für den eigentlichen Empfänger Kann auch Informationen für entfernten Prozeduraufrufenthalten Informationen sind durch den Empfänger zu interpretierenund zu verarbeiten Umschlag ist der Container zur Einbettung von DatenDuale Hochschule Baden-Württemberg154

Struktur von SOAP-NachrichtenPOST /soapnachrichtenendpunkt HTTP/1.1Content-Type: application/soapTransport Header ?xml version "1.0"? s:Envelope xmlns:s „http://www.w3.org/2003/05/soap-envelope" s:Header . . . /s:Header SOAP Header s:Body . . . /s:Body SOAP BodySOAP Umschlag /s:Envelope ! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg155

SOAP-Envelope Grundgerüst einer SOAP-Nachricht Ist ein Behälter vergleichbar mit einem Briefumschlag In dem SOAP-Envelope ist der SOAP-Header und der SOAP-Body enthalten ?xml version "1.0"? s:Envelope xmlns:s „http://www.w3.org/2003/05/soap-envelope“ !—- optionaler SOAP-Header —- !—- SOAP-Body —- /s:Envelope ! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg156

SOAP-Header Optionaler Bestandteil falls vorhanden, muss der SOAP-Header vor dem Body stehen inhaltsunabhängige Daten und anwendungsspezifische Angaben x:ersterBlock xmlns:x „http://example.com“ !—- Variablen —- /x:ersterBlock ! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg157

SOAP-Body Beinhaltet die eigentliche Nachricht Keine festgelegte Struktur Muss im XML-Format geschrieben werden Bei RPC enthält er Informationen zum Funktionsaufruf Methodenname Parameterliste Rückgabewert Optional: Attachment Keine Beschränkung für das Dateiformat Zum Anhängen von DokumentenWeb Engineering IIDuale Hochschule Baden-Württemberg158

SOAP-Fault Wird verwendet um Informationen über aufgetretene Fehler zu übermitteln SOAP-Fault ist ein Unterelement des Bodys Besteht aus den Unterelementen Code: Fehlerklassifizierung Reason: dient der menschenlesbaren Fehlerbeschreibung Optional: Beschreibung wo genau der Fehler aufgetreten ist:Node, Role und DetailWeb Engineering IIDuale Hochschule Baden-Württemberg159

RPC-Nachricht ?xml version '1.0' encoding "UTF-8? env:Envelope xmlns:env "http://www.w3.org/2003/05/soap-envelope" env:Header m:reservation xmlns:m "http://travelcompany.org/reservation"env:role "env:mustUnderstand "true" m:reference uuid:093a2da1-q345-739r-ba5d /m:reference m:date 2004-05-10 /m:date /m:reservation /env:Header env:Body p:itinerary xmlns:p "http://travelcompany.org/reservation/travel" Endpunkt für den Webservice p:setReservation Funktionsaufruf der Funktion p:departing Duesseldorf /p:departing p:arriving Muenchen /p:arriving „setReservation“ p:departureDate 2004-05-29 /p:departureDate Parameter: p:departureTime mid-morning /p:departureTime Departing, Arriving, departureDate, p:class business /p:class departureTime,clas

Coldfusion Java-Servlets und JSP Node.JS Serverseitige Programmierung. Web Engineering II Duale Hochschule Baden-Württemberg 89 . Amazon AWS - Dienstübersicht. Web Engineering II Duale Hochschule Baden-Württemberg 102 tr.im/amzn SaaS mit Cloud Infrastruktur: DNS.