SlideShare una empresa de Scribd logo
1 de 60
Descargar para leer sin conexión
!"#$%
   Distributed Systems
      Made Simple
Pascal Felber, Lorenzo Leonini, Etienne Rivière,
         Valerio Schiavoni, José Valerio
      Lua Workshop, 8 September 2011
             Frick, Switzerland

                     !"#$%
About Me
•   2010-now : PhD student at the University of
    Neuchatel, Switzerland (and Lua user since then)

    •   Topic: large-scale distributed systems, cloud
        computing. Daily job:
        1. Invent new protocols for cloud applications
        2. Do experiments, write papers, go to 1

•   2007-2009: Research engineer at INRIA, France

•   BSc and MSc in Computer Engineering at the
    Università degli Studi Roma Tre, Italy
    !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Motivations




!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Motivations

• Developing, testing and tuning distributed
  applications is hard
• In Computer Science research, fixing the
  gap of simplicity between pseudocode
  description and implementation is hard
• Using worldwide testbeds is hard
   !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
What is




  !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
What is




  !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
What is
 • Machines contributed by universities,
   companies,etc.
   •    1098 nodes at 531 sites (02/09/2011)
   •    Shared resources, no privileged access
 • University-quality Internet links
 • High resource contention
 • Faults, churn, packet-loss is the norm
  • Challenging conditions
   !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Daily Job With
        Distributed Systems




!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Daily Job With
             Distributed Systems
 1
code




 1     • Write (testbed specific) code
         • Local tests, in-house cluster, PlanetLab...


     !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Daily Job With
             Distributed Systems
                      2
  1
code             debug




 2     • Debug (in this context, a nightmare)


     !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Daily Job With
             Distributed Systems
                      2
  1
code             debug




 2     • Debug (in this context, a nightmare)


     !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Daily Job With
             Distributed Systems
                                             3
  1                2
code             debug                  deploy




 3     • Deploy, with testbed specific scripts

     !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Daily Job With
             Distributed Systems
                                             3
  1                2
code             debug                  deploy




 3     • Deploy, with testbed specific scripts

     !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Daily Job With
             Distributed Systems
                                                                     4
  1                2                      3
code             debug                  deploy                get logs




 4     • Get logs, with testbed specific scripts
     !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Daily Job With
             Distributed Systems
                                                                     4
  1                2                      3
code             debug                  deploy                get logs




 4     • Get logs, with testbed specific scripts
     !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Daily Job With
             Distributed Systems
                                                                                              5
  1                2                      3                      4
code             debug                  deploy                get logs                    plots




 5     • Produce plots, hopefully
     !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Daily Job With
             Distributed Systems
  1                2                      3                      4                          5
code             debug                  deploy                get logs                    plots




 5     • Produce plots, hopefully
     !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
!"#$% At Glance
code              debug                  deploy                get logs                    plots

 • Supports the development, evaluation,
   testing, and tuning of distributed
   applications on any testbed:
  • In-house cluster, shared testbeds,
          emulated environments
 • Provides an easy-to-use pseudocode-like
   language implemented in Lua
       !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
!"#$% At Glance
code              debug                  deploy                get logs                    plots

 • Supports the development, evaluation,
   testing, and tuning of distributed
   applications on any testbed:
  • In-house cluster, shared testbeds,
          emulated environments
 • Provides an easy-to-use pseudocode-like
   language implemented in Lua
       !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
!"#$% At Glance
code              debug                  deploy                get logs                    plots
                                                                                                    l ot is
                                                                                                gnup riend
                                                                                                  ur f
 • Supports the development, evaluation,                                                        yo


   testing, and tuning of distributed
   applications on any testbed:
  • In-house cluster, shared testbeds,
          emulated environments
 • Provides an easy-to-use pseudocode-like
   language implemented in Lua
       !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
The Big Picture

                                                                                         require”splay.base”
splayd

splayd

splayd

splayd



                                                                                       Splay
                                                                                     Controller
                                                                                     SQL DB



         !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
The Big Picture

splayd                    splayd                                                         require”splay.base”




                      splayd

    splayd




                                                                                       Splay
                                                                                     Controller
                                                                                     SQL DB



         !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
The Big Picture

splayd                            splayd


            require”splay.base”

                         splayd

    splayd




                                                                                       Splay
                                                                                     Controller
                                                                                     SQL DB



         !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Why                                              ?




!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Why                                              ?
• Light & Fast
 • (Very) Close to equivalent code in C




   !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Why                                              ?
• Light & Fast
 • (Very) Close to equivalent code in C
• Concise
 • Allowimplementation focus on ideas more
    than
           developers to
                         details
 • Key for researchers

   !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Why                                              ?
