Herzlich willkommen auf dem Blog der exensio GmbH

exensio ist ein unabhängiges Software-Unternehmen von erfahrenen IT Beratern und Architekten. Zu unseren Kunden zählen namhafte deutsche Großunternehmen.

exensio verbessert das Kommunikations- und Informationsmanagement von Unternehmen. Auf Basis sinnvoller und zweckmäßiger Technologien erarbeiten wir flexible und übergreifende Lösungen für webbasierte Informationssysteme. Abhängig von den Kundenanforderungen realisieren wir Web Applikationen sowie Lösungen auf Basis von Web Content Management- und Portalsystemen. Integrativ, wirtschaftlich und anwenderfreundlich!

Hier gelangen Sie zur exensio GmbH.

Sonntag, 27. Februar 2011

Effiziente Entwicklung mit Virtualisierung (Teil 2)

Der erste Teil des zum Thema „Effiziente Entwicklung mit Virtualisierung“ hat die Vorteile der Virtualisierung für die Entwicklung aufgezeigt und ESXi als eine mögliche Lösung vorgestellt. In diesem Teil wird auf die Einrichtung und Konfiguration der Virtualisierungs-Images eingegangen.

Konfiguration eines Virtualisierungs-Images
Jeder Entwickler besitzt ein eigenes, vorkonfiguriertes VMWare-Image. Die Entwicklungstätigkeiten von exensio sind überwiegend im Bereich von Java angesiedelt und deshalb wird aus Performance-Gründen auf Linux als Betriebssystem für die Entwicklung und damit auch für die Virtualisierung gesetzt.

Es gibt ein Master-Image, das mit entsprechender Software, wie Entwicklungsumgebungen, Datenbank-Zugriff-Tools oder Versionsverwaltungssoftware, vorkonfiguriert ist. Die relevanten, über SVN versionierten, Software-Projekte werden entsprechend auf dem Master-Image ausgecheckt. Des Weiteren werden auf dem Master-Image auch zeitaufwendige Konfigurationen, wie die Einrichtung einer Domäne für einen Applikationsserver, vorgenommen.

Jeder PC-Benutzer hat natürlich auch seine Vorlieben und Einstellungen auf einem PC, die er nicht missen möchte. Durch Anlage eines Accounts auf dem Master-Image für jeden Entwickler können individuelle Konfiguration vorgenommen werden.

Neben den Entwicklungs-Images gibt es einen zentralen DB-Server auf dem alle Datenbanken für die Entwicklung verfügbar sind. Der DB-Server ist wiederum selbst eine virtuelle Maschine. Die nachfolgende Abbildung zeigt beispielhaft die virtuellen Maschinen für die Entwicklung und die Datenbank. Hierbei ist auf der rechten Seite der Abbildung auch zu sehen, dass virtuelle Netzwerke für die einzelnen Maschinen eingerichtet wurden. Damit werden die virtuellen Maschinen Netzwerk-Ports zugeordnet, um zu verhindern, dass alle über den gleichen Netzwerk-Port des ESXi-Servers gehen.



Ausrollen der Virtualisierungs-Images für ein neues Projekt
Wie erfolgt nun das Ausrollen der Virtualisierungs-Images, wenn exensio mit einem neuen Projekt beginnt?
  1. Ggfs. noch nicht installierte Software wird auf dem Master-Image eingerichtet
  2. Basisstruktur wird in der Entwicklungsumgebung angelegt (z.B. Workspace konfigurieren, Eclipse-Projekte erstellen, Domaine für den App-Server erstellen und konfigurieren)
  3. Datenbank und SVN-Repository für das neue Projekt einrichten und auf Master-Image auschecken bzw. konfigurieren
  4. Einfaches clonen des Master-Images für jeden Entwickler, der am Projekt teilnimmt
  5. Der Entwickler muss nach dem Starten seines Images noch ein Script ausführen, in dem individuelle Anpassungen vorgenommen werden, wie das Setzen des Hostnamen oder Berechtigungen für seinen Login-Benutzer
Die vorangegangene Auflistung zeigt noch einmal deutlich die Zeitersparnis, dass nur eine Person die eher lästigen Schritte 1. bis 4. durchführen muss und die anderen Entwickler anschließend direkt loslegen können.

