Zunami

Transcrição

Zunami
Projekteinreichung - SS2011
Zunami
Kollaborative Entwicklungsumgebung zur Unterstützung von Semesterprojekten bei
der Erstellung von Client-Server Programmen
1
Beschreibung
Das Projekt Zunami soll eine cloudbasierte, kollaborative Softwareentwicklung ermöglichen.
Die Vorbilder sind ehemals Google, jetzt Apache Wave und Etherpad. Wave ist vorrangig für Textbearbeitung gedacht und basiert auf dem XMPP/Jabber Protokoll. Die
Arbeit an Dokumenten basiert auf dem Einladungsprinzip; man lädt Freunde aus der
Kontaktliste ein um an Dokumenten zu arbeiten. Ebenso ist Etherpad dazu erdacht
worden Dokumente zu bearbeiten. Jedoch eignen sich beide Lösungen nicht für die
Softwareentwicklung. Ebenso ist ein Betreiben in einer Cloudumgebung nicht möglich.
Zunami läuft in einer virtualisierten Umgebung. In der Cloud befindet sich die Serversoftware wie auch die Clients jeweils in Virtuellen Maschinen. Es gibt eine VM die den
Server anbietet. Die VMs sind untereinander in einem lokalen Netzwerk vernetzt. Als
Cloudmanagementtool wird OpenNebula verwendet. Die Kommunikation zwischen
den VMs findet über RPC statt. Softwareentwickler verbinden sich per x2go oder ähnlichen Remote-Programmen an eine Client-VM. Sobald sich ein Mitarbeiter verbindet,
wird für ihn eine VM gestartet. Sobald der Mitarbeiter die Verbindung beendet, wird
diese VM herunter gefahren. Um Resourcen zu sparen sind die VMs nur dann online,
wenn sie auch tatsächlich verwendet werden. Somit können Terminals mit rudimentären I/O-Fähigkeiten verwendet werden. Da beim entfernten Zugriff nur die Pakete der
Remoteprogramme versendet werden, vereinfacht sich die Kommunikation zwischen
Client-Terminal und Client-VM. Das Problem der Anbindung der Terminal-Clients
an das Internet, der Flaschenhals der ganzen Kommunikation, wird damit geschickt
minimiert. Denn die häufigen Anfragen zwischen der verschiedenen, teils ressourcenhungrigen Protokollen findet im lokalen Netzwerk zwischen Client-Server-VMs über
RPC statt. Somit lassen sich Mitarbeiter aus z.B. geographisch abgelegenen Gebieten
mit schwacher Internetanbindung ins Projekt mit einbeziehen. Ebenso wird durch die
Zentralisierung der Rechenressourcen eine kostengünstigere und energieeffiziente Arbeitsumgebung erschaffen.
Zunami soll ein Syntaxhighlighting bei den Clients unterstützen und die Arbeit an
einem Projekt/Quellcode simultan ermöglichen, sodass andere Benutzer die Veränderungen in Echtzeit beobachten und ebenfalls in die Bearbeitung eingreifen und/oder
Ideen einbringen können. So wie es z.B. beim Pair-Programming üblich ist, nur das
hier die kollaborative Arbeit an entfernten Rechnern stattfindet. Da es heutzutage üb-
2
lich ist, dass verschiedene Mitarbeiter an einem Projekt arbeiten und dabei an international verteilten Standorten sitzen, wäre dies sicherlich eine gute Alternative zu den
oben genannten Textbearbeitungs-Programmen. Zunami bietet zudem eine Lösung für
ein anderes Problem.
Bei vielen Projekten werden Client-Server-Programmiermodelle eingesetzt. Diese werden meist von verschiedenen Teams entwickelt. Ein Team befasst sich mit der Entwicklung des Clients, ein weiteres mit dem des Servers. Klassischerweise werden die
Programme lokal entwickelt, was unmittelbar dazu führt, dass bereits bei den ersten
Tests Konfigurationsprobleme (IP-Adressen, DNS-Vergabe, Firewall, etc.) auftreten,
welche die eigentliche Programmentwicklung unnötig verzögern. Hier ist Zunami ein
entscheidender Helfer, da die Entwicklung und das Testing von vornerein im konfiguriertem Netzwerk erfolgt.
Zusätzlich sollen die Client-VMs mit hilfe der Software noch einen Chat (ähnlich IRC)
und eine Verbindung zwischen den arbeitenden Entwicklern über VoIP bieten.
Die Koordination der aktuellen Datei finden auf einer ServerVM statt, die die aktuelle
Datei in Revisionen zwischenspeichert. Ggf. wird die Datei mit einer Revisionsverwaltungssoftware à la Subversion (SVN) oder GIT im Hintergrund gespeichert.
Zunächst ist für ClientVMs eine in Java geschriebenes Software beabsichtigt, die alle
Möglichkeiten der auf der ServerVM zu verfügung stehenden Services zu implementieren, ausnutzen kann.
Priorität 1: Server: simultane Bearbeitung von einer Quellcodedatei und Chatfunktion
Client: Simple Oberfläche in Java die Syntaxhighlighting für das Textfeld bietet und die
Chatfunktion unterstützt Virtualisierung Clients/Server mit OpenNebula (Verbindung
per RPC)
Priorität 2: Server: VoIP, Versionsverwaltung Client: VoIP
Linkliste:
http://etherpad.com/
http://incubator.apache.org/projects/wave.html
http://googlewavedev.blogspot.com/2010/12/introducing-apache-wave.html
http://opennebula.org/
http://www.x2go.org/