the cloud before the cloud - babeș-bolyai universityrusu/cloud/v1.pdf• cakephp • yii •...

Post on 14-Aug-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

The Cloud before the CloudCloud Computing

Das Client/Server Prinzip

• Server: Bietet einen oder mehrere Dienste − Zugriff auf Dateien − Interaktive Informationsdienste wie WWW− Synchrone und asynchrone Nachrichtendienste

• Client: Nutzt die Dienste über ein Netzwerk, benötigt entsprechende Zugangssoftware für jeden Dienst− WWW-Browser− E-Mail Programm− Chat-Programme − Remote-Sessions

Connections

Der von allen Internet-Teilnehmern verwendete Standard heißt TCP/IP und wird von allen netzwerkfähigen Betriebssystemen verstandenEine Internet-Verbindung hat 5 Teilen:

• Client IP-Adresse • Server IP-Adresse • Client Port • Server Port (i.d.R. durch den angesprochenen Dienst festgelegt, z.B., 80 für WWW, 25 für E-Mail

usw.)• Netzwerkprotokoll: TCP, UDP, HTTP etc

WWW-Server installieren

• Bei den meisten Linux-Distributionen ist der beliebteste Webserver – Apache• Für Windows und einige andere Betriebssysteme gibt es ein Installationspaket XAMPP• Der Webserver sollte als Systemdienst gestartet werden. Linux: sudo /etc/init.d/apache2 start• Nach erfolgreicher Installation läuft auf Port 80 der Webserver, und liefert Seiten über das

Http-Protokoll.• URL: http://localhost/ Dateien unter /var/www/html (Linux), bzw. unter C:\xampp\htdocs (Windows)

Eine traditionelle Software-Architektur strukturiert die Anwendung in (zumindest) drei Schichten.

WHY?

THE LAMP STACK

Aufgrund von...

• Linus Torvalds• US Military• The Porn Industry• and...

LAMP

• Linux• Apache• MySql• PHP

Software Engineering Economics

• Bandwidth • HDD • CPU• Memory ist billiger als Entwicklung

Hardware kann einfach skalieren

Load Balancers

• sehr viele Clients eine hohe Anfragen erzeugen und damit einen einzelnen Server-Rechner überlasten würden

• umfangreiche Berechnungen oder große Mengen von Anfragen auf mehrere parallel arbeitende Systeme verteilt

• HAProxy• Heartbeat• Elastic IP• Rackspace Load Balancer• Amazon Elastic Load Balancing

Scaling

• Horizontale Skalierung bedeutet, mehr Maschinen zu dem Ressourcenpool hinzufügen

• Vertikale Skalierung bedeutet, einer vorhandenen Maschine mehr Leistung (CPU, RAM) hinzufügen

Easy Linux, Easy Life

• Kostenlos (Open Source)• Schnell• Sehr stabil• Zuverlässiger • Extrem leistungsstark • Plattformübergreifende Kompatibilität

• Run Debian• Keep it up-to-date• so wenige Pakete wie möglich• ständige Überwachung

Apache

• 1995 eine Gruppe von Entwicklern entwickelte eine Sammlung von Patches des NCSA-Webservers• Diese Gruppe entwickelte sich zur Apache Software Foundation• entwickelt mehrere hochwertige Open-Source-Programme. • • Der Apache Web-Server ist ein solches Programm• Sehr zuverlässig und effizient• Hat ein großer Teil des Marktes• Einer der beliebtesten Webserver im Internet

• Sehr teuer: Erzeugung der Child Servers• RAM, RAM, RAM• PHP memory size * max processes < RAM

MySql

• MySQL ist eine SQL-Datenbank auf Open Source Basis, und wie der Apache-Webserver für verschiedene Betriebssysteme verfügbar

• Easy Use / No Stress• Schnell und Robust• Kostenlos• Große Datenbank unterstützen

• key_buffer = RAM / 2• wait_timeout <= 30• MyISAM vs InnoDB• Master-Slave vs Master-Master vs Cluster

MySql

PHP