Infografik über Kollaboration im Enterprise 2.0

Folgende Infografik von Socialcast zeigt meines Erachtens kurz und knapp, wofür Enterprise 2.0 steht. Besonders schön zeigt die Teilgrafik die historische Entwicklung von Collaboration Tools - von Emails hin zu Twitter. Der ganze Blog findet sich hier (inklusive größerer Grafik).

(Source: socialcast.com)

Samstag, 26. Februar 2011

Content-Präsentation in Web-Portalen

Wird in einem Projekt Content aus einem CMS in ein Portal integriert, gilt es die Unterschiede beider Systeme zu verstehen, um eine gute Portal-Architektur entwickeln zu können. Hier wird oft der Fehler gemacht, dass jede Content-Seite 1:1 als Portal-Seite abgebildet wird. Die hieraus entstehenden Probleme sollen mit diesem Blogeintrag beschrieben werden.

Unterschiede beider Systeme:
Seiten werden in einem CMS meistens statisch in Form von HTML-Seiten vorgehalten. In einem Portal sind alle Seiten jedoch Objekte, die im Speicher gehalten werden. Basiert das Portal auf Java-Technologien, so sind dies meistens JSPs. Werden nun alle Content-Seiten als JSPs abgelegt, führt dies unweigerlich zu Performance- und Memory-Problemen.

Schlechte Architektur:
In diesem Fall werden die Content-Seiten (inklusive der Content-Navigation) 1:1 innerhalb der Portal-Seiten abgebildet (siehe Abbildung unten). Dies hat den großen Nachteil, dass jede Content-Seite (repräsentiert durch eine Portal-Seite) als Objekt Memory verbraucht. Neben dem Memory-Problem tritt auch noch ein Performance-Problem auf, falls zu viele Berechtigungen (Personalisierung) auf die einzelnen Content-Seiten vergeben werden.

Die Abbildung unten zeigt des Weiteren, dass für jeden Menü-Eintrag der Content-Navigation eine weitere Portal-Seite aufgebaut wird.

Gute Architektur:
Hierbei wird darauf Wert gelegt, dass es nur ein (oder mehrere wenige) Content-Portlets gibt. Der Content wird basierend auf Abfragen integriert und nicht 1:1 abgebildet. Es ist auch vorstellbar, dass das Menü des Content-Portlets innerhalb der Hauptnavigation angezeigt wird.
Fazit:
Bei der Integration von Content aus einem CMS sind die Unterschiede beider Systeme zu beachten. Ein Portal ist ein dynamisches, ein CMS hingegen ein statisches System. Wichtig hierbei ist darauf zu achten, dass die Anzahl von Content-Portlets möglichst gering gehalten wird. Innerhalb des Content-Portlets kann dann über den gesamten Content navigiert werden.

In unserem Unternehmen brauchen wir Twitter nicht!

Diese Aussage höre ich des Öfteren. Auch in unserem Unternehmen wird der Einsatz von Twitter kontrovers diskutiert. So sind viele der Meinung, dass über Twitter nur sinnlose Informationen verteilt werden, beispielsweise, dass der Zug von Kollege X 5 Minuten Verspätung hat. Dies kann natürlich geschehen, da es neben introvertierte auch extrovertierte Kollegen gibt. Aber nun möchte ich kurz schildern, wie wir diese Woche mittels Twitter einen Spezialisten für ein dediziertes Thema gefunden haben.

Wie uns Twitter half einen Spezialisten zu finden:
Wir hatten diese Woche ein Problem, zu dessen Lösung wir gerne den Rat eines Spezialisten eingeholt hätten. Nun gibt es die Möglichkeit, solch eine Frage in einer offenen Mailingliste oder in einem Internet-Forum zu stellen. Das Problem ist nur, es gibt sehr viele Mailinglisten und auch Foren, die teilweise die selben Themen adressieren. Deshalb dachten wir, ob sich das Problem nicht mit einem Tweet lösen lassen würde. Auf unseren Tweet haben wir innerhalb von 1 Minute eine Antwort erhalten. Wir waren alle sehr beeindruckt. Wichtig hierbei ist, dass man ein für das Thema relevantes Tag benutzt. Diesen Tag-Kanal können dann Interessierte abonnieren.