• Light & Fast
 • (Very) Close to equivalent code in C
• Concise
 • Allowimplementation focus on ideas more
    than
           developers to
                         details
 • Key for researchers
• Sandbox thanks to the possibility of easily
  redefine (even built-in) functions
   !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Concise




!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Concise
                  Pseudo code
                  as published
                   on original
                     paper

                      Executable
                      code using
                        SPLAY
                       libraries

!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Sandbox: Motivations
• Experiments should access only their
  own resources
• Required for non-dedicated testbeds
 • In universities, companies
 • Totally available at night/holiday time
• Memory-allocation, filesystem, network
  resources are restricted

     !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Sandboxing LuaSocket
!
!
 • Same API as plain LuaSocket
if sock.send then
    !
    !
         new_sock.send = function(self, data)
         !   local len = #data


 • On-demand sandboxed sockets
!   !    !   if total_sent + len > max_send then
!   !    !   !    l_o:warn("Send restricted (total: "..total_sent..")")
!   !    !   !    return nil, "restricted"


  • Very easy thanks to Lua’s metatable
!   !    !   end
!   !    !   local n, status
!   !    !   if math.random(1000) > udp_drop_ratio then
!   !    !   !    n, status = sock:send(data)
!
!
!
 • Limits chosen by the SPLAYd deployer
    !
    !
    !
         !
         !
         !
             else
             !
             end
                  n = len



 • Both TCP and UDP
!   !    !   if n then
!   !    !   !    total_sent = total_sent + len
!   !    !   end


 • Example: UDP’s socket.send
!   !    !   return n, status
!   !    end
!   end




      !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Sandboxing LuaSocket
!
!
 • Same API as plain LuaSocket
if sock.send then
    !
    !
         new_sock.send = function(self, data)
         !   local len = #data


 • On-demand sandboxed sockets
!   !    !   if total_sent + len > max_send then
!   !    !   !    l_o:warn("Send restricted (total: "..total_sent..")")
!   !    !   !    return nil, "restricted"


  • Very easy thanks to Lua’s metatable
!   !    !   end
!   !    !   local n, status
!   !    !   if math.random(1000) > udp_drop_ratio then
!   !    !   !    n, status = sock:send(data)
!
!
!
 • Limits chosen by the SPLAYd deployer
    !
    !
    !
         !
         !
         !
             else
             !
             end
                  n = len



 • Both TCP and UDP
!   !    !   if n then
!   !    !   !    total_sent = total_sent + len
!   !    !   end


 • Example: UDP’s socket.send
!   !    !   return n, status
!   !    end
!   end




      !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
for _,module in pairs(splay)




 !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
for _,module in pairs(splay)



        luasocket                     events                          io

          crypto                   llenc/benc                       json

            misc                         log                         rpc




 !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
for _,module in pairs(splay)



        luasocket                     events                          io

          crypto                   llenc/benc                       json

            misc                         log                         rpc


                Modules sandboxed to prevent
                 access to sensible resources
 !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
splay.events

       luasocket                     events                          io

         crypto                   llenc/benc                       json

           misc                         log                         rpc


               Modules sandboxed to prevent
                access to sensible resources
!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
splay.events

                                                                                 events




!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
splay.events
• Distributed protocols can use message-
  passing paradigm to communicate
• Nodes react to events               events

 • Local, incoming, outgoing messages
• The core of the Splay runtime
 • splay.socket, splay.io designed to
   provide a non-blocking operational mode
• Based on Lua’s coroutines
    !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
splay.rpc

       luasocket                     events                          io

         crypto                   llenc/benc                       json

           misc                         log                         rpc




!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
splay.rpc



                                                                                               rpc




!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
splay.rpc

• Default mechanism to communicate
  between nodes
• Support for UDP/TCP
• Efficient BitTorrent-like encoding                                                               rpc

• Experimental binary encoding

   !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Life Before !"#$%
                      • Time spent on developing testbed
                            specific protocols
                      • Or fallback on simulations...
                      • The focus should be on ideas
                      • Researchers usually have no time to
                            produce industrial-quality code



!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
public void declareNeighbourInactive(final DHTNode node) {


    // DO NOTHING HERE:




                                            Life Before !"#$%
}




public void addToLeafSet(final DHTNode node) {


    // DO NOTHING


}




/**


* Empty UDP message is 64 bytes, to which we must add 1 bytes for the header,
                                                                                   • Time spent on developing testbed
* 1 bytes for the messageId, 28 bytes (IP,port,Bamboo ID) for message src, 28


* bytes for message dest + bytes for the specific data carried in the
                                                                                     specific protocols
                                                                                   • Or fallback on simulations...
* message. NOTE: the size of informations to ack a message is 10 bytes,


*/