• Eine etablierte serverseitige, plattformübergreifende Skriptsprache zum Erstellen dynamischer Webseiten

• kurze Entwicklungszeit• hohe Leistung• Näher an Java / C ++ - Programmierstil• interaktive dynamische Webseiten• Unterstützung aller gängigen Plattformen wie Linux, Windows usw• Native Funktionen unterstützen den Großteil der Datenbank.

PHP

C:\xampp\htdocs\test

<body><H1 align=center>Ein erstes Skript in PHP</H1><?php echo "Hallo, Welt!"; ?></body>

Rufen Sie nun die Seite im Browser unter http://localhost/ainf/test.php auf. <?php

$var1 = "1"; // Ein Text$var2 = 2; // Eine Zahlecho "$var1 + $var2 = ";echo $var1 + $var2;echo "<br>";?>

PHP

• Sieht sehr ähnlich aus wie JavaScript, aber durch Tags <?php PHP-Skript... ?> eindeutig gekennzeichnet, die den Browser nie erreichen sollten,da sie auf der Server-Seite bereits verarbeitet werden

• Anweisungen müssen durch ; abgeschlossen werden.• Variablen beginnen mit dem $-Zeichen.

• Bei METHOD=POST werden Formularfelder direkt an den Server verschickt • bei METHOD=GET über die Adresse (URL), und sind in der Browser-Adressleiste

sichtbar

<FORM METHOD="POST" ACTION="auswertung.php"><input name=antwort type=text><input type=submit></FORM>

<?php echo "Sie haben "; echo $_POST[antwort]; echo " eingegeben."; ?>

DB mit Mysqli

<FORM METHOD=POST>Name: <input name=name type=text><br>E-Mail: <input name=email type=text><br><input type=submit value="Abschicken"></FORM>

<?php$name=$_POST['name']; $email=$_POST['email'];

$db = mysqli_connect("localhost", "username","userpasswort", "userdatenbank");$query = "INSERT INTO besucher (name, email) VALUES ('$name','$email');";

mysqli_query($db, $query);mysqli_close($db);?>

DB mit Mysqli

$db = mysqli_connect("localhost", "username","userpasswort", "userdatenbank");

$sql = "SELECT * FROM tabelle;" ; $result = mysqli_query($db, $sql);

if( ! $result ) { // Gab es kein Ergebnis? echo "<font color=red>Datenbank-Fehler: "; echo mysqli_error($db); // Fehler zeigen echo "</font>"; }

PHP

• Frameworks, Frameworks, Frameworks• Memcached• Master/Slave (Command&Query)• Speicherverbrauch beachten!

Frameworks

• CodeIgniter• CakePHP• Yii• Laravel• Zend

Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Worin unterscheidet sich ein „normaler“ Betrieb von einem Betrieb „in der Cloud“?

JS Stack

• Linux• Nginx• NoSql• Javascript

Nginx vs Apache

Das große Versprechen

• Die Cloud gibt dir unerschöpfliche Computing Ressourcen• Diese Unerschöpflichkeit ist genau dann da, wenn du sie brauchst• Du bezahlst nur den Teil an Unerschöpflichkeit, den du wirklich benötigst

Wo ist die Cloud?

Eine Cloud(-Anwendung) besteht dabei grundsätzlich aus sehr ähnlichen Bausteinen.

Was sind Computing Ressourcen?

Was sind Computing Ressourcen?

Was sind Computing Ressourcen?

Was sind Computing Ressourcen?

Was sind Computing Ressourcen?

Was sind Computing Ressourcen?

Was kann die Cloud noch aufhalten?

Monolith vs Microservices

Monolith vs Microservices

Monolith vs Microservices

Microservices

• Services sind klein, unabhängig − loose coupling

• Kapselung eines Geschäftsszenarios• jeder Dienst ist eine separate Codebasis, die von einem kleinen Entwicklungsteam umgesetzt

werden kann• Dienste können unabhängig deployed werden• Dienste sind dafür verantwortlich, ihre eigenen Daten bzw. Status zu speichern

Repo

https://github.com/cloudyuga/e-cart/

top related