Was könnte Twitter für Unternehmen bringen?
In großen Unternehmen stellt die Suche nach einem Spezialisten immer eine große Herausforderung dar. Jeder kennt den Spruch: „Wenn Siemens wüsste, was Siemens weiß“. Gerade für das Finden von Spezialisten würde sich Twitter meines Erachtens sehr gut eignen. Man könnte Twitter vielleicht auch mit dem unternehmensinternen „Flurfunk“ vergleichen. Über den „Flurfunk“ werden Informationen verteilt. Bei Interesse kann man sich auf solch einen Informationskanal aufschalten. Diese Informationen können per Tag oder Volltext durchsucht werden. Dies würde auch dramatisch zu einer Reduktion von Informationsemails führen, die nur versendet werden, um beispielsweise auf einen nützlichen Link hinzuweisen.

Freitag, 25. Februar 2011

Twitter in Grails einbinden mit Twitter4J

Twitter kann auf sehr einfache Weise in Grails[1]-Applikationen eingebunden werden. Aufgrund der vorhandenen Grails-Plugins und Java APIs wird das Twittern in der eigenen Applikation damit zum Kinderspiel.

Eigene Applikation bei Twitter registrieren
Um mit einer fremden Applikation auf den eigenen Twitter-Account zugreifen zu können, muss die Applikation bei Twitter registriert werden. Das geschieht auf der Twitter-Seiter unter Einstellungen -> Verbindungen. Die entsprechenden Tokens, die Twitter für die Applikation generiert, werden für die Authentifzierung benötigt.

Installation und Konfiguration des Grails-Plugins Twitter4J
Unter anderem wegen der guten OAuth-Unterstützung [2] haben wir uns für das Grails-Plugin Twitter4J [3] entschieden.
Die Installation läuft Grails-typisch über "grails install-plugin twitter4j" ab. Die Konfiguration, in welcher der eigenen Applikation Zugang zum Twitter-Account gestattet wird, erreicht man über http://localhost:8080/enterprise20/twitter4j (enterprise20 steht für den eigenen Applikationsnamen). Innerhalb dieser Konfiguration werden die zuvor erzeugten Tokens benötigt.

Der erste Tweet über die eigene Applikation
Der Twitter4J Service lässt sich intuitiv in einem Grails-Controller ansprechen und so ist alles, was für den ersten Tweet benötigt wird, der folgende kleine Controller.

package com.exensio.enterprise20.controller

import org.twitter4j.grails.plugin.Twitter4jService;
import twitter4j.TwitterException

class TwitterController {

 Twitter4jService twitter4jService
 def maxMessageLength = 140
 
 def postStatus = {
  def message = params.twitterMessage
  if (message?.size() <= maxMessageLength) {
   twitter4jService.connect()
   try {
    twitter4jService.updateStatus(message);
   } catch (TwitterException te) {
    flash.error = te.message
   }
  } else {
   flash.message = "Please limit yourself to 140 characters"
  }
 }
}

Fazit & weitere Möglichkeiten
Der Zugriff auf Twitter gestaltet sich mit Grails und dem richtigen Plugin also sehr einfach. Über die Möglichkeit, mehrere Twitter-Accounts in der Applikation zu verwalten, kann beispielsweise durch eine intuitive Oberfläche das Twittern unter verschiedenen Accounts deutlich vereinfacht werden. Durch Implementierung von Addons wie der automatischen Einbindung eines URL-Shorteners [4] kann dem Benutzer hilfreiche Funktionalität rund um das "normale" Twittern angeboten werden.

Links
[1] Homepage Grails Framework
[2] Das OAuth-Protokoll
[3] Das Twitter4J Grails-Plugin
[4] Zum Beispiel der Google URL Shortener

Montag, 21. Februar 2011

In Usability investieren - Warum es sich lohnt...

Die Usability einer Software entscheidet oftmals über den Erfolg eines Projekts, speziell im Bereich der Web Applikationen und Portale. Usability betrifft u.a. die Gestaltung (Design und Layout) und Aspekte wie Lesbarkeit, Navigation und intuitive Bedienbarkeit. Wie gut die Usability einer Software ist, wird in sogenannten Usability Tests geprüft. Hierzu gibt es jede Menge Methoden beginnend bei einfachen Usability Fragebögen bis hin zu allen möglichen Formen von Ton-, Video- und Bildschirmaufzeichnungen. Ein spezieller Test ist das Eyetracking (Blickbewegungsregistrierung), bei der die Blickbewegungen der Tester aufgenommen werden, um herauszufinden, welche Bereiche einer Seite besonders oder gar keine Beachtung finden.

