ownCloud Infinite Scale

die neue Private Cloud für Dich

owncloudlogo

Chemnitzer Linux-Tage 2022

Klaas Freitag, Tobias Baader

Heute beim CLT 2022

Klaas

Klaas Freitag

CTO ownCloud.com

Tobi

Tobias Baader

Product Management

ownCloud - mit Geschichte!

  • ownCloud Community aktiv seit 2010?

  • N Releases des PHP basierten Servers mit

    • vielen Applikationen (Apps)

    • Integrationen

    • Enterprise Anwendungen

  • Aktiv maintainte Clients

    • Mobil-Clients für Android und iOS

    • dem Desktop Client für Linux, MacOS und Windows

    • Virtual Filesystem für Windows

ownCloud.com

Seit zehn Jahren aktiv und nie weg gewesen

  • ownCloud Company mit Sitz in Nürnberg

    • Heute etwa 60 MitarbeiterInnen

  • Kunden aus den verschiedensten Bereichen

  • Services und Projekte um und mit ownCloud

Anspruch: private Cloud auf Enterprise Niveau

ownCloud Infinite Scale

im Detail

Was

ist ownCloud Infinite Scale?

  • open source Software

  • EFSS Server-Neuimplementierung

  • komplett neue Webapplikation

  • kompatible Desktop- und Mobilclients

  • released als Technical Preview, GA im Laufe 2022

Deine neue private cloud?

Warum?

Die Motivation, eine radikale Erneuerung unserer Serverimplementierung anzugehen:

  • In zehn Jahren ownCloud haben wir viel gelernt.

    • Architektonische Schwächen überwinden

    • Reduzierung

    • Kollaboration statt Eigengewächs

  • Integrationsfähigkeit

  • Resourcensparsamkeit

  • Skalierbarkeit

  • Einfachheit

Entwicklungs-Grundsatz

"Infinite Scale is a design principle"

und nicht (nur) Marketing

Entwicklungsparameter

  • Golang

  • Microservices Architecture mit GRPC (intern)

  • "Cloud Native" Deployment Modelle

  • Strenge Trennung von Clients und Server

  • Höchste Integrierbarkeit

  • Testdriven, agile development

Eine neue Epoche für ownCloud!

Keine zentrale Datenbank

  • Resourcen sparen:

    • Energie

    • Geld

    • Adminstrationsaufwand

    • Entwicklungsaufwand

  • More "Cloud Native"

  • Lösung des "Split-Brain" Problems:

    • Information ist verteilt zwischen Filesystem und Datenbank

Daten müssen so eng wie möglich zusammengehalten werden

Zusammenarbeit

ownCloud Infinite Scale ist nicht ownCloud allein.

Technische Details

Ein paar Beispiele

File-Spaces

"Infinite" funktioniert nicht mit einem einzigen Dateibaum.

oCIS File-Spaces sind eine weitere Organisationseinheit, die einen Datei-Teilbaum kapselt.

Indizierungen, Suche, ETag Propagation wird auf Space-Ebene abgehandelt und ist gut parallelisierbar.

oCIS identifiziert Dateien entweder per ID oder anhand einer SpaceID und eines relativen Pfades.

Scalierbares Datenkonzept

Metadaten

Metadaten sind "Zusatzinformationen" zu Dateien. Beispiele: Uploadtime, Zugriffsrechte, …​

Wie werden Metadaten gespeichert ohne Datenbank?

  • Extended file attributes

  • Metadaten files in speziellem Metadaten-Storage

  • Schnelle Suche durch Indizierung unterstützt

Extended File Attributes

Metadaten werden in den extended file attributes abgelegt:

[:~/.ocis>] $ getfattr -d nodes/12/38/b8/a0/-b4f5-485b-b504-37eaf8ad9ab3
# file: nodes/12/38/b8/a0/-b4f5-485b-b504-37eaf8ad9ab3
user.ocis.blobid="495d3afd-4b5a-416e-9ad8-a3a1234ffa10"
user.ocis.blobsize="1149628"
user.ocis.cs.adler32=0se4qZjQ==
user.ocis.cs.md5=0sFtBopic4u9/n2C2D6NVTeA==
user.ocis.cs.sha1=0s8yHNXLt87IvxhNqynnXatU1OeKg=
user.ocis.name="ksnip_20210127-123506.png"
user.ocis.parentid="220ca77b-3a9f-47ce-a934-a48c0f4409d4"

Metadaten Storage

Speichert größere Mengen an Metadaten in JSON files.

Diese files lassen sich auf Space-Ebene indizieren (blieve-Index) und werden dadurch extrem schnell durchsuchbar.

