36
Softwareentwicklung in der industriellen Praxis Cloud-Systeme: Besonderheiten bei Programmierung und Betrieb Steffen Gemkow / Paul Fritsche - ObjectFab GmbH 26.11.2012 Montag, 26. November 12

Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Softwareentwicklung in der industriellen Praxis

Cloud-Systeme: Besonderheiten bei Programmierung und Betrieb

Steffen Gemkow / Paul Fritsche - ObjectFab GmbH

26.11.2012

Montag, 26. November 12

Page 2: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

• Simple is beautiful

• Don’t repeat yourself (DRY)

• Scalability >> Performance

• Design for scalability

Montag, 26. November 12

Page 3: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Überblick

• Aufgabe

• Architektur

• Deployment und Betrieb

• Programmierung

• Fazit

Montag, 26. November 12

Page 4: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Aufgabe

• Webanwendung

• Agile Entwicklung

• hohe zu erwartende Last

• viel dynamischer Inhalt

• geringe laufende Kosten

Montag, 26. November 12

Page 5: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Webanwendung

• Integrationsplattform

• Login und Rollensystem

• Anbindung vieler externer Dienste und Datenquellen

Montag, 26. November 12

Page 6: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Dynamischer Inhalt

• Webseite läd asynchron Daten nach (AJAX)

• viele kurze Requests anstatt weniger langer

• Requests an unterschiedliche Ziele

• Chat (Websockets/Longpolling)

Montag, 26. November 12

Page 7: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Agile Entwicklung

• viele Details liegen noch im Dunkeln

• konkretes Layout

• Usability

• Features

• Prototyp, schnelles Feedback, kurze Iterationen

Montag, 26. November 12

Page 8: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Lastverhalten

Montag, 26. November 12

Page 9: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Cloud

• dynamisches Hinzufügen/Entfernen von Serverkapazitäten

• virtuelle Hardware

Montag, 26. November 12

Page 10: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Cloud Anbieter

• Amazon Elastic Compute Cloud (EC2)

• JiffyBox

• Scalarium

• Heroku

Montag, 26. November 12

Page 11: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Festlegungen

Technologie Ruby on Rails, Websockets, SSL

Vorgehensmodell kurze Iterationen (1-2 Wochen)KanBan / Scrum

Lastverhalten tageszeitabhängigca. 1000 parallele Nutzer

Cloudanbieter JiffyBox von DomainFactory

Montag, 26. November 12

Page 12: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

ArchitekturLB

WEB WEB APP APP APP CHAT

CACHE

DB

Montag, 26. November 12

Page 13: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

WebserverLB

WEB WEB APP APP APP CHAT

CACHE

DB

Montag, 26. November 12

Page 14: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Webserver

• liefert statischen Inhalt

• Bilder, CSS, JS

• führt kein Applicationcode aus

• braucht wenig CPU, wenig Speicher

• Apache, nginx

Montag, 26. November 12

Page 15: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Application ServerLB

WEB WEB APP APP APP CHAT

CACHE

DB

Montag, 26. November 12

Page 16: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Application Server

• führt die Rails Umgebung inkl. der Anwendung aus

• jeder Request benötigt eine Rails Umgebung (= Prozess)

• Phusion Passenger:

• startet mehrere Rails Prozesse

• verteilt Requests

Montag, 26. November 12

Page 17: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Chat ServerLB

WEB WEB APP APP APP CHAT

CACHE

DB

Montag, 26. November 12

Page 18: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Chat Server

• Chat benötigt Rückkanal für Nachrichten vom Server zum Client

• Websockets / Longpolling

• würde viele (teure) Rails Prozesse blockieren

• event-driven, non-blocking IO

• viele Requests in einem Prozess

• node.js, Evented Ruby

Montag, 26. November 12

Page 19: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

CacheLB

WEB WEB APP APP APP CHAT

CACHE

DB

Montag, 26. November 12

Page 20: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Cache

• korrekt eingesetzt bringt Caching sehr hohen Performancegewinn

• Session

• Datenbankabfragen

• komplette HTML Seite

• Teile einer HTML Seite

• memcached

Montag, 26. November 12

Page 21: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Load BalancerLB

WEB WEB APP APP APP CHAT

CACHE

DB

Montag, 26. November 12

Page 22: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Load Balancer

Regel Aktion

Port 80 Redirect auf Port 443

wss://* chat

https://static* web0..webX (load balanced)

* app0..appY (load balanced)

Montag, 26. November 12

Page 23: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Eingesetzte Software

Ruby RVM mit Ruby 1.9.2

LB haproxy mit SSL

WEB Apache 2

APP Phusion Passenger

CHAT Node.JS

CACHE memcached

DB mysql

Montag, 26. November 12

Page 24: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Deployment

• Wer betreibt den Cluster?

• Wie wird die notwendige Software installiert?

• Updates?

• Wie wird die Anwendung ausgerollt?

• Neues Release?

Montag, 26. November 12

Page 25: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Dokumentation

• Auflistung sämtlicher zu installierender Software, inkl. Version

• Konfigurationsdateien

• Im Idealfall 2 Dokumente:

• Installationsanweisungen für “frisches” System

• Änderungen zur Vorversion

Montag, 26. November 12

Page 26: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Script

• Ausführbare Dokumentation

• Installiert Software parallel auf mehreren Servern

• Erstellt Konfigurationsdateien

• Startet/Stoppt alle Dienste

• wiederholbar, parameterisierbar

Montag, 26. November 12

Page 27: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Capistrano• Führt SSH Befehle auf mehreren Rechnern parallel aus

• Rezepte:

• Ausführung vor oder nach einem anderen Rezept

• parallel auf mehreren Rechnern

• Rollen:

• Jeder Rechner hat eine oder mehrere Rollen

• Jedes Rezept gehört zu einer Rolle

Montag, 26. November 12

Page 28: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Capistrano

• bietet fertige Rezepte zum Deployment einer Rails Anwendung

• zusätzliche Rezepte zum Installieren der Software

• Anbindung an JiffyBox-API

Montag, 26. November 12

Page 29: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Programmierung

• Kenntnisse in vielen Programmiersprachen/Frameworks notwendig

• Ruby/Rails

• Javascript/Coffeescript, HTML/CSS

• Linux, Bash

Montag, 26. November 12

Page 30: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Programmierung

• viele kurze Requests >> wenige lang laufende Requests

• Rails Prozesse sind “teuer”

• effektivere Auslastung der gesamten Cloud

• Trend zu non-blocking IO

Montag, 26. November 12

Page 31: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Programmierung

• Requests werden von verschiedenen Prozessen verarbeitet

• keine Singletons im Programmcode

• DB / Cache zum Synchronisieren (z.B. Sessions)

Montag, 26. November 12

Page 32: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Programmierung

• Am längsten dauert das Erzeugen des HTML in einem Request

• soviel wie möglich cachen

• Daten und Inhalte asynchron laden

Montag, 26. November 12

Page 33: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Programmierung

• Externe Daten in einem Request

• asynchrone Aufrufe (non-blocking IO)

• im Hintergrund laden und zwischenspeichern (Cache oder DB)

Montag, 26. November 12

Page 34: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Fazit

• komplexe Architektur

• wiederholbares Installieren/Konfigurieren aller beteiligter Systeme

• wiederholbares Deployment der eigentlichen Anwendung

• einfacher Aufbau verschiedener Test- und Stagingsysteme

• Grundlage zur dynamischen Steuerung der Cloud

• Integration in CI möglich

Montag, 26. November 12

Page 35: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Fazit

0

2000

4000

6000

8000

100 200 500 1000

Ant

wor

tzei

t in

ms

Anzahl Nutzer

5x Level 1 (4P) 10x Level 1 (4P) 5x Level 2 (16P) 5x Level 3 (16P)

Montag, 26. November 12

Page 36: Softwareentwicklung in der industriellen Praxisst.inf.tu-dresden.de/files/teaching/ws12/ring/121126... · 2012. 11. 27. · Softwareentwicklung in der industriellen Praxis Cloud-Systeme:

Vielen Dank

• http://www.objectfab.de/download/121126_vortrag.pdf

• Kontakt:

• http://www.objectfab.de

[email protected], @ObjectFab

[email protected], @synopia

• http://www.ruby-dresden.de, 6.12.2012 nächstes Treffen

Montag, 26. November 12