Bei einer meiner Recherchen im Internet bin ich auf ein interessantes Video von Dr. Susan Weinschenk gestoßen, welches sehr anschaulich (und mit toller Animation) in 5 Minuten aufzeigt, wie sich Investitionen in Aktivitäten zur Optimierung der Usability lohnen.




Hier der Link auf das erwähnte ROI Poster.

Sonntag, 20. Februar 2011

Ist unternehmensinternes twittern sinnvoll?

Immer mehr Unternehmen beschäftigen sich mit dem Thema Enterprise 2.0. So befinden Wikis bei den meisten Unternehmen bereits im Einsatz, um Wissen unter Kollegen zu teilen. Doch kann Micro-Blogging die Wissensvermittlung unter Kollegen fördern?

Was ist ein Micro-Blog?
Die Kurznachrichten, die über Twitter versendet werden, heißen Micro-Blogs. Die Länge einer Nachricht ist auf 140 Zeichen begrenzt. Die interessanteste Neuerung bei Twitter war meines Erachtens die Einführung von Hash-Tags im August 2007, mit denen es möglich ist, Nachrichten zu filtern. Ich möchte nicht verschweigen, dass es zu dem Thema ‚Tags‘ kontoverse Diskussionen gibt, da Twitter auch über eine Suchfunktion verfügt. Suchergebnisse, die auf Tags basieren, sind meistens jedoch sinniger.

Wozu könnten Micro-Blogs innerhalb von Unternehmen eingesetzt werden?
Die Email – das heute beliebteste Kommunikationsmittel – stößt langsam an seine Grenzen. Bei großen verteilt arbeitenden Teams können Micro-Blogs dem Austausch von Informationen und Ideen dienen und viele Emails ersetzen. Eine Email erwartet von der Idee her eine Antwort. Es gibt jedoch viele Informationen, die per Email verteilt werden, jedoch keine Antwort erwarten. Diese enthalten meistens das Akronym „FYI“ und einen oder mehrere Links. Ein weiterer Unterschied zur Email ist, dass meine Informationen gefunden werden, ohne, dass ich diese verteile (Push vs. Pull). Micro-Blogs können auch mit einer virtuellen Kaffee-Pause vergleichen werden, bei der Informationen in Kurzform ausgetauscht werden. Ich möchte mit dieser Aussage jedoch keine Vier-Augen-Kaffee-Pausen durch virtuelle ersetzen ;-). Kollegen, die auf Reisen sind, können auch an diesen Informationen partizipieren. Ein weiterer Vorteil ist die Möglichkeit, nach diesen Informationen (und deren Verfassern, die potentielle Experten sein könnten) zu suchen.

Lösungen für unternehmensinternes twittern:
Die folgenden Lösungen können unternehmensintern eingesetzt werden. Hierbei gibt es die Möglichkeit, diesen Service zu mieten (SaaS) oder sich die Software intern zu installieren. Bei Saas gilt es auch, Fragestellungen bezüglich des Datenschutzes zu bedenken. Hier eine kurze Auflistung von verfügbaren Lösungen (die Liste erhebt keinen Anspruch auf Vollständigkeit):

  • Yammer – ist wohl die bekannteste Plattform. Ist als SaaS verfügbar. Weitere Informationen finden sich hier.
  • CO-OP – verfügbar als SaaS. Weitere Informationen finden sich hier.
  • Status.net – Open-Source-Lösung. Kann als SaaS gemietet oder hausintern installiert werden. Weitere Infos finden sich hier.
  • Communote – SaaS Lösung aus Deutschland. Weitere Infos finden sich hier.
  • Es wäre auch denkbar, solch eine Lösung basierend auf dem Grails-Framework ganz individuell - auf Kundenwünsche angepasst - zu realisieren.