@Override




                                                                                   • The focus should be on ideas
public long calculateMessageBytes(final Message msg) {


    long result = 122; // 64 + 1 + 1 + 28 + 28;




                                                                                   • Researchers usually have no time to
    if (msg.header == MessageType.PING) {


        /* nothing to add */


        return result;




                                                                                     produce industrial-quality code
    }




    if (msg.header == MessageType.PONG) {


        /* some bytes for the informations about which message is being acked */


        result += ACK_INFORMATIONS_SIZE;


        return result;


    }




    if (msg.header == MessageType.BAMBOO_JOIN_LOOKUP_REQUEST


                                       !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
         || msg.header == MessageType.BAMBOO_LOOKUP_REQUEST
responseCallback.onResponseReceived(msg);


       }/*


        * CAN BE COMMENTED AS SEND RETRIAL OF MESSAGES IS OFF else { it is a




                                                 Life Before !"#$%
        * duplicate lookup response, send a PONG to (hopefully) stop source to


        * send us again that message final Message pong = new


        * Message(MessageType.PONG, msg.messageId, this, msg.src); pong.ackedMsg


        * = msg; simulator.send(pong); }


        */




                                                                                            • Time spent on developing testbed
   }


   /* ELSE IF IS SOMETHING NOT A LOOKUP RESPONSE */


   else {




       final Message beingAcked = msg.ackedMsg;                                                               specific protocols
                                                                                            • Or fallback on simulations...
       final ResponseArrivedCallback handler = this.sentMessagesCallbacks


             .remove(beingAcked);




                                                                                            • The focus should be on ideas
       /* if there is a mapping */


       if (handler != null) {


        handler.onResponseReceived(msg);




                                                                                            • Researchers usually have no time to
       }/*


        * else { this may happen in case of a response arrive later than


        * expected... log .info("%%% " + this + " received the response => " +




                                                                                                              produce industrial-quality code
        * msg +


        * " but no handler was expecting it! So, simply send back a PONG to make it stop sending again..n"


        * ); send a PONG to (hopefully) stop source to send us again final


        * Message pong = new Message(MessageType.PONG, msg.messageId, this,



there is more :-(
        * msg.src); pong.ackedMsg = msg; simulator.send(pong); }


        */


   }




 // /* it replied at last, so "reset" the value */


                                           !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
 // this.nodeConsecutiveTimeouts.put((DHTNode) msg.src, 0);
such as epidemic diffusion on Erd¨ s-Renyi random
                                         o
graphs [16] and various types of distribution trees [10]
                      Life With !"#$%
(n-ary trees, parallel trees). As one can note from the fol-
lowing figure, all implementations are extremely concise
                                   7
in terms of lines of code (LOC):

        Chord        (base)           59 (base) + 17 (FT) + 26 (leafset) = 101
        Pastry                                            265
        Scribe                         Pastry                        79
  SplitStream                          Pastry               Scribe           58
   BitTorrent                                                                  420
       Cyclon                        93
    Epidemic              35
        Trees              47


  Although the number of lines is clearly just a rough
      • Lines thepseudocode ~== Lines of executableitcodestill a
indicator of
              of
                   expressiveness of a system, is
   5 Splay   daemons have been continuously running on these hosts for
               !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Live Demo




                     www.splay-project.org

!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
ay
     aw
   e- e
 ak lid
T S


   • Distributed systems raise a number of
       issues related to their evaluation
   • Their implementation, debug, deployment
       and tuning is hard
   •   !"#$% leverages Lua to produce an
       easy to use yet powerful working
       environment to solve these issues


       !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
Backup Slides




!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
The Big Picture




!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
The Big Picture



                                  Splay
                                Controller

                              SQL DB

!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
The Big Picture


                                   REST API

                                  Splay
                                Controller

                              SQL DB

!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
The Big Picture

                              Shell             Web
                                   REST API

                                  Splay
                                Controller

                              SQL DB

!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
The Big Picture

                              Shell             Web
                                   REST API

                                  Splay
                                Controller

                              SQL DB

!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
The Big Picture

                              Shell             Web
                                   REST API

                                  Splay                                           churn
                                Controller
                                                                                    jobs
                              SQL DB                                            blacklist

!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
The Big Picture
                                                                                                     alpha




                                                                               require”splay.base”
                                                                               ...
                              Shell             Web
                                   REST API

                                  Splay                                            churn
                                Controller
                                                                                     jobs
                              SQL DB                                            blacklist

!"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
splayd                The Big Picture
           splayd
                                                                                                                alpha


splayd




                                                                                          require”splay.base”
                                                                                          ...
                                         Shell             Web
                                              REST API

                                             Splay                                            churn
                                           Controller
                                                                                                jobs
                                         SQL DB                                            blacklist

           !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