Das Decomposed FS

Wie kann eine Datei in einem Tree schnell anhand einer ID finden?

  • Alle Shares sind ID basiert

  • Links verwenden auch besser eine ID

Das Decomposed FS ist eine dafür optimierte Filesystem-Struktur:

  • Lookup einer Datei oder eines dir-listings anhand einer ID

  • Separation von Binärdaten und Ordnungsstruktur

Decomposed FS Details

Struktur im Posix Filesystem:

Beispiel: Datei files/ksnip*.png im Personal Space eines Benutzers

Decompsed FS Struktur

Storage Treiber

oCIS abstrahiert verschiedene Storage Technologien.

Für jedes Filesystem kann ein eigener Treiber geschrieben werden, der dessen Stärken ausnutzt

Beispiele: SMB oder S3ng

Architektur

ocis architecture

ownCloud Web

Der neue Webclient

Classic UI und ownCloud Web

classic new ui

ownCloud Web - aktueller Stand

web ui files

App Area

web ui apparea

ownCloud Web "Rahmen"

web ui container

ownCloud Web ≠ File Explorer

  • ownCloud Web ist im Screenshot als der "Rahmen" zu sehen

  • D.h. ownCloud Web ist als Plattform konzipiert, um Apps / Extentions zu integrieren

  • Der File Explorer ist die erste App, die in ownCloud Web integriert wird

Eckdaten

API driven

Alle Daten und Aktionen werden via APIs angesprochen

Technologie

VUE / TypeScript

Kompatibilität

Entwickelt für oCIS, kompatibel zur oc10

Design Baukasten

Offenes Designsystem → Community Baukasten für Extention Entwickler; einheitliches look and feel

Barrierefrei

Für nicht-Maus User, blinde Menschen mit Screenreader oder anderweitig Eingeschränkte wie z.B. Eltern mit Kind auf dem Arm etc.

ownCloud Design System für Extention Entwickler

Kann ich ownCloud Web schon im Produktiveinsatz benutzen?

  • Offiziell: Nein

  • Betaphase startet Anfang Mai 2022

  • Stabile "Version 1.0" ab Sommer / Q3 2022 geplant

  • Europäische Organisation für Kernforschung (CERN), wir selbst und Andere nutzen ownCloud Web aber bereits produktiv

  • Probierts gerne mal aus - User können risikofrei zwischen classic und dem neuen UI wechseln (ownCloud 10)

Fokus Usability

"Joy of use" sowohl für Expert*innen als auch für unerfahrene user

Es folgt: Einblick in unser Usability-Nähkästchen

Bevor wir loslegen:: Meine Definition von Usability

  • Gebrauchstauglichkeit (Usability) bezeichnet nach DIN EN ISO 9241-11 das Ausmaß, in dem ein System, ein Produkt oder eine Dienstleistung durch bestimmte Benutzer in einem bestimmten Nutzungskontext genutzt werden kann, um bestimmte Ziele effektiv, effizient und zufriedenstellend zu erreichen.

🥱 … ziemlich trocken. Wenn ich erklären will, was Usability ist, halte ich es lieber mit den Worten von Steve Krug:

  • "Usability bedeutet, dass ein normaler Mensch in der Lage sein sollte, Ihre Produkte zu benutzen, ohne den Vorgang als frustrierend oder lästig zu empfinden. Die Dinge müssen also gut funktionieren und einfach zu benutzen sein. Löffel, zum Beispiel, sind unglaublich ‘gebrauchstauglich’."

Schritt 1: Den usern über die Schulter schauen

(Verstehen des Nutzungskontextes)

“Schulterblick” beim user

  • Was sind die 10 wichtigsten Aktionen, die user mit meiner Software tun?

(z.B. login, upload files, share files public, via user and via private link, receive files and / or add it to your oc, create folders or files, move files, rename a file, view metadata of files, view specific files online like video, image, document, audio and edit textfiles online.)

  • Formuliere aus diesen Aktionen die Aufgaben für einen Usability-Test

Aufgaben für einen Usabiltiy Test

web tasks uxtest

Usability-Tests

Mögliche Testformen, weniger aufwändige zuerst:
  1. “Flurtest” in der eigenen Organisation

  2. Freunde und Bekannte fragen

  3. Remote: Screensharing mit externen Personen

  4. Platformen: UX Testing Platform (nimmt einem die Suche nach Testpersonen ab)

  5. Testessen: usability-testessen.org (nimmt einem die Suche nach Testpersonen ab)

  6. Profi UX Lab (nimmt einem die Suche nach Testpersonen ab) 💸

  7. uvm…​

