A Dropbox-like Personal Cloud for OpenStack Swift Pedro Garca Lpez - - PowerPoint PPT Presentation

a dropbox like personal cloud for openstack swift
SMART_READER_LITE
LIVE PREVIEW

A Dropbox-like Personal Cloud for OpenStack Swift Pedro Garca Lpez - - PowerPoint PPT Presentation

A Dropbox-like Personal Cloud for OpenStack Swift Pedro Garca Lpez OpenStack Summit Adrin Moreno Martnez May 2014 - Atlanta Cristian Cotes Gonzlez CloudSpaces project Open Service Platform for the Next Generation of Open


slide-1
SLIDE 1

A Dropbox-like Personal Cloud for OpenStack Swift

Pedro García López Adrián Moreno Martínez Cristian Cotes González OpenStack Summit May 2014 - Atlanta

slide-2
SLIDE 2

CloudSpaces project

  • Open Service Platform for the Next Generation
  • f Open Personal Clouds:

http://cloudspaces.eu

  • Objectives:
  • Interoperability and privacy
  • Partners:
  • URV, Eurecom, EPFL, eyeOS (Web Desktop), TISSAT (cloud

provider), NEC.

slide-3
SLIDE 3

Personal Cloud

We understand it as…

  • Storage
  • Synchronization
  • Sharing
slide-4
SLIDE 4

Our motivations

  • Not a cloud open-source solution available

 StackSync and OpenStack

  • Users lack control of their data

Privacy, Client-side encryption, secure sharing…

  • Vendor lock-in

Interoperability

slide-5
SLIDE 5

Big picture

slide-6
SLIDE 6

First stage

  • Metadata separated from data

→ StackSync Server → OpenStack Swift

Data flow

Metadata DB

Metadata flow

Desktop client OpenStack Swift StackSync Server

slide-7
SLIDE 7

StackSync Server StackSync Server

Second stage

  • MOM (RabbitMQ)

→ push notifications

  • Elastic sync protocol

Data flow

Metadata DB

Metadata flow (Push)

Desktop client OpenStack Swift StackSync Server RabbitMQ

slide-8
SLIDE 8

Current stage

  • API as a Swift’s proxy

module

  • Website
  • Android app

Data flow

Metadata DB

Metadata flow (push)

Desktop client OpenStack Swift RabbitMQ

StackSync API

Mobile client

Metadata flow

StackSync Server StackSync Server StackSync Server

slide-9
SLIDE 9

Lifecycle and architecture

slide-10
SLIDE 10

Lifecycle

Client 1 OpenStack Swift RabbitMQ StackSync Server StackSync Server StackSync Server Client 2 Client 3

slide-11
SLIDE 11

Data flow

Metadata DB

Metadata flow (push)

Desktop client OpenStack Swift RabbitMQ

StackSync API

Mobile client

Metadata flow

StackSync Server

Desktop client

slide-12
SLIDE 12

Tasks

  • File system watcher
  • Chunking, compression, and encryption
slide-13
SLIDE 13

Features

  • File versioning
  • File sharing
  • OS integration
  • Overlay icons
  • Notifications
slide-14
SLIDE 14

Data flow

Metadata DB

Metadata flow (push)

Desktop client OpenStack Swift RabbitMQ

StackSync API

Mobile client

Metadata flow

StackSync Server

StackSync server

slide-15
SLIDE 15

Operations

  • getAccount
  • getChanges
  • commit

{ "is_folder":false, "mimetype":"application/pdf", "status":"NEW", "parent_file_id":73990274, "file_id":-534824681, "path":"/documents/", "filename":"StackSync_Guide.pdf", "checksum":-2678858962222278590, "user":"John Doe", "client_modified":"2013-03-08 10:36:41.997", "size":775412, "version":1, "server_modified":"2013-03-08 10:36:41.997" }

slide-16
SLIDE 16

Syncing conflicts

  • Two users modify the same file at the same time
  • Whichever version is processed first wins
  • The loser creates a conflicted copy of the file with his

changes

StackSync Server User 1 User 2

slide-17
SLIDE 17

Workspace

  • Represents the relation between files and users
  • Every user has its own workspace
  • Every shared folder has its workspace
  • A workspace maps into a Swift container

Workspace 2 Shared workspace Workspace 1 Container 2 Shared container Container 1

OpenStack Swift User 1 User 2

slide-18
SLIDE 18

Encryption settings

Plain Server-side encryption Client-side encryption

slide-19
SLIDE 19

Swift mappings

StackSync OpenStack Swift user user workspace installation tenant container admin tenant admin file N chunks

slide-20
SLIDE 20

Sharing process

  • 1. Send share proposal
  • 2. Notify the addressee
  • 3. Proposal gets accepted
  • 4. Create container and

set up ACL

X-Container-Read and X-Container-Write

User 1 User 2 StackSync Server OpenStack Swift

slide-21
SLIDE 21

Data flow

Metadata DB

Metadata flow (push)

Desktop client OpenStack Swift RabbitMQ

StackSync API

Mobile client

Metadata flow

StackSync Server

RabbitMQ

slide-22
SLIDE 22

RabbitMQ

  • Communication between clients and server
  • Push notifications
  • Load-balancing
  • Multicast messages per workspace
slide-23
SLIDE 23

StackSync Server StackSync Server StackSync Server

slide-24
SLIDE 24

Data flow

Metadata DB

Metadata flow (push)

Desktop client OpenStack Swift RabbitMQ

StackSync API

Mobile client

Metadata flow

StackSync Server

StackSync API

slide-25
SLIDE 25

StackSync API

  • Located in the proxy’s pipeline
  • Used by website & mobile clients
  • Communicates with StackSync server to get

metadata and authorization

  • Activates when the X-StackSync-API

header is set

slide-26
SLIDE 26

StackSync API Auth

  • Module located before the API
  • OAuth 1.0a implementation
  • Sets the user information in the wsgi

environment for the API

slide-27
SLIDE 27

GET /api/file/4688390

Header: X-StackSync-API: v1

slide-28
SLIDE 28

Performance

slide-29
SLIDE 29

Traffic overhead

slide-30
SLIDE 30

Push vs pull

slide-31
SLIDE 31

Server elasticity

Time (minutes) Number of instances Number of requests

slide-32
SLIDE 32

Using StackSync

slide-33
SLIDE 33

Deployment scenarios

OpenStack Swift StackSync Server OpenStack Swift OpenStack Swift

Private Hybrid Public

On premises On cloud provider StackSync Server StackSync Server

slide-34
SLIDE 34

Current deployments

  • Universitat Rovira i Virgili
  • Tissat (Data center)
  • Rediris (Spanish university network)
slide-35
SLIDE 35

Community

  • Available for:
  • Documentation available at stacksync.org
  • Easy to deploy for swifters
slide-36
SLIDE 36

Conclusions

  • StackSync is a ready-to-use Personal Cloud

for OpenStack Swift

  • What’s next
  • Advanced privacy features
  • Interoperability
  • iOS and OS X clients
slide-37
SLIDE 37

Thanks for your attention!

github.com/stacksync stacksync.org