splayd                The Big Picture
           splayd
                                                                                                                alpha


splayd




                                                                                          require”splay.base”
                                                                                          ...
                                         Shell             Web
                                              REST API

                                             Splay                                            churn
                                           Controller
              log                                                                               jobs
              log                        SQL DB                                            blacklist
              log
           !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
splayd                The Big Picture
           splayd
                                                                                                                alpha


splayd




                                                                                          require”splay.base”
                                                                                          ...
                                         Shell             Web
             ctrl
                                              REST API
             ctrl
             ctrl                            Splay                                            churn
                                           Controller
              log                                                                               jobs
              log                        SQL DB                                            blacklist
              log
           !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
splayd                The Big Picture
           splayd
                                                                                                                alpha


splayd




                                                                                          require”splay.base”
                                                                                          ...
                                         Shell             Web
             ctrl
                                              REST API
             ctrl
             ctrl                            Splay                                            churn
                                           Controller
              log                                                                               jobs
              log                        SQL DB                                            blacklist
              log
           !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
splayd                The Big Picture
           splayd
                                                                                                                alpha


splayd




                                                                                          require”splay.base”
                                                                                          ...
                                         Shell             Web
             ctrl
                                              REST API
             ctrl
             ctrl                            Splay                                            churn
                                           Controller
              log                                                                               jobs
              log                        SQL DB                                            blacklist
              log
           !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland

Más contenido relacionado

Similar a SPLAY: Distributed Systems Made Simple

Reverse engineering
Reverse engineeringReverse engineering
Reverse engineeringSaswat Padhi
 
Workflows in the Virtual Observatory
Workflows in the Virtual ObservatoryWorkflows in the Virtual Observatory
Workflows in the Virtual ObservatoryJose Enrique Ruiz
 
Shannon McFarland OpenStack/Cisco Intro
Shannon McFarland OpenStack/Cisco IntroShannon McFarland OpenStack/Cisco Intro
Shannon McFarland OpenStack/Cisco IntroShannon McFarland
 
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansOpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansMichael Vorburger
 
Blackhat USA 2011 - Cesar Cerrudo - Easy and quick vulnerability hunting in W...
Blackhat USA 2011 - Cesar Cerrudo - Easy and quick vulnerability hunting in W...Blackhat USA 2011 - Cesar Cerrudo - Easy and quick vulnerability hunting in W...
Blackhat USA 2011 - Cesar Cerrudo - Easy and quick vulnerability hunting in W...Michael Boman
 
Rugged DevOps Will help you build ur cloudz
Rugged DevOps Will help you build ur cloudzRugged DevOps Will help you build ur cloudz
Rugged DevOps Will help you build ur cloudzJames Wickett
 
Infinispan, a distributed in-memory key/value data grid and cache
 Infinispan, a distributed in-memory key/value data grid and cache Infinispan, a distributed in-memory key/value data grid and cache
Infinispan, a distributed in-memory key/value data grid and cacheSebastian Andrasoni
 
Implementing Continuous Deployment
Implementing Continuous DeploymentImplementing Continuous Deployment
Implementing Continuous DeploymentAndrew Phillips
 
Implementing continuous deployment JFall 2010
Implementing continuous deployment JFall 2010Implementing continuous deployment JFall 2010
Implementing continuous deployment JFall 2010XebiaLabs
 
Unified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsUnified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsXebiaLabs
 
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
2018 ABRF Tools for improving rigor and reproducibility in bioinformaticsStephen Turner
 
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allEclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allMarc Dutoo
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware
 
Lessons Learned: Novell Open Enterprise Server Upgrades Made Easy
Lessons Learned: Novell Open Enterprise Server Upgrades Made EasyLessons Learned: Novell Open Enterprise Server Upgrades Made Easy
Lessons Learned: Novell Open Enterprise Server Upgrades Made EasyNovell
 
Using Puppet To Manage Splunk
Using Puppet To Manage SplunkUsing Puppet To Manage Splunk
Using Puppet To Manage SplunkSplunk
 
Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deploymentLilia Sfaxi
 

Similar a SPLAY: Distributed Systems Made Simple (20)

Reverse engineering
Reverse engineeringReverse engineering
Reverse engineering
 
Workflows in the Virtual Observatory
Workflows in the Virtual ObservatoryWorkflows in the Virtual Observatory
Workflows in the Virtual Observatory
 
Shannon McFarland OpenStack/Cisco Intro
Shannon McFarland OpenStack/Cisco IntroShannon McFarland OpenStack/Cisco Intro
Shannon McFarland OpenStack/Cisco Intro
 
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansOpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
 
