Integrationen. HowTo, anhand eines Realbeispiels.
Castingplus ist eine Model und Castingagentur. Entworfen und gestaltet wurde die Website von einer Werbeagentur, unsere Aufgabe bestand zum einen darin dafür zu sorgen, daß sie nicht nur läuft, sondern daß sie schnell und gut läuft. Desweiteren muß die Seite vernünftig und ohne Programierkenntnisse von den Mitarbeitern administrierbar ist.
Was von der Website erwartet wird:
1. Eine Castingagentur hat nicht nur feste Models sondern sucht auch Models im Auftrag für Kunden, d.h. zu dem normalen Präsentations Bildbestand den eine Modelagentur für die Modelportfolios ständig verwalten muss kommen auch noch unmengen Bilder die für die Model Vorschläge an den Kunden gehen und die Ebenfalls zeitweise Online gespeichert werden bis der Kunde seine Auswahl getroffen hat. Bei Castingplus laufen etwa 100.000 Photos und Videos pro Jahr über die Website, der permanente Anteil pendelt zwischen 15 und 25.000 Photos. Speicherbedarf der kompletten Seite liegt derzeit bei ca 20GB.
2. Diese Suchaufträge sorgen dafür, daß ein Photo nicht einmal eingepflegt wird und dann dort verbleibt, sondern es herscht eher eine Situation permanenten "kommen und gehens" von Photos auf der Seite, es müssen ständig neue Alben zusammen gestellt werden und andere wieder gelöscht werden, dazu kommt die Möglichkeit für Models sich selbst als Models zu bewerben. Diese Bewerbungsalben müssen gesichtet und übernommen oder verworfen werden, sowie Suchaufrufe von Kunden, die Models zu bestimmten Themen suchen und die direkt über diese Website von den Kunden selbst bearbeitbar sein müssen.
3. Ein Modeldatensatz besteht nicht nur aus Photos sondern darüber hinaus werden noch ca 60 weitere Daten zu jedem Model erfasst. Zu den normalen Personendaten kommt eine Vielzahl von modelspezifischen Daten, wie Konfektions- und Schuhgröße, Haarfarbe, Körpermaße, Sprachkenntnisse, besondere Fähigkeitet..... uvm.
4. In den letzten Jahren sind im Castingbereich Videos immer wichtiger geworden, was einen Anstieg der Datenmenge pro Model um den Faktor 10-20 zur Folge hat.
Vor und Nachteile, der in Frage kommenden Systeme:
1. Vorzüge von Gallery2: Alle diese Vorgaben wären theoretisch mit Typo3 zu bewerkstelligen. Wäre da nicht diese enorme Flut an Fotos die ständig on and off gehen. Gallery2 ist als spezielles online Bildarchiv schlicht 100 mal so schnell im Umgang mit Fotos als Typo3. Es hat zudem ein exorbitant schnelles Cachesystem und Smarty, einen PHP-Compiler, als extrem schnelle Templateengine zum rendern. Eine Seite mit z.B. 30 Bildern die beim ersten Mal laden 35 sekunden braucht, bis alle Bilder in die richtige Größe gerechnet sind, wird beim zweiten Aufruf, egal von wem sofort anzeigt. Reine Zeiteinsparung der Arbeitszeit, für den Contentmanager der die Alben pflegt gegenüber Typo3, geschätzt 70%. Dazu kommt natürlich die wesentlich schnellere Reaktion der Bilder Gallerien wenn Kunden die Seite besuchen. Die enorm benutzerfreundliche Handhabung der Bilderalben ist vergleichbar mit der Desktop Anwendung "Adobe Lightroom" und schlägt auch hier Typo3 um längen. Wer selbst fotografiert und seine Bilder archiviert weiß wieviel Zeit eine gute Archivierungssoftware spart.
2. Vorzüge von Typo3: eine Address oder Modeldatenverwaltung ist in Gallery2 nicht schwierig, sondern komplett unmöglich. In Typo3 allerdings überhaupt kein Problem, selbiges gilt für Suchaufruf Seiten oder Modelanmeldeformulare. Damit steht fest, die Anwendung muß ein Typo3 Seite werden, da mit Gallery2 schlicht nicht alle Aufgaben realisiert werden können.
Unsere Umsetzung: CMS als "eventbased loose-coupling" Integration.
Wir verwendeten Typo3 als CMS und Gallery2 um das Assetmanagement zu übernehmen. Wir integrierten zunächst Gallery2 ohne DAM, haben aber mittlerweile das Typo3 DAM ebenfalls mit eingebunden. Da wir Frontend Benutzer haben, z.B. Kunden, die Ihre Suchaufrufe selbst administrieren möchten, oder Models, die sich bewerben brauchen wir eine frontend Benutzer Verwaltung. TYPO3 akzeptiert keine Benutzeranmeldung als Slave im gegensatz zu Gallery2. Neue Benutzer müssen sich also über Typo3 anmelden. Typo3 kümmert sich dann um die synchronisation des Benutzers mit Gallery2. Da Benutzer über Typo3 "einsteigen" kümmert sich Typo3 ausserdem um die Cookie Verwaltung und sorgt dafür, daß Gallery2 auch in der aktuellen Session läuft um zu vermeiden das ein Benutzer "ausgelogged" wird wenn er die Anwendung wechselt. Da beide Anwendungen auf optisch identischen Templates ausgeben ist es für einen Besucher unmöglich festzustellen welche Anwendung er sieht, er nimmt die Website als Einheit wahr. Bei den Photos und den Alben akzeptieren beide Anwendung die Integration sowohl als Master, wie auch als Slave, es ist also möglich Bilder oder Alben sowohl in Typo3 einzupflegen, als auch in Gallery2. In der Realität arbeiten die Contentmanager mit Gallery2, während Uploads von Frontendbenutzer über Typo3 zugeführt werden.
Bezüglich der Administrierbarkeit durch die Mitarbeiter bleiben dank des Gallery2 Assetmanagment keine Wünsche offen. Uploads über HTTP oder Flash Uploader, komplette gezipte Archive, per FTP, direkt von anderen Websites und alle Alben sind direkt als Netzwerk Volumen mountbar, sogar übers Handy können Alben angelegt und Bilder direkt eingepflegt weden. Selbstredend werden alle Bilder einmal in der größten verfügbaren Größe eingepflegt wärend alle Zwischengröße von Gallery2 selbständig gerechnet und gecached werden. Braucht Typo3 ein Photo wird Gallery2 beauftragt die Bilder zu rendern. Das Interface in dem die Kommunikation der beiden Anwendungen administriert und gewartet wird wurde im Typo3 Backend in Form eines eigenen Webmoduls integriert.
Da beide Anwendungen nicht permanent aneinander gekoppelt sind, sondern nur zu bestimmten Events miteinander interagieren und auch getrennt voll Funktionsfähig sind, nennt man die Integrationsmethode ein "eventbased loose-coupling", zu Deutsch: Ereignisgesteuerte lose-Verbindung. Im Gegensatz zum "Einbetten"(siehe unten).
Alle Integrationen auf einen Blick
Wer integriert nochmal was? Eine Anwendung integriert Funktionalität einer anderen Anwendung oder auch die komplette Anwendung(siehe Embedding).
Extensions
Die einfachste Methode ist das Erweitern einer Anwendung, mit einem Modul oder einem Plugin. Im Gegensatz zu einem echten Coupling, ist beim Erweitern nur eine der beiden Anwendungen alleine Lebensfähig. Ein Modul ist in der Regel an eine bestimmte Anwendung gebunden und wird auch nur für diese geschrieben. Module und Plugin funktionieren weder Standalone noch in einer anderen Anwendung. Sie müssen aus der Mutterapplikation heraus aufgerufen werden.
Embedding
Dabei wird eine Anwendung in die andere eingebettet, wobei die Einbettende der Eingebetteten alles vorgibt. Aussehen, Benutzer- und Sessionverwaltung. Die Eingebettete stellt dabei der Einbettenden Spezialfunktionen zur Verfügung. Ihr Druckertreiber wäre z.B. eine eingebettete Anwendung, den Sie aus Word oder anderen Anwendungen aufrufen können, um dem Programm eine bestimmte Funktionalität, wie das Drucken, zur Verfügung zu stellen. Dieser würde im Gegensatz zu einem PlugIn auch Standalone funktionieren.
Eventbased loose coupling
siehe Realbeispiel oben.
Gateways
Fasst man das Coupling etwas weiter, könnte man sagen, ein Gateway ist ein Coupling zu einer anderen Website, besser ein Tor zu einer anderen Seite. Möchten Sie beispielsweise das in Ihrem Online Shop mit Kreditkarte bezahlt werden kann, brauchen Sie eine Bank, die die Abbuchungen oder die Verifizierung der Kartennummer für sie vornimmt. Die Kommunikation mit den Servern der Payment Anbieter läuft über ein Gateway. Dabei werden die relevanten Parameter, Daten für die Rechnung, Kaufstatistiken und Protokolldaten mittels sogenannter Tokens, zwischen Ihrer Website und dem Bankserver ausgetauscht. Bei sogenannten Membersites, kann vom Bezahlen der Online Mitgliedschaften zu Ihrer Website, bis hin zur Zugangskontrolle, alles über ein Gateway abgewickelt werden.
Interfaces
Grundsätzlich ist ein Interface alles womit ein Benutzer dem Computer etwas eingeben kann. Hier im speziellen Online-Kontext geht es um Interfaces mit denen der Benutzer den durch eine Website bereitgestellten Content für seinen Bedarf anpassen kann. Das reicht vom einfachsten Beispiel, ein einfaches Login Formular, mit dem man sich als Benutzer, mittels Passwort und Namen an einer Memberseite anmelden kann, über die Formulare mit denen man seine Facebook Profil bearbeiten kann, bis hin zum komplexen Einkaufswagen, mit diversen Gateways zu Banken und Payment Instituten, eines Webshops. Auch wenn der Benutzer keine reale Person ist, sondern ebenfalls ein Computer, ist das Tool, welches dem einem System erlaubt, mit dem anderen zu kommunizieren ein Interface. Wo genau man hier den Schlußstrich zieht ist vermutlich Ansichtssache, nach ganz strenger Auslegung der Definition, könnte man vieleicht auch behaupten, ein Blatt Papier und ein Stift, mit dem man eine Nachricht für jemand anderen hinterläßt, ist ein Interface zu einer anderen Person. "Naja..., im allerweitesten Sinne."

