Ein Standalone-Server für das SAROS

Ein Standalone-Server
für das SAROS-System
Denis Washington
Denis Washington
Standalone-Server für SAROS
SAROS – Distributed Party Programming
Verteilte Code-Kollaboration für Eclipse (und bald IntelliJ)
2
Denis Washington
Standalone-Server für SAROS
Dieser Vortrag
• Motivation und Ziele
• Umsetzung und offene Fragen
•
inkl. derzeitigem Status
3
Standalone-Server für SAROS
Motivation und Ziele
Motivation und Ziele
4
Denis Washington
Motivation und Ziele
Standalone-Server für SAROS
Denis Washington
Heute: Host-basierte Sitzungen
• Initiator einer Sitzung ist Host
•
D
Hat Sonderrechte
•
•
•
•
A
Einladungen
Projekt teilen
Benutzer einladen
C
Mittelpunkt aller Kommunikation
„Quelle der Wahrheit“
B
• Sitzung ohne Host zuende
•
A
D
single point of failure
Sitzung
C
B
D
A weg,
Sitzung weg
C
B
5
Motivation und Ziele
Standalone-Server für SAROS
Denis Washington
Idee: Server-basierte Sitzungen
• Server übernimmt Host-Rolle
•
•
A
D
Initiator ohne Sonderstatus
Teilnehmer können Server bitten
•
•
•
Einladungen
über Server
eine Sitzung zu erstellen
Benutzer einzuladen
Projekte zu teilen
C
B
• Jeder kann Sitzung verlassen
•
•
S
A
S
D
Sitzung
über Server
Auch alle
Ermöglicht “Sitzung fortsetzen”Feature
C
B
A weg,
Sitzung bleibt
S
D
C
B
6
Motivation und Ziele
Standalone-Server für SAROS
Denis Washington
Vorarbeit: Nils Bussas (2014)
• Bachelorarbeit: „Entwicklung eines Server-Prototypen
für Saros“
• Protokoll zur Initiierung einer Sitzung auf Server
1. Benutzer bittet Server, Sitzung zu erstellen (“Create Session”)
oder laufender Sitzung beizutreten (“Join Session”)
2. Server lädt Benutzer zur Sitzung ein
Server
Alice
Join / Create
Session
ggf. Sitzung
starten
• Server-Prototyp in Eclipse-Plugin integriert
•
„Dies soll ein Server sein“-Checkbox in Saros-Einstellungen
• Einschränkungen:
•
•
•
Noch keine Möglichkeit, Projekte zu teilen
Nur eine Sitzung pro Server
Server muss als Eclipse-Instanz betrieben werden
7
Einladung
…
Standalone-Server für SAROS
Motivation und Ziele
Denis Washington
Vorarbeit: Saros-Kern
• Wiederverwendbaren, IDE-unabhängige Teile
von Saros
•
z.B. Netzwerkkommunkiation, Sitzungslogik,
Dateisynchronisation
• Weniger Duplikation zwischen Eclipse- und
IntelliJ-Plugin
•
siehe Bachelorarbeit von Arndt Lasarzik (2015)
• Gute Grundlage für selbständigen Saros-Server
•
Allerdings noch nicht alles Notwendige im Kern (z.B.
Projektverteilung, Sitzungsverwaltung)
8
Saros-E
(Eclipse)
Saros-I
(IntelliJ)
Saros Core
Server
Motivation und Ziele
Standalone-Server für SAROS
Ziele der Arbeit
• Protokoll für Server-Sitzungen vervollständigen
•
Projekt teilen als Nicht-Host
• Eigenständig lauffähigen Saros-Server entwickeln
•
•
•
Nötige Komponenten vom Eclipse-Plugin in den Kern verschieben
Nötige Kern-Interfaces implementieren
Server-spezifischen Code schreiben
• Zuverlässigkeit des Servers evaluieren
•
•
Automatisierter Stresstest
Gezielte Codeinspektion, insbesondere bzgl. Gefahren für Langzeitbetrieb
(Speicher-/Ressourcenlecks)
9
Denis Washington
Motivation und Ziele
Standalone-Server für SAROS
Nicht-Ziele
• Vollständiger Funktionsumfang
•
z.B. nur eine Sitzung auf einmal
• Produktionsreife
•
•
Aber: gute Grundlage für Weiterentwicklung
Evaluation soll Hindernisse für Produktionsreife zeigen
10
Denis Washington
Standalone-Server für SAROS
Umsetzung und offene Fragen
Umsetzung und offene Fragen
11
Denis Washington
Umsetzung und offene Fragen
Standalone-Server für SAROS
Denis Washington
Projekt teilen als Nicht-Host
in Zusammenarbeit mit Ute Neise
• Problem: Server-Sitzungsteilnehmer können keine Projekte verteilen
•
Kein Mensch ist Host
• Lösungsansatz: Teilnehmer schickt Projekt an Server,
Server verteilt es an alle
• Erkenntnis: Ansatz auch für Host-basierte Sitzungen verwendbar
•
Entfernt Einschränkung, dass nur Host Projekte teilen kann
12
Umsetzung und offene Fragen
Standalone-Server für SAROS
Denis Washington
Der Projektaustausch (Project Negotiation)
Saros
A
Alice
Host
Saros
B
Bob
Nicht-Host
Projekt zur Sitzung
hinzufügen
Projekt-Infos
inkl. Datei-Checksummen
Zielprojekt-Auswahldialog
Zielprojekte
Liste fehlender /
nicht-aktueller Dateien
Projektdateien
komprimieren
Zip-Archiv
Projektdateien
entpacken
13
Umsetzung und offene Fragen
Standalone-Server für SAROS
Denis Washington
Neu: Project Negotiation von Nicht-Host zu Host
Saros
Server /
Host
Saros
A
Alice
Nicht-Host
Saros
B
Bob
Nicht-Host
Projekt teilen
Project Negotiation
Project Negotiations vom Server
Projekt-Infos
Projekt-Infos
Automatische
Zuordnung zu
Zielprojekt
Zielprojekt-Auswahldialog
„Alle Projektdateien aktuell“
Zielprojekte
Liste benötigter Dateien
Zip-Archiv
14
Standalone-Server für SAROS
Umsetzung und offene Fragen
Denis Washington
Projekt teilen als Nicht-Host:
Status
• Implementiert (Patch #2264)
• Mit Bussas‘ Server-Prototyp erfolgreich Projekt in Server-Sitzung geteilt
15
Standalone-Server für SAROS
Umsetzung und offene Fragen
Denis Washington
Projekt teilen als Nicht-Host:
Offene Fragen
• Sollte Rück-Projektaustausch von Host zu Initiator vermieden werden?
•
Vermeidet unnötigen Netzwerkverkehr
•
Unter Umständen weniger verwirrend
•
Aber: erfordert mehr Special Casing im Code, mehr Potenzial für Programmierfehler
16
Umsetzung und offene Fragen
Standalone-Server für SAROS
Denis Washington
Erweiterung des SAROS-Kerns
Saros-E
Core
I
• Methode: Benötigte Klasse aus Eclipse-Plugin ermitteln; Baum der NichtKern-Abhängigkeitsbaum erstellen; von den Blättern aufwärts zum Kern
portieren
•
•
Eclipse-Klassenversionen besser gepflegt als IntelliJ-Äquivalente
Einführung von Interfaces, wenn Portierung zu aufwendig oder nicht sinnvoll
• Inkrementell
•
•
Erst nur absolut nötige Klassen in den Kern bringen
Dann weitere während der Entwicklung des Servers, falls nötig
17
Standalone-Server für SAROS
Umsetzung und offene Fragen
Erweiterung des SAROS-Kerns:
Status
• Alle bisher ermittelten essenziellen Klassen zum Kern portiert
•
•
OutgoingProjectNegotiation und IncomingProjectNegotiation
SarosSession und SarosSessionManager
• Die meisten Patches bereits in Master, einige letzte noch im Review
18
Denis Washington
Umsetzung und offene Fragen
Standalone-Server für SAROS
Implementation des Servers
Core
Server
I
I
I
• Implementation von Kern-Interfaces
•
•
•
Projekt- und Dateisystemmodell (IWorkspace, IResource, IPath, …)
Einstelllungen (IPreferencesStore)
…
• Bootstrapping Code (Main-Klasse usw.)
19
Denis Washington
Umsetzung und offene Fragen
Standalone-Server für SAROS
Implementation des Servers:
Status
• Dateisystem-Interfaces implementiert
• Rudimentäre Main-Klasse
• Gerade: Ermittlung und Implementation fehlender Komponenten
1.
2.
3.
4.
Laufen lassen
Aufbau einer Server-Sitzung von Saros-E aus versuchen
Gucken was schief geht, Code ergänzen
Zurück zu Schritt 1
20
Denis Washington
Standalone-Server für SAROS
Umsetzung und offene Fragen
Denis Washington
Evaluation des Servers
+
• Frage: Wie zuverlässig sind Saros-Kern und -Server im Langzeitbetrieb?
• Kombination aus Black- und White-Box-Verfahren
•
•
Black: Automatisierter Stresstest auf Basis des STF-Framework für SarosOberflächentests
White: Codeinspektionen in kritischen Bereichen, um z.B. Speicher-/Ressourcenlecks
oder mögliche Verklemmungen aufzuspüren
• Fokus auf Identifikation von Problemen, nicht deren Behebung
21
Standalone-Server für SAROS
Umsetzung und offene Fragen
Denis Washington
Evaluation des Servers:
Offene Fragen
• Was genau bei Stresstest beobachten / messen?
•
•
•
Konsistenz des Synchronisationszustands?
Log-Dateien?
Ressourcenverbrauch (mittels Monitoring-Tools wie VisualVM)?
• Wie möglicherweise kritische Stellen für Code-Inspektionen ermitteln?
•
•
Erfahrene Saros-Entwickler (Stefan Rossbach) fragen?
Statische Analysetools wie FindBugs, PMD?
• Wie Einzelergebnisse zu Gesamtbild integrieren?
22
Standalone-Server für SAROS
Zusammenfassung
Zusammenfassung
23
Denis Washington
Standalone-Server für SAROS
Zusammenfassung
Status
• Projekt hinzufügen für Nicht-Hosts implementiert und
mit Server-Prototyp erfolgreich getestet
• Wesentliche fehlende Komponenten in den Saros-Kern verschoben
• Kern-Dateisystem-Interfaces für den Server implementiert
• Kurz vor erster lauffähigen Version des Servers
24
Denis Washington
Standalone-Server für SAROS
Zusammenfassung
Ausstehend
• Server lauffähig, funktionierend machen
• Evaluation
•
•
•
•
•
Klärung offener Fragen
Schreiben eines automatisierten Stresstests
Messungen
Codeinspektionen
Auswertung der Ergebnisse
25
Denis Washington
Standalone-Server für SAROS
Danke
Danke fürs Zuhören
Fragen? Anregungen?
26
Denis Washington