Blackhat USA 2011 - Cesar Cerrudo - Easy and quick vulnerability hunting in W...
Blackhat USA 2011 - Cesar Cerrudo - Easy and quick vulnerability hunting in W...Blackhat USA 2011 - Cesar Cerrudo - Easy and quick vulnerability hunting in W...
Blackhat USA 2011 - Cesar Cerrudo - Easy and quick vulnerability hunting in W...
 
Rugged DevOps Will help you build ur cloudz
Rugged DevOps Will help you build ur cloudzRugged DevOps Will help you build ur cloudz
Rugged DevOps Will help you build ur cloudz
 
Infinispan, a distributed in-memory key/value data grid and cache
 Infinispan, a distributed in-memory key/value data grid and cache Infinispan, a distributed in-memory key/value data grid and cache
Infinispan, a distributed in-memory key/value data grid and cache
 
Implementing Continuous Deployment
Implementing Continuous DeploymentImplementing Continuous Deployment
Implementing Continuous Deployment
 
Implementing continuous deployment JFall 2010
Implementing continuous deployment JFall 2010Implementing continuous deployment JFall 2010
Implementing continuous deployment JFall 2010
 
Ionic in 30
Ionic in 30Ionic in 30
Ionic in 30
 
Unified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsUnified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOps
 
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
 
Cloud iaa s-labs- ubuntu canonical- fossa2010
Cloud iaa s-labs- ubuntu canonical- fossa2010Cloud iaa s-labs- ubuntu canonical- fossa2010
Cloud iaa s-labs- ubuntu canonical- fossa2010
 
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allEclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
 
DevOps tools for winning agility
DevOps tools for winning agilityDevOps tools for winning agility
DevOps tools for winning agility
 
XS Boston 2008 OVF
XS Boston 2008 OVFXS Boston 2008 OVF
XS Boston 2008 OVF
 
Lessons Learned: Novell Open Enterprise Server Upgrades Made Easy
Lessons Learned: Novell Open Enterprise Server Upgrades Made EasyLessons Learned: Novell Open Enterprise Server Upgrades Made Easy
Lessons Learned: Novell Open Enterprise Server Upgrades Made Easy
 
Using Puppet To Manage Splunk
Using Puppet To Manage SplunkUsing Puppet To Manage Splunk
Using Puppet To Manage Splunk
 
Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deployment
 

Más de vschiavoni

Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learning
Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep LearningCombining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learning
Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learningvschiavoni
 
Shielding Federated Learning Systems against Inference Attacks with ARM Trust...
Shielding Federated Learning Systems against Inference Attacks with ARM Trust...Shielding Federated Learning Systems against Inference Attacks with ARM Trust...
Shielding Federated Learning Systems against Inference Attacks with ARM Trust...vschiavoni
 
Labri 2021-invited-talk
Labri 2021-invited-talkLabri 2021-invited-talk
Labri 2021-invited-talkvschiavoni
 
