the cloud before the cloud - babeș-bolyai universityrusu/cloud/v1.pdf• cakephp • yii •...
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
https://in.pycon.org/cfp/2017/proposals/breaking-down-a-python-based-monolith-application-to-micro-serivces-based-application~bkDKd/
https://in.pycon.org/cfp/2017/proposals/breaking-down-a-python-based-monolith-application-to-micro-serivces-based-application~bkDKd/
https://in.pycon.org/cfp/2017/proposals/breaking-down-a-python-based-monolith-application-to-micro-serivces-based-application~bkDKd/
https://in.pycon.org/cfp/2017/proposals/breaking-down-a-python-based-monolith-application-to-micro-serivces-based-application~bkDKd/
https://in.pycon.org/cfp/2017/proposals/breaking-down-a-python-based-monolith-application-to-micro-serivces-based-application~bkDKd/
https://in.pycon.org/cfp/2017/proposals/breaking-down-a-python-based-monolith-application-to-micro-serivces-based-application~bkDKd/
Repo
https://github.com/cloudyuga/e-cart/