ColdFusion im Enterprise Umfeld - Deep Dive

Post on 03-Jul-2015

243 Views

Category:

Internet

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Dank vieler praktischer Funktionen können Entwickler unter ColdFusion relativ schnell und einfach Applikationen entwickeln und produktiv einsetzen. Doch wie sieht es aus wenn diese Applikationen dann intensiv genutzt werden? Von hunderttausenden Usern in unzähligen Ländern, Sprachen und Zeitzonen? Wenn Inhalte laufend generiert und abgefragt werden? Dieser Talk zeigt, wie ColdFusion in einem Enterprise Projekt eingesetzt werden kann. Welche Architektur für einen sicheren Betrieb rund um die Uhr und die Welt benötigt wird. Welche ColdFusion Enterprise-Funktionen gebraucht werden und welche nicht, welche überhaupt funktionieren, welche Lektionen wir im praktischen Einsatz gelernt haben und warum Optimierungen im Milisekunden-Bereich tatsächlich Tage sparen können.

Transcript

ColdFusion im Enterprise Umfeld - Deep DiveCFCamp, Germering, 20. Oktober 2014

ColdFusion im Enterprise Umfeld

© Richard Carey, Fotolia.com

Coldfusion Configuration

-Star ter Edition-

WebserverColdfusion Server

Datenbank

Developer

All-in-one-Ser ver

Content Management System

(CMS)

Content Management

• Out-of-the-Box Features• Flexibilität (Framework)• Skalierbarkeit• Personalisierung• Web 2.0• Staging• Usability• Zukunftssicherheit

Ein professioneller Auswahlprozeß ist unerläßlich

Front-und Backend immer auf getrennten Servern

Redaktion / StagingWeb

Trennung von Front- und Backend

DB und CF-Server immer trennen

Redaktion / StagingWeb

DB-Ser ver

Zur Ausfallsicherheit Datenbank immer replizieren

Redaktion / StagingWeb

Master-Slave-Replikation

Mindestens zwei unabhängige Webserver

Redaktion / Staging

Web 1

Web 2

Webser ver

Redaktion / Staging

Web 1

Web 2

Webser ver

Mindestens zwei unabhängige Webserver

Cluster ing

Coldfusion Cluster

• Performance • Session Replikation aufwändig• unzuverlässiges Feature• Loadbalancer schon für den Webserver

vorhanden• Vorteil in der Applikationsentwicklung

begrenzt (Skalierung)

Aufwand für ein Coldfusion Cluster lohnt sich nicht

Loadbalancer mit Sticky Sessions

• skaliert besser• schneller• geringer Konfigurationsaufwand

Aber:• Sessionverlust bei Ausfall• Applikationen müssen angepasst sein

Loadbalancing über seperaten Loadbalancer ist oft einfacher

Redaktion / Staging

Web 1

Web 2

CDN

Webser ver

Mindestens zwei unabhängige Webserver

Akamai

• Server über die ganze Welt verteilt • Eigene Leitungen• Speichert alle statischen Objekte• Greift nur auf den Origin zu wenn

Daten nicht vorhanden oder invalide• Sucht zuerst auf anderen EDGE-

Servern• Webservice zum invalidieren

CDN übernimmt die Last für statische Objekte

Akamai

• Kann dynamische Objekte in statische Seiten einbauen (SSI/ESI)

• Kann auch dynamische Seiten speichern

• Bietet Sureroutes für dynamischen Content

CDN übernimmt die Last für statische Objekte

Dedizierte Suche nimmt Last vom Applikationsserver

Redaktion / Staging

Web 1

Web 2

CDN

Suche

Externe Suche (Google)

• Passiert sowieso• Verbraucht keine eigenen Ressourcen• Schlecht steuerbar (Zeit, Umfang, Ziel)• Google Layout• Indiziert dynamischen Content schlecht• Kann hohe Serverlast erzeugen

Externe Suche ist nur eine Notlösung

Interne Suche (Lucene)

• Kostenlos• Unabhängig• Grosse Community• Kein Support• Zu wenige Sprachen• Schlechtes Stemming• Aufwändige Implementierung• User sind Google gewöhnt

Lucene Einsatz verlangt Aufbau von Know-How

Interne Suche (GSA)

• Kann alle Sprachen• Stemming• Reaktion auf spezielle Codewörter• Drei Arten der Indizierung: Crawlen,

Content Pushen, URL Pushen• Kann auch Datenbanken durchsuchen

Google gibts auch für Zuhause

Zeit was zu entwickeln

Entwicklung

Web1

CDN

Web2

Redaktion

Zeit was zu entwickeln

Entwicklung

Web1

CDN

Web2

Redaktion