SafeFS: A Modular Architecture for Secure User-Space File Systems (One FUSE t...
SafeFS: A Modular Architecture for Secure User-Space File Systems (One FUSE t...SafeFS: A Modular Architecture for Secure User-Space File Systems (One FUSE t...
SafeFS: A Modular Architecture for Secure User-Space File Systems (One FUSE t...vschiavoni
 
X-Search: Revisiting private web search using Intel SGX
X-Search: Revisiting private web search using Intel SGXX-Search: Revisiting private web search using Intel SGX
X-Search: Revisiting private web search using Intel SGXvschiavoni
 
Actor concurrency for the JVM: a case study
Actor concurrency for the JVM: a case studyActor concurrency for the JVM: a case study
Actor concurrency for the JVM: a case studyvschiavoni
 
FraSCAti: An Open SCA Platform
FraSCAti: An Open SCA PlatformFraSCAti: An Open SCA Platform
FraSCAti: An Open SCA Platformvschiavoni
 
Scorware - Spring Introduction
Scorware - Spring IntroductionScorware - Spring Introduction
Scorware - Spring Introductionvschiavoni
 
BindingFactory
BindingFactoryBindingFactory
BindingFactoryvschiavoni
 
Maven: Convention over Configuration
Maven: Convention over ConfigurationMaven: Convention over Configuration
Maven: Convention over Configurationvschiavoni
 

Más de vschiavoni (13)

Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learning
Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep LearningCombining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learning
Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learning
 
DEBS-2023.pdf
DEBS-2023.pdfDEBS-2023.pdf
DEBS-2023.pdf
 
Shielding Federated Learning Systems against Inference Attacks with ARM Trust...
Shielding Federated Learning Systems against Inference Attacks with ARM Trust...Shielding Federated Learning Systems against Inference Attacks with ARM Trust...
Shielding Federated Learning Systems against Inference Attacks with ARM Trust...
 
Labri 2021-invited-talk
Labri 2021-invited-talkLabri 2021-invited-talk
Labri 2021-invited-talk
 
SafeFS: A Modular Architecture for Secure User-Space File Systems (One FUSE t...
SafeFS: A Modular Architecture for Secure User-Space File Systems (One FUSE t...SafeFS: A Modular Architecture for Secure User-Space File Systems (One FUSE t...
SafeFS: A Modular Architecture for Secure User-Space File Systems (One FUSE t...
 
X-Search: Revisiting private web search using Intel SGX
X-Search: Revisiting private web search using Intel SGXX-Search: Revisiting private web search using Intel SGX
X-Search: Revisiting private web search using Intel SGX
 
Actor concurrency for the JVM: a case study
Actor concurrency for the JVM: a case studyActor concurrency for the JVM: a case study
Actor concurrency for the JVM: a case study
 
DHT and NAT
DHT and NATDHT and NAT
DHT and NAT
 
FraSCAti: An Open SCA Platform
FraSCAti: An Open SCA PlatformFraSCAti: An Open SCA Platform
FraSCAti: An Open SCA Platform
 
Spring Intro
Spring IntroSpring Intro
Spring Intro
 
Scorware - Spring Introduction
Scorware - Spring IntroductionScorware - Spring Introduction
Scorware - Spring Introduction
 
BindingFactory
BindingFactoryBindingFactory
BindingFactory
 
Maven: Convention over Configuration
Maven: Convention over ConfigurationMaven: Convention over Configuration
Maven: Convention over Configuration
 

Último

The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 

Último (20)

The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 

SPLAY: Distributed Systems Made Simple

  • 1. !"#$% Distributed Systems Made Simple Pascal Felber, Lorenzo Leonini, Etienne Rivière, Valerio Schiavoni, José Valerio Lua Workshop, 8 September 2011 Frick, Switzerland !"#$%
  • 2. About Me • 2010-now : PhD student at the University of Neuchatel, Switzerland (and Lua user since then) • Topic: large-scale distributed systems, cloud computing. Daily job: 1. Invent new protocols for cloud applications 2. Do experiments, write papers, go to 1 • 2007-2009: Research engineer at INRIA, France • BSc and MSc in Computer Engineering at the Università degli Studi Roma Tre, Italy !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 3. Motivations !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 4. Motivations • Developing, testing and tuning distributed applications is hard • In Computer Science research, fixing the gap of simplicity between pseudocode description and implementation is hard • Using worldwide testbeds is hard !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 5. What is !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 6. What is !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 7. What is • Machines contributed by universities, companies,etc. • 1098 nodes at 531 sites (02/09/2011) • Shared resources, no privileged access • University-quality Internet links • High resource contention • Faults, churn, packet-loss is the norm • Challenging conditions !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 8. Daily Job With Distributed Systems !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 9. Daily Job With Distributed Systems 1 code 1 • Write (testbed specific) code • Local tests, in-house cluster, PlanetLab... !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 10. Daily Job With Distributed Systems 2 1 code debug 2 • Debug (in this context, a nightmare) !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 11. Daily Job With Distributed Systems 2 1 code debug 2 • Debug (in this context, a nightmare) !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 12. Daily Job With Distributed Systems 3 1 2 code debug deploy 3 • Deploy, with testbed specific scripts !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 13. Daily Job With Distributed Systems 3 1 2 code debug deploy 3 • Deploy, with testbed specific scripts !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 14. Daily Job With Distributed Systems 4 1 2 3 code debug deploy get logs 4 • Get logs, with testbed specific scripts !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 15. Daily Job With Distributed Systems 4 1 2 3 code debug deploy get logs 4 • Get logs, with testbed specific scripts !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 16. Daily Job With Distributed Systems 5 1 2 3 4 code debug deploy get logs plots 5 • Produce plots, hopefully !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 17. Daily Job With Distributed Systems 1 2 3 4 5 code debug deploy get logs plots 5 • Produce plots, hopefully !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 18. !"#$% At Glance code debug deploy get logs plots • Supports the development, evaluation, testing, and tuning of distributed applications on any testbed: • In-house cluster, shared testbeds, emulated environments • Provides an easy-to-use pseudocode-like language implemented in Lua !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 19. !"#$% At Glance code debug deploy get logs plots • Supports the development, evaluation, testing, and tuning of distributed applications on any testbed: • In-house cluster, shared testbeds, emulated environments • Provides an easy-to-use pseudocode-like language implemented in Lua !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 20. !"#$% At Glance code debug deploy get logs plots l ot is gnup riend ur f • Supports the development, evaluation, yo testing, and tuning of distributed applications on any testbed: • In-house cluster, shared testbeds, emulated environments • Provides an easy-to-use pseudocode-like language implemented in Lua !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 21. The Big Picture require”splay.base” splayd splayd splayd splayd Splay Controller SQL DB !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 22. The Big Picture splayd splayd require”splay.base” splayd splayd Splay Controller SQL DB !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 23. The Big Picture splayd splayd require”splay.base” splayd splayd Splay Controller SQL DB !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 24. Why ? !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 25. Why ? • Light & Fast • (Very) Close to equivalent code in C !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 26. Why ? • Light & Fast • (Very) Close to equivalent code in C • Concise • Allowimplementation focus on ideas more than developers to details • Key for researchers !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 27. Why ? • Light & Fast • (Very) Close to equivalent code in C • Concise • Allowimplementation focus on ideas more than developers to details • Key for researchers • Sandbox thanks to the possibility of easily redefine (even built-in) functions !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 28. Concise !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 29. Concise Pseudo code as published on original paper Executable code using SPLAY libraries !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 30. Sandbox: Motivations • Experiments should access only their own resources • Required for non-dedicated testbeds • In universities, companies • Totally available at night/holiday time • Memory-allocation, filesystem, network resources are restricted !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 31. Sandboxing LuaSocket ! ! • Same API as plain LuaSocket if sock.send then ! ! new_sock.send = function(self, data) ! local len = #data • On-demand sandboxed sockets ! ! ! if total_sent + len > max_send then ! ! ! ! l_o:warn("Send restricted (total: "..total_sent..")") ! ! ! ! return nil, "restricted" • Very easy thanks to Lua’s metatable ! ! ! end ! ! ! local n, status ! ! ! if math.random(1000) > udp_drop_ratio then ! ! ! ! n, status = sock:send(data) ! ! ! • Limits chosen by the SPLAYd deployer ! ! ! ! ! ! else ! end n = len • Both TCP and UDP ! ! ! if n then ! ! ! ! total_sent = total_sent + len ! ! ! end • Example: UDP’s socket.send ! ! ! return n, status ! ! end ! end !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 32. Sandboxing LuaSocket ! ! • Same API as plain LuaSocket if sock.send then ! ! new_sock.send = function(self, data) ! local len = #data • On-demand sandboxed sockets ! ! ! if total_sent + len > max_send then ! ! ! ! l_o:warn("Send restricted (total: "..total_sent..")") ! ! ! ! return nil, "restricted" • Very easy thanks to Lua’s metatable ! ! ! end ! ! ! local n, status ! ! ! if math.random(1000) > udp_drop_ratio then ! ! ! ! n, status = sock:send(data) ! ! ! • Limits chosen by the SPLAYd deployer ! ! ! ! ! ! else ! end n = len • Both TCP and UDP ! ! ! if n then ! ! ! ! total_sent = total_sent + len ! ! ! end • Example: UDP’s socket.send ! ! ! return n, status ! ! end ! end !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 33. for _,module in pairs(splay) !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 34. for _,module in pairs(splay) luasocket events io crypto llenc/benc json misc log rpc !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 35. for _,module in pairs(splay) luasocket events io crypto llenc/benc json misc log rpc Modules sandboxed to prevent access to sensible resources !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 36. splay.events luasocket events io crypto llenc/benc json misc log rpc Modules sandboxed to prevent access to sensible resources !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 37. splay.events events !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 38. splay.events • Distributed protocols can use message- passing paradigm to communicate • Nodes react to events events • Local, incoming, outgoing messages • The core of the Splay runtime • splay.socket, splay.io designed to provide a non-blocking operational mode • Based on Lua’s coroutines !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 39. splay.rpc luasocket events io crypto llenc/benc json misc log rpc !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 40. splay.rpc rpc !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 41. splay.rpc • Default mechanism to communicate between nodes • Support for UDP/TCP • Efficient BitTorrent-like encoding rpc • Experimental binary encoding !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 42. Life Before !"#$% • Time spent on developing testbed specific protocols • Or fallback on simulations... • The focus should be on ideas • Researchers usually have no time to produce industrial-quality code !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 43. public void declareNeighbourInactive(final DHTNode node) { // DO NOTHING HERE: Life Before !"#$% } public void addToLeafSet(final DHTNode node) { // DO NOTHING } /** * Empty UDP message is 64 bytes, to which we must add 1 bytes for the header, • Time spent on developing testbed * 1 bytes for the messageId, 28 bytes (IP,port,Bamboo ID) for message src, 28 * bytes for message dest + bytes for the specific data carried in the specific protocols • Or fallback on simulations... * message. NOTE: the size of informations to ack a message is 10 bytes, */ @Override • The focus should be on ideas public long calculateMessageBytes(final Message msg) { long result = 122; // 64 + 1 + 1 + 28 + 28; • Researchers usually have no time to if (msg.header == MessageType.PING) { /* nothing to add */ return result; produce industrial-quality code } if (msg.header == MessageType.PONG) { /* some bytes for the informations about which message is being acked */ result += ACK_INFORMATIONS_SIZE; return result; } if (msg.header == MessageType.BAMBOO_JOIN_LOOKUP_REQUEST !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland || msg.header == MessageType.BAMBOO_LOOKUP_REQUEST
  • 44. responseCallback.onResponseReceived(msg); }/* * CAN BE COMMENTED AS SEND RETRIAL OF MESSAGES IS OFF else { it is a Life Before !"#$% * duplicate lookup response, send a PONG to (hopefully) stop source to * send us again that message final Message pong = new * Message(MessageType.PONG, msg.messageId, this, msg.src); pong.ackedMsg * = msg; simulator.send(pong); } */ • Time spent on developing testbed } /* ELSE IF IS SOMETHING NOT A LOOKUP RESPONSE */ else { final Message beingAcked = msg.ackedMsg; specific protocols • Or fallback on simulations... final ResponseArrivedCallback handler = this.sentMessagesCallbacks .remove(beingAcked); • The focus should be on ideas /* if there is a mapping */ if (handler != null) { handler.onResponseReceived(msg); • Researchers usually have no time to }/* * else { this may happen in case of a response arrive later than * expected... log .info("%%% " + this + " received the response => " + produce industrial-quality code * msg + * " but no handler was expecting it! So, simply send back a PONG to make it stop sending again..n" * ); send a PONG to (hopefully) stop source to send us again final * Message pong = new Message(MessageType.PONG, msg.messageId, this, there is more :-( * msg.src); pong.ackedMsg = msg; simulator.send(pong); } */ } // /* it replied at last, so "reset" the value */ !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland // this.nodeConsecutiveTimeouts.put((DHTNode) msg.src, 0);
  • 45. such as epidemic diffusion on Erd¨ s-Renyi random o graphs [16] and various types of distribution trees [10] Life With !"#$% (n-ary trees, parallel trees). As one can note from the fol- lowing figure, all implementations are extremely concise 7 in terms of lines of code (LOC): Chord (base) 59 (base) + 17 (FT) + 26 (leafset) = 101 Pastry 265 Scribe Pastry 79 SplitStream Pastry Scribe 58 BitTorrent 420 Cyclon 93 Epidemic 35 Trees 47 Although the number of lines is clearly just a rough • Lines thepseudocode ~== Lines of executableitcodestill a indicator of of expressiveness of a system, is 5 Splay daemons have been continuously running on these hosts for !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 46. Live Demo www.splay-project.org !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 47. ay aw e- e ak lid T S • Distributed systems raise a number of issues related to their evaluation • Their implementation, debug, deployment and tuning is hard • !"#$% leverages Lua to produce an easy to use yet powerful working environment to solve these issues !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 48. Backup Slides !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 49. The Big Picture !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 50. The Big Picture Splay Controller SQL DB !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 51. The Big Picture REST API Splay Controller SQL DB !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 52. The Big Picture Shell Web REST API Splay Controller SQL DB !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 53. The Big Picture Shell Web REST API Splay Controller SQL DB !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 54. The Big Picture Shell Web REST API Splay churn Controller jobs SQL DB blacklist !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 55. The Big Picture alpha require”splay.base” ... Shell Web REST API Splay churn Controller jobs SQL DB blacklist !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 56. splayd The Big Picture splayd alpha splayd require”splay.base” ... Shell Web REST API Splay churn Controller jobs SQL DB blacklist !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 57. splayd The Big Picture splayd alpha splayd require”splay.base” ... Shell Web REST API Splay churn Controller log jobs log SQL DB blacklist log !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 58. splayd The Big Picture splayd alpha splayd require”splay.base” ... Shell Web ctrl REST API ctrl ctrl Splay churn Controller log jobs log SQL DB blacklist log !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 59. splayd The Big Picture splayd alpha splayd require”splay.base” ... Shell Web ctrl REST API ctrl ctrl Splay churn Controller log jobs log SQL DB blacklist log !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland
  • 60. splayd The Big Picture splayd alpha splayd require”splay.base” ... Shell Web ctrl REST API ctrl ctrl Splay churn Controller log jobs log SQL DB blacklist log !"#$% Distributed Systems Made Simple - V. Schiavoni - Lua Workshop 2011, Frick, Switzerland