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
© Copyright 2025 ExpyDoc