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

55
The Cloud before the Cloud Cloud Computing

Upload: others

Post on 14-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

The Cloud before the CloudCloud Computing

Page 2: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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

Page 3: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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

Page 4: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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)

Page 5: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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

Page 6: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

WHY?

Page 7: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

THE LAMP STACK

Page 8: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen
Page 9: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen
Page 10: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Aufgrund von...

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

Page 11: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

LAMP

• Linux• Apache• MySql• PHP

Page 12: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen
Page 13: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Software Engineering Economics

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

Page 14: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Hardware kann einfach skalieren

Page 15: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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

Page 16: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Scaling

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

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

Page 17: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen
Page 18: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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

Page 19: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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

Page 20: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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

Page 21: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

MySql

Page 22: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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.

Page 23: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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>";?>

Page 24: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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."; ?>

Page 25: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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);?>

Page 26: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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>"; }

Page 27: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

PHP

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

Page 28: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Frameworks

• CodeIgniter• CakePHP• Yii• Laravel• Zend

Page 29: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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

Page 30: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• 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“?

Page 31: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

JS Stack

• Linux• Nginx• NoSql• Javascript

Page 32: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Nginx vs Apache

Page 33: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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

Page 34: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Wo ist die Cloud?

Page 35: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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

Page 36: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Was sind Computing Ressourcen?

Page 37: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Was sind Computing Ressourcen?

Page 38: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Was sind Computing Ressourcen?

Page 39: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Was sind Computing Ressourcen?

Page 40: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Was sind Computing Ressourcen?

Page 41: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Was sind Computing Ressourcen?

Page 42: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Was kann die Cloud noch aufhalten?

Page 43: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen
Page 44: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen
Page 45: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Monolith vs Microservices

Page 46: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Monolith vs Microservices

Page 47: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Monolith vs Microservices

Page 48: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

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

Page 55: The Cloud before the Cloud - Babeș-Bolyai Universityrusu/cloud/V1.pdf• CakePHP • Yii • Laravel • Zend. Das Ziel ist es, das skalieren einer Anwendung technisch zu ermöglichen

Repo

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