Fazit:
Ich bin der Meinung, dass Micro-Blogs eine interessante Möglichkeit zur Wissensverarbeitung bieten können. Für einen erfolgreichen Einsatz reicht es jedoch nicht aus, sich ein Tool auszusuchen. Es ist vielmehr wichtiger, eine sinnvolle Tag-Taxonomie aufzubauen, damit das Wissen später wieder gefunden werden kann.

Sonntag, 13. Februar 2011

Effiziente Entwicklung mit Virtualisierung (Teil 1)

Insbesondere bei größeren Projekten haben wir schon öfters in der Praxis erlebt, dass einiges an Zeit für die Einrichtung und das Warten der Entwicklungsinfrastruktur benötigt wird. Woran liegt das?
Die Entwicklungsumgebungen bieten heutzutage eine große Unterstützung und sind in der Regel einfach zu installieren. Allerdings sind in vielen Fällen zusätzliche Konfigurationen und Installationen notwendig z.B. für das Anbinden von Drittsystemen. Dies kann sehr zeitintensiv sein, wenn jeder Projektmitarbeiter dies an seinem Entwicklungsrechner selbst durchführt.
Kosten und auch Nerven kann der Einsatz von Virtualisierung in der Entwicklung sparen.

Virtualisierung mit ESXi
exensio setzt hierfür ESXi [1] ein. ESXi kommt von der Firma VMWare und ist ein sogenannter Bare-Metal-Hypervisor, der direkt auf der Server-Hardware installiert wird. Es handelt sich dabei um ein abgespecktes Linux-System, das im Vergleich zu anderen Virtualisierungslösungen einen sehr niedrigen Overhead hat. Des Weiteren ist ESXi kostenfrei verfügbar.

Für die Entwicklung greifen Entwickler auf ein VMWare-Image zu, das auf dem zentralen ESXi-Server läuft. Der Zugriff erfolgt bei Windows über den Remote Desktop und bei Linux über den NXClient. Auf dem VMWare-Image ist alle notwendig Software installiert und konfiguriert, so dass direkt mit der Arbeit losgelegt werden kann.
Die Hardwareausstattung des ESXi-Servers sollte angepasst sein an die Anzahl der parallel arbeitenden Entwickler. Bei komplexeren JEE-Projekten sollte man pro Virtuelle Maschine mit 3,5 GB RAM kalkulieren.

In einem der nächsten Blogeinträge wird detaillierter auf die Konfiguration, Individualisierung und Verteilung der VMWare-Images eingegangen.

Vorteile der Virtualisierung
Welche Vorteile können sich also durch die Nutzung von Virtualisierung für die Entwicklung ergeben?

Zeitersparnis, da die Basisumgebung nur einmal eingerichtet wird und anschließend für alle Entwickler dupliziert wird. Bei größeren Projekten ist diese Arbeit nicht zu unterschätzen:
  • Anlegen oder Konfiguration einer Server-Domaine (z.B. JDBC-Einstellungen)
  • Installation der Entwicklungsumgebung
  • Ggfs. Konfiguration der Versionsverwaltung
  • Basisstruktur für das Projekt wird einmal zentral aufgesetzt
  • Installationen und Konfiguration für den Zugriff auf Backendsysteme (z.B. DLL für SAP-Zugriff)
Es kann einfach auf eine funktionierende Entwicklungsinfrastruktur zurückgegriffen werden, falls etwas "zerstört" wurde (z.B. defekte Serverdomäne), sei es durch den Entwickler selbst oder das System.

Wird eine Applikation kompiliert oder deployed, dann fällt in der Regel eine hohe Belastung für die CPUs an. Durch die Virtualisierung steht über den ESXi-Server wesentlich mehr Leistungspotential (CPU, Festplattendurchsatz, ...) zur Verfügung, das von den jeweiligen VMs zeitweise abgerufen werden kann.

Was sollte man beachten?
Für einen reibungslosen Ablauf und Verbesserungen ist die Mitarbeit aller Entwickler erforderlich. Änderungen die zukünftig für alle verfügbar sein sollten müssen in das Masterimage zurückgespielt werden. Dies können beispielsweise Helper-Skript sein oder Plugins für die Entwicklungsumgebung.

Des Weiteren sollte für die Verwaltung der zentralen Entwicklungsserver eine dedizierte Personengruppe zuständig sein, da sonst sehr schnell der Überblick verloren geht.


[1] ESXi