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/