-
Notifications
You must be signed in to change notification settings - Fork 0
/
conclusion.tex
48 lines (41 loc) · 2.87 KB
/
conclusion.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
\chapter{Conclusion}
\label{chap:conclusion}
Wide-area applications that leverage commodity infrastructure are difficult to
keep running in the face of changes in the underlying services. Services can go
offline, services can change their APIs and storage semantics, and services can
fall outside the trust domains of their users.
This thesis presents wide-area software-defined storage as a solution to these
challenges. By giving developers the ability to implement end-to-end
storage semantics as a first-class
storage element (an aggregation driver),
SDS allows applications to tolerate changes in both the underlying
services and trust relationships between users without modification.
In addition, SDS embraces the fact that storage spans multiple organizations,
where each organization has its own data hosting policy. SDS allows each organization to enforce
its policies unilaterally without affecting the end-to-end storage semantics. It
achieves this by allowing users to choose the routes their reads and writes take
through the set of organizations.
This thesis explores the design principles of wide-area software-defined storage, and
distills several design principles for building such systems. To validate the
principles in practice, this thesis presents two real-world
implementations---Gaia and Syndicate. Both systems allow applications to
leverage commodity cloud services in the face of changes to both the service API
and changes to the trust relationships users have with them.
To demonstrate the feasibility of constructing SDS-powered applications,
this thesis presents the design and implementation of three real-world applications:
end-to-end encrypted Webmail, decentralized groupware, and CDN-accelerated
scientific data staging. All three applications leverage a SDS system to ensure
that application-specific end-to-end semantics are applied across each
participating organization, while continuing to preserve each organization's
data policies. In each case, the SDS systems helps the application overcome several hard
problems that have plagued prior application designs:
overcoming the usability challenge of public key management (for email),
removing central points of control (for groupware), and preserving end-to-end
consistency while relying on third-party CDNs (for scientific data-sharing).
This thesis gives microbenchmarks and performance numbers for the SDS prototypes and
sample applications. The overhead of the SDS system is acceptable,
since it does not affect the sample applications' usability. SDS gives
developers many options for controlling the end-to-end performance of reads and
writes, allowing them to produce performant applications despite the overheads.
Gaia, Syndicate, and the sample applications have all been released as
open-source~\cite{blockstack-core}~\cite{syndicate-storage}~\cite{syndicatemail}~\cite{blockstack-todo}~\cite{blockstack-browser}.