Usability-Tests

  • 4-6 Testpersonen reichen

  • Qualitative vs. Quantitative Tests

  • Falls es internen Widerstand gegen Usability-Verbesserungen gibt, lasst diese Personen live beim Test zusehen – wirkt Wunder! (dürfen aber nicht reinquatschen)

Das Wichtigste: Jeder Usability-Test ist besser als kein Test!

Schritt 2: Nachbesprechung

(Nutzungsanforderungen spezifizieren)

Nachbesprechung oder: To-dos definieren

Nachbesprechung der Usability-Tests
  • Aufzeichnungen: Text / Screenrecording

  • Kümmere dich zuerst um das Schlimmste!

Hilfreich: Problemklassifizierung

  1. Kritisch: Der Fehler betrifft kritische Funktionen oder kritische Daten. Es gibt keine Umgehungsmöglichkeit. Beispiel: Fehlgeschlagene Installation, kompletter Ausfall einer Funktion.

  2. Schwerwiegend: Der Fehler betrifft wichtige Funktionen oder wichtige Daten. Es gibt eine Abhilfe, aber sie ist nicht offensichtlich und schwierig. Beispiel: Eine Funktion ist in einem Modul nicht funktionsfähig, aber die Aufgabe ist machbar, wenn 10 komplizierte indirekte Schritte in anderen Modulen befolgt werden.

  3. Geringfügig: Der Fehler betrifft eine geringfügige Funktionalität oder unkritische Daten. Es gibt eine einfache Umgehung. Beispiel: Eine unbedeutende Funktion, die in einem Modul nicht funktioniert, aber dieselbe Aufgabe ist von einem anderen Modul aus leicht machbar.

  4. Trivial: Der Fehler beeinträchtigt weder Funktionalität noch Daten. Es ist nicht einmal eine Umgehung erforderlich. Er hat keine Auswirkungen auf die Produktivität oder Effizienz. Er stellt lediglich eine Unannehmlichkeit dar. Beispiel: Geringfügige Unstimmigkeiten im Layout, Rechtschreib-/Grammatikfehler

Userstory schreiben

  • Immer Userstories schreiben!

  • Schema: Als [Rolle] möchte ich [Funktion] um [Nutzen].

„Als ownCloud user die eine Datei via Link teilen will möchte ich verstehen, wer durch den Link Zugriff erhält, damit ich klarheit habe wer wie die Datei abrufen kann.“

Schritt 3: GitHub Issue + Scribbles

(Konzept)

Gelernte Muster finden

web sharing competitors

Gelernte Muster finden

  • Recherche bevor ich mit den Scribbles anfange:

  • Welche Bedienungsmuster kennen die Benutzer bereits von ähnlichen Anwendungen?

  • Gibt es einen Quasi-Standard?

  • Nur selten muss und sollte man das Rad neu erfinden („Ich hasse Veränderung“)

  • Grundsatz: „Don’t make me think“

Scribbles erstellen

web scribbles overview

Scribbles erstellen

web scribbles single

Scribbles erstellen

Warum Scribbles?
  • Ca. 10x mal schneller als Feindesign

  • Höhere Änderungsbereitschaft von meiner Seite (weil ich ja relativ wenig Zeit investiert habe)

  • Meist völlig ausreichend, um das Konzept im Team oder mit Usern zu diskutieren

Schritt 4: Feindesign

Feindesign

web feindesign overview

Feindesign

web feindesign single

Feindesign

Zusammenfassung

  • ownCloud Web ist von Grund auf als Plattform zur Integration von Apps konzipiert

  • Technik: API driven, VUE

  • Funktioniert mit oCIS und ownCloud 10

  • Barrierefrei

  • Fokus auf Usability mit Hilfe der 4 Schritte: 1) Testing 2) Anforderuungsspezifikation 3) Konzept 4) Feindesign.

Demotime!

oCIS Demo

What you see is what you get!

ownCloud "Single Binary"

 $ wget https://download.owncloud.com/ocis/ocis/1.18.0/ocis-1.18.0-linux-amd64
 $ chmod 755 ./ocis-1.18.0-linux-amd64
 $ OCIS_LOG_LEVEL=debug OCIS_INSECURE=true PROXY_HTTP_ADDR=0.0.0.0:9200 \
   OCIS_URL=https://hostname:9200 ./ocis-1.18.0-linux-amd64 server

Demo ownCloud Web

  • ownCloud Web

Mehr Information

Herzlichen Dank!

240
owncloudlogo