DEV

Zentrale Entwicklung

• Instanzen auf einem Server• Vollständiger Content des Livesystems• Konfiguration entspricht dem Livesystem • Einheitliche Konfiguration !!!

(komisch, bei mit gings...)• Zentrales Update, Backup etc.

Einheitliche Entwicklungsumgebung für alle

Entwickler schaffen

Zeit was zu entwickeln

Entwicklung

Web1

CDN

Web2

Redaktion

GIT

DEV

RedLive

Dev

Versionsverwaltung

Versions-verwaltung

• Früher SVN / CVS, heute GIT / Mercurial • Verteilte Versionskontrolle• GIT mag keine Netzlaufwerke• GIT vergisst nichts• Eigener Server (z.B. Atlassian) oder Github

Keine Entwicklung ohne Versionskontrolle

Versions-verwaltung

• Kein direkter Zugang der Entwickler zum Livesystem

• Verschiedene kleine Repositories für Applikationen, kein grosses

• Verschiedene Branches für unterschiedliche Server (Dev/Red/Web etc.)

• Automatisches Deployment (Stash vor jedem Update)

Keine Entwicklung ohne Versionskontrolle

Kein Update ohne Test

Testing und Q&A

Web1

CDN

Web2

Redaktion

GIT

DEV

RedLive

Dev

Q&AWeb2

Q&A Redaktion

Q&A Web1

Test

Testing und Q&A

• Nichts kommt ohne Test auf das Livesystem • Q&A ist kein Test- sondern Kontrollsystem• Endabnahme neuer Funktionen durch den

Kunden• Kopie der Live-Architektur• Automatisierte Rückspielung der Live-Daten• Eigener Branch

Kein Update ohne Test

Bugtracking

Bugtracker

Ticketing

Bugtracker

Ticketing

Bugtracker

Ticketing

Bereit zum Einsatz

Fer tig

Web1

CDN

Web2

Redaktion

GIT

DEV

RedLive

Dev

TestQ&AWeb2

Q&A Redaktion

Q&A Web1

Applikations-entwicklung

Entwicklung

• Zukunftssicherheit bei der Produkt / Framework- Wahl

• Nach Möglichkeit Kommunikation über Webservices

• Nie auf das Netz verlassen • Coldfusion - Frontend Funktionen

(<cfmediaplayer> etc.) sind meist zu unflexibel

Komfortfunktionen sind meist zu unflexibel

Entwicklung

• Lokalisierung in CF ist unzureichend• Eigene Datumsformatierungen• Zeitzonen• Alternativfelder vorsehen • Andere Sprachen / Darstellungen

berücksichtigen (RTL)

Komfortfunktionen sind meist zu unflexibel

Multiser ver

• Trennung von Front- und Backend• Nach Aussen nur benötigte Funktionen zur

Verfügung stellen• User können auf unterschiedlichen Servern

landen• Session Verlust berücksichtigen

Nur das nötigste nach aussen zur Verfügung stellen

CDN

• Von Anfang an mit planen• Möglichst viel statischer Content• Dynamische Daten nachladen• Nur Content laden, kein Layout• CDN kann als Cache genutzt werden• Content muss bei Änderung zum richtigen

Zeitpunkt invalidiert werden

CDN als Entlastung nutzen

Suche

• Beim Aufbau mit planen • Dynamischer Content sollte direkt beim

erzeugen gepusht werden• Dynamischer Content kann unnötige

Einträge erzeugen (Filterung)

Suche von Anfang an einplanen

Entwicklung / Testing

• Realistische Datenbasis und Umgebung in der Entwicklung

• Kein root!• Abläufe entkoppeln und parallelisieren

(ActiveMQ etc.)• Dimensionen beachten• Sprachen beachten

Eine realistische Testumgebung schaffen

Performance

• Virtuelle Server lassen sich leicht bei RAM und CPU skalieren

• Bottlenecks sind meist DB, Filesystem und Netzwerk

• Nie auf das Netzwerk oder externe Systeme verlassen

Filesystem und DB skalieren oft nur mit sehr grossem Aufwand

Club Mate and fritz-kola for free

Come and see us

AND Oculus Rift

Come and see us

Diese Folien und noch viel mehr gibt‘s unter

www.bokowsky.net/de/knowledge-base/

Vielen Dank

Matthias Proskeproske@bokowsky.de

Bokowsky + Laymann GmbHwww.bokowsky.de@BokowskyLaymannsowie auf Facebook, Slideshare, YouTube, Flickr

P.S: Bokowsky + Laymann sucht ColdFusion EntwicklerFest oder Frei.

jobs@bokowsky.de oder im Social Network Ihres Vertrauens

top related