project fifo introduction

Post on 21-May-2015

1.344 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

In introduction to Project FiFo

TRANSCRIPT

Background

‣ SmartOS is great

‣ zones‣ dtrace‣ zfs‣ crossbow‣ kvm

Background

‣ ... not so great

‣ single user‣ one system‣ root access‣ direct access

‣ SmartOS is great

‣ zones‣ dtrace‣ zfs‣ crossbow‣ kvm

SAD!

FiFo to the Rescue!

Seems like there is no solution...

FiFo to the Rescue!

... Oh! You still want one?

FiFo to the Rescue!

Guess you have to find one yourself!

Users

‣ central management‣ SSH keys‣ permissions (treeish)‣ roles/groups

Virtual machines

‣ create / edit / destroy‣ noVNC / Console‣ SSH access (for zones)‣ snapshots‣ some metrics

Hypervisors

‣ pick the best‣ metrics‣ warnings

Cool Stuff‣ distributed dtrace‣ and visualization‣ dataset creation‣ distributed (riak_core ;)‣ CRDT‘s‣ 100% open source and free!

HAPPY!

Things learned...

build modular‣ ‘small‘ applications that work together‣ specializing codebase‣ well defined interfaces‣ makes things reusable‣ abstract in libraries

the mDNS trick

‣ auto discover services‣ failure auto decays‣ auto recovery‣ kind of extending OTP over the network

don‘t model for representation

‣ JSON is nice for an API‣ BUT! don‘t structure your data to match you representation‣ nice at the borders‣ a mess in the center

Erlang - the good

‣ fault tolerance / ‘self healing‘‣ distributed architecture‣ yadda yadda yadda - you know it!

mindset and culture

Erlang - the bad

‣ unix processes (ports)‣ working as part of (SFM)‣ unix pipes‣ missing libraries‣ sloppy versioning of libs

DEEP DIVE

snarl‣ right management‣ users‣ groups / roles‣ organizations‣ stand alone / totally reusable!‣ client library

Distributed over riak_core

Distributed over riak_core

LWW RegisterLWW Register----------------------------------------------------

--namename----------------------------------------------------

--hashhash----------------------------------------------------

--active_orgactive_org======================

======ORSets (GC’ed)ORSets (GC’ed)

------------------------------------------------------

permissionspermissions----------------------------------------------------

--groupsgroups----------------------------------------------------

--organizationsorganizations======================

======StateboxStatebox

------------------------------------------------------

metadatametadata

LWW RegisterLWW Register----------------------------------------------------

--namename----------------------------------------------------

--hashhash----------------------------------------------------

--active_orgactive_org======================

======ORSets (GC’ed)ORSets (GC’ed)

------------------------------------------------------

permissionspermissions----------------------------------------------------

--groupsgroups----------------------------------------------------

--organizationsorganizations======================

======StateboxStatebox

------------------------------------------------------

metadatametadata

User

Distributed over riak_core

LWW RegisterLWW Register--------------------------------------------

----------namename--------------------------------------------

----------hashhash--------------------------------------------

----------active_orgactive_org==================

==========ORSets (GC’ed)ORSets (GC’ed)--------------------------------------------

----------permissionspermissions--------------------------------------------

----------groupsgroups--------------------------------------------

----------organizationsorganizations==================

==========StateboxStatebox

------------------------------------------------------

metadatametadata

LWW RegisterLWW Register--------------------------------------------

----------namename--------------------------------------------

----------hashhash--------------------------------------------

----------active_orgactive_org==================

==========ORSets (GC’ed)ORSets (GC’ed)--------------------------------------------

----------permissionspermissions--------------------------------------------

----------groupsgroups--------------------------------------------

----------organizationsorganizations==================

==========StateboxStatebox

------------------------------------------------------

metadatametadata

User

Ran

ch

TC

P S

erv

er

/ m

DN

S

Ran

ch

TC

P S

erv

er

/ m

DN

S

bro

ad

cast

bro

ad

cast

Ran

ch

TC

P S

erv

er

/ m

DN

S

Ran

ch

TC

P S

erv

er

/ m

DN

S

bro

ad

cast

bro

ad

cast

poole

r +

gen

_tcp

/ m

dn

s lis

ten

er

poole

r +

gen

_tcp

/ m

dn

s lis

ten

er

poole

r +

gen

_tcp

/ m

dn

s lis

ten

er

poole

r +

gen

_tcp

/ m

dn

s lis

ten

er

top related