SlideShare a Scribd company logo
1 of 20
Architetture e linguaggi per
Runtime Software Adaptation:
Computational REST ed Erlang

            Alessandro Sivieri

    Dipartimento di Elettronica e Informazione
              Politecnico di Milano


            20 Dicembre 2010
Scenario
              Architetture per sistemi adattabili
               Linguaggi per sistemi adattabili
               Computational REST ed Erlang
                                    Conclusioni


Sommario
  1   Scenario
  2   Architetture per sistemi adattabili
         Panoramica
         REpresentational State Transfer
         Computational REST
  3   Linguaggi per sistemi adattabili
         Panoramica
         Erlang
  4   Computational REST ed Erlang
         Motivazioni del progetto
         Struttura del framework
         Demo
         Sicurezza
  5   Conclusioni
                             Alessandro Sivieri     Computational REST ed Erlang   2/17
Scenario
              Architetture per sistemi adattabili
               Linguaggi per sistemi adattabili
               Computational REST ed Erlang
                                    Conclusioni


Lo scenario



  Requisiti delle applicazioni odierne:
      aggiornamento delle funzionalità senza interrompere i
      servizi offerti
      scalabilità
      dati in movimento tra dispositivi




                             Alessandro Sivieri     Computational REST ed Erlang   3/17
Scenario
              Architetture per sistemi adattabili   Panoramica
               Linguaggi per sistemi adattabili     REpresentational State Transfer
               Computational REST ed Erlang         Computational REST
                                    Conclusioni


Panoramica delle architetture


  Alcune delle architetture esistenti in grado di supportare
  modifiche a runtime [R.N. Taylor et al., 2008]:
      Publish-subscribe
      Map-reduce
      Service-Oriented Architectures
      Peer-to-peer
      REST
      Computational REST



                             Alessandro Sivieri     Computational REST ed Erlang      4/17
Scenario
             Architetture per sistemi adattabili   Panoramica
              Linguaggi per sistemi adattabili     REpresentational State Transfer
              Computational REST ed Erlang         Computational REST
                                   Conclusioni


Dal contenuto ai dati



  REpresentational State Transfer: indipendenza dei componenti
  e scalabilità:
      comunicazione stateless
      caching
      interfacce generiche di comunicazione
      (opzionale) code-on-demand




                            Alessandro Sivieri     Computational REST ed Erlang      5/17
Scenario
             Architetture per sistemi adattabili   Panoramica
              Linguaggi per sistemi adattabili     REpresentational State Transfer
              Computational REST ed Erlang         Computational REST
                                   Conclusioni


Dai dati alle computazioni



  Computational REST [J.R. Erenkrantz, 2009]:
      potenziare REST: non è sufficiente lo scambio di dati,
      questi devono essere interpretati correttamente
      scambiare computazioni: i contenuti diventano “effetti
      collaterali” di queste
      mantenere le linee guida per mantenere la scalabilità




                            Alessandro Sivieri     Computational REST ed Erlang      6/17
Scenario
               Architetture per sistemi adattabili   Panoramica
                Linguaggi per sistemi adattabili     REpresentational State Transfer
                Computational REST ed Erlang         Computational REST
                                     Conclusioni


Computational REST
Meccanismi




   I peer sulla Rete scambiano continuazioni o, in alternativa,
   chiusure:
       una continuazione è uno snapshot dello stato di
       esecuzione di una computazione, che può essere
       interrotta e ripresa in un secondo momento
       una chiusura è una funzione che contiene le variabili libere
       presenti nell’ambiente in cui essa è definita, e che restano
       accessibili per tutta la sua durata




                              Alessandro Sivieri     Computational REST ed Erlang      7/17
Scenario
               Architetture per sistemi adattabili   Panoramica
                Linguaggi per sistemi adattabili     REpresentational State Transfer
                Computational REST ed Erlang         Computational REST
                                     Conclusioni


Computational REST
Operazioni




   Solo due operazioni di base: spawn e remote:
        spawn installa un nuovo servizio e lo rende disponibile
        remote installa un nuovo servizio e lo esegue solo una
        volta
   CREST mantiene la compatibilità con il Web di oggi.




                              Alessandro Sivieri     Computational REST ed Erlang      8/17
Scenario
              Architetture per sistemi adattabili
                                                    Panoramica
               Linguaggi per sistemi adattabili
                                                    Erlang
               Computational REST ed Erlang
                                    Conclusioni


Panoramica dei linguaggi



  Alcuni dei linguaggi esistenti in grado di supportare modifiche a
  runtime:
      Approccio orientato agli oggetti: Java e C#
      Approccio funzionale: Scala, Erlang, Dynamic ML
      Dynamic Aspect-Oriented Programming




                             Alessandro Sivieri     Computational REST ed Erlang   9/17
Scenario
             Architetture per sistemi adattabili
                                                   Panoramica
              Linguaggi per sistemi adattabili
                                                   Erlang
              Computational REST ed Erlang
                                   Conclusioni


Erlang



  Linguaggio funzionale orientato alla concorrenza
      Distribuzione dei processi
      Fault tolerance
      Caricamento dinamico del codice
      Open Telecom Platform




                            Alessandro Sivieri     Computational REST ed Erlang   10/17
Scenario
                                                   Motivazioni del progetto
             Architetture per sistemi adattabili
                                                   Struttura del framework
              Linguaggi per sistemi adattabili
                                                   Demo
              Computational REST ed Erlang
                                                   Sicurezza
                                   Conclusioni


Da Scheme ad Erlang



  CREST-Scheme
   + supporto alle continuazioni
   + sandbox e security manager della JVM
   − core standard, librerie esterne per la maggior parte delle
     funzionalità




                            Alessandro Sivieri     Computational REST ed Erlang   11/17
Scenario
                                                   Motivazioni del progetto
             Architetture per sistemi adattabili
                                                   Struttura del framework
              Linguaggi per sistemi adattabili
                                                   Demo
              Computational REST ed Erlang
                                                   Sicurezza
                                   Conclusioni


Da Scheme ad Erlang



  CREST-Erlang
   + supporto ai processi leggeri (con mailbox)
   + caricamento dinamico di moduli
   − mancato supporto alle continuazioni
   − problemi di sicurezza




                            Alessandro Sivieri     Computational REST ed Erlang   11/17
Scenario
                                                       Motivazioni del progetto
                 Architetture per sistemi adattabili
                                                       Struttura del framework
                  Linguaggi per sistemi adattabili
                                                       Demo
                  Computational REST ed Erlang
                                                       Sicurezza
                                       Conclusioni


CREST-Erlang
I vincoli CREST nel nuovo framework




        Invio delle chiusure tra nodi, utilizzando HTTP POST
        Supporto allo stato interno di una computazione
        Composizione di servizi




                                Alessandro Sivieri     Computational REST ed Erlang   12/17
Scenario
                                                        Motivazioni del progetto
                  Architetture per sistemi adattabili
                                                        Struttura del framework
                   Linguaggi per sistemi adattabili
                                                        Demo
                   Computational REST ed Erlang
                                                        Sicurezza
                                        Conclusioni


CREST-Erlang
Struttura del framework




                             Incapsulamento del protocollo


                                 Alessandro Sivieri     Computational REST ed Erlang   13/17
Scenario
                                                        Motivazioni del progetto
                  Architetture per sistemi adattabili
                                                        Struttura del framework
                   Linguaggi per sistemi adattabili
                                                        Demo
                   Computational REST ed Erlang
                                                        Sicurezza
                                        Conclusioni


CREST-Erlang
Struttura del framework




                                    Albero di supervisione


                                 Alessandro Sivieri     Computational REST ed Erlang   13/17
Scenario
                                                       Motivazioni del progetto
                 Architetture per sistemi adattabili
                                                       Struttura del framework
                  Linguaggi per sistemi adattabili
                                                       Demo
                  Computational REST ed Erlang
                                                       Sicurezza
                                       Conclusioni


CREST-Erlang
Demo delle funzionalità del framework




                                     Scenario della demo


                                Alessandro Sivieri     Computational REST ed Erlang   14/17
Scenario
                                                    Motivazioni del progetto
              Architetture per sistemi adattabili
                                                    Struttura del framework
               Linguaggi per sistemi adattabili
                                                    Demo
               Computational REST ed Erlang
                                                    Sicurezza
                                    Conclusioni


Il problema della sicurezza



  Sicurezza del codice rispetto all’host in cui viene eseguito:
      HTTPS con mutua autenticazione per spawn e remote
  Sicurezza dell’host rispetto al codice da eseguire:
      analisi di progetti esistenti per sandboxing e bytecode
      inspection




                             Alessandro Sivieri     Computational REST ed Erlang   15/17
Scenario
               Architetture per sistemi adattabili
                Linguaggi per sistemi adattabili
                Computational REST ed Erlang
                                     Conclusioni


Conclusioni
Erlang




     + Funzionalità per la distribuzione dei processi e del carico di
       lavoro
     + Caricamento dinamico del codice
     − Scarsa attenzione alla sicurezza
     − Limitazioni del meccanismo di hotswap




                              Alessandro Sivieri     Computational REST ed Erlang   16/17
Scenario
               Architetture per sistemi adattabili
                Linguaggi per sistemi adattabili
                Computational REST ed Erlang
                                     Conclusioni


Conclusioni
Computational REST




     + Gestione dei cambiamenti del Web di oggi
     + Supporto alla scalabilità ed al dinamismo
     − Utilizzo del protocollo HTTP per trasmettere codice
     − I problemi di sicurezza possono essere importanti




                              Alessandro Sivieri     Computational REST ed Erlang   16/17
Appendice     Bibliografia




Bibliografia
     J. Armstrong.
     Programming Erlang: Software for a Concurrent World.
     Pragmatic Bookshelf, 2007.
     J.R. Erenkrantz.
     Computational REST: a new model for decentralized,
     Internet-scale applications.
     California State University at Long Beach, 2009.
     R.N. Taylor, P. Oreizy and N. Medvidovic.
     Runtime software adaptation: framework, approaches, and styles.
     ICSE Companion 2008, 899–910, 2008.
     J. Zachary.
     Protecting mobile code in the world.
     Internet Computing, IEEE, 7(2):78–82, 2003.

                      Alessandro Sivieri   Computational REST ed Erlang   17/17

More Related Content

Similar to Tesi magistrale

JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)
jampslide
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Rails
guestfe3e15
 

Similar to Tesi magistrale (20)

Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
 
Semi-Active Replication Protocol
Semi-Active Replication ProtocolSemi-Active Replication Protocol
Semi-Active Replication Protocol
 
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
 
Database Data Aggregator
Database Data AggregatorDatabase Data Aggregator
Database Data Aggregator
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
 
Cesvip 20110127
Cesvip 20110127Cesvip 20110127
Cesvip 20110127
 
Cac Es3 2009
Cac Es3 2009Cac Es3 2009
Cac Es3 2009
 
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successoWSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
 
Evoluzione dei Sistemi Embedded: Verso architetture multi-core
Evoluzione dei Sistemi Embedded: Verso architetture multi-coreEvoluzione dei Sistemi Embedded: Verso architetture multi-core
Evoluzione dei Sistemi Embedded: Verso architetture multi-core
 
Low Level Software Security
Low Level Software SecurityLow Level Software Security
Low Level Software Security
 
3rd 3DDRESD: BSS
3rd 3DDRESD: BSS3rd 3DDRESD: BSS
3rd 3DDRESD: BSS
 
Analysis and Characterization of Devices and Protocol Stacks for the Internet...
Analysis and Characterization of Devices and Protocol Stacks for the Internet...Analysis and Characterization of Devices and Protocol Stacks for the Internet...
Analysis and Characterization of Devices and Protocol Stacks for the Internet...
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality Code
 
Cqrs and IoT: a match made in heaven
Cqrs and IoT: a match made in heavenCqrs and IoT: a match made in heaven
Cqrs and IoT: a match made in heaven
 
Java al servizio della data science - Java developers' meeting
Java al servizio della data science - Java developers' meetingJava al servizio della data science - Java developers' meeting
Java al servizio della data science - Java developers' meeting
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)
 
Cassandra DB - Linux Day 2019 - Catania - Italy
Cassandra DB - Linux Day 2019 - Catania - ItalyCassandra DB - Linux Day 2019 - Catania - Italy
Cassandra DB - Linux Day 2019 - Catania - Italy
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Rails
 
Software Re Engineering
Software Re EngineeringSoftware Re Engineering
Software Re Engineering
 

More from Alessandro Sivieri (7)

Sesena 2012
Sesena 2012Sesena 2012
Sesena 2012
 
LaTeX @ LinuxDay 2011
LaTeX @ LinuxDay 2011LaTeX @ LinuxDay 2011
LaTeX @ LinuxDay 2011
 
KDE @ Corsi Linux 2011
KDE @ Corsi Linux 2011KDE @ Corsi Linux 2011
KDE @ Corsi Linux 2011
 
LaTeX: gli editor
LaTeX: gli editorLaTeX: gli editor
LaTeX: gli editor
 
Computational REST Meets Erlang
Computational REST Meets ErlangComputational REST Meets Erlang
Computational REST Meets Erlang
 
Conferenza Embedded - Arduino
Conferenza Embedded - ArduinoConferenza Embedded - Arduino
Conferenza Embedded - Arduino
 
Conferenza LyX - Introduzione a LaTeX
Conferenza LyX - Introduzione a LaTeXConferenza LyX - Introduzione a LaTeX
Conferenza LyX - Introduzione a LaTeX
 

Tesi magistrale

  • 1. Architetture e linguaggi per Runtime Software Adaptation: Computational REST ed Erlang Alessandro Sivieri Dipartimento di Elettronica e Informazione Politecnico di Milano 20 Dicembre 2010
  • 2. Scenario Architetture per sistemi adattabili Linguaggi per sistemi adattabili Computational REST ed Erlang Conclusioni Sommario 1 Scenario 2 Architetture per sistemi adattabili Panoramica REpresentational State Transfer Computational REST 3 Linguaggi per sistemi adattabili Panoramica Erlang 4 Computational REST ed Erlang Motivazioni del progetto Struttura del framework Demo Sicurezza 5 Conclusioni Alessandro Sivieri Computational REST ed Erlang 2/17
  • 3. Scenario Architetture per sistemi adattabili Linguaggi per sistemi adattabili Computational REST ed Erlang Conclusioni Lo scenario Requisiti delle applicazioni odierne: aggiornamento delle funzionalità senza interrompere i servizi offerti scalabilità dati in movimento tra dispositivi Alessandro Sivieri Computational REST ed Erlang 3/17
  • 4. Scenario Architetture per sistemi adattabili Panoramica Linguaggi per sistemi adattabili REpresentational State Transfer Computational REST ed Erlang Computational REST Conclusioni Panoramica delle architetture Alcune delle architetture esistenti in grado di supportare modifiche a runtime [R.N. Taylor et al., 2008]: Publish-subscribe Map-reduce Service-Oriented Architectures Peer-to-peer REST Computational REST Alessandro Sivieri Computational REST ed Erlang 4/17
  • 5. Scenario Architetture per sistemi adattabili Panoramica Linguaggi per sistemi adattabili REpresentational State Transfer Computational REST ed Erlang Computational REST Conclusioni Dal contenuto ai dati REpresentational State Transfer: indipendenza dei componenti e scalabilità: comunicazione stateless caching interfacce generiche di comunicazione (opzionale) code-on-demand Alessandro Sivieri Computational REST ed Erlang 5/17
  • 6. Scenario Architetture per sistemi adattabili Panoramica Linguaggi per sistemi adattabili REpresentational State Transfer Computational REST ed Erlang Computational REST Conclusioni Dai dati alle computazioni Computational REST [J.R. Erenkrantz, 2009]: potenziare REST: non è sufficiente lo scambio di dati, questi devono essere interpretati correttamente scambiare computazioni: i contenuti diventano “effetti collaterali” di queste mantenere le linee guida per mantenere la scalabilità Alessandro Sivieri Computational REST ed Erlang 6/17
  • 7. Scenario Architetture per sistemi adattabili Panoramica Linguaggi per sistemi adattabili REpresentational State Transfer Computational REST ed Erlang Computational REST Conclusioni Computational REST Meccanismi I peer sulla Rete scambiano continuazioni o, in alternativa, chiusure: una continuazione è uno snapshot dello stato di esecuzione di una computazione, che può essere interrotta e ripresa in un secondo momento una chiusura è una funzione che contiene le variabili libere presenti nell’ambiente in cui essa è definita, e che restano accessibili per tutta la sua durata Alessandro Sivieri Computational REST ed Erlang 7/17
  • 8. Scenario Architetture per sistemi adattabili Panoramica Linguaggi per sistemi adattabili REpresentational State Transfer Computational REST ed Erlang Computational REST Conclusioni Computational REST Operazioni Solo due operazioni di base: spawn e remote: spawn installa un nuovo servizio e lo rende disponibile remote installa un nuovo servizio e lo esegue solo una volta CREST mantiene la compatibilità con il Web di oggi. Alessandro Sivieri Computational REST ed Erlang 8/17
  • 9. Scenario Architetture per sistemi adattabili Panoramica Linguaggi per sistemi adattabili Erlang Computational REST ed Erlang Conclusioni Panoramica dei linguaggi Alcuni dei linguaggi esistenti in grado di supportare modifiche a runtime: Approccio orientato agli oggetti: Java e C# Approccio funzionale: Scala, Erlang, Dynamic ML Dynamic Aspect-Oriented Programming Alessandro Sivieri Computational REST ed Erlang 9/17
  • 10. Scenario Architetture per sistemi adattabili Panoramica Linguaggi per sistemi adattabili Erlang Computational REST ed Erlang Conclusioni Erlang Linguaggio funzionale orientato alla concorrenza Distribuzione dei processi Fault tolerance Caricamento dinamico del codice Open Telecom Platform Alessandro Sivieri Computational REST ed Erlang 10/17
  • 11. Scenario Motivazioni del progetto Architetture per sistemi adattabili Struttura del framework Linguaggi per sistemi adattabili Demo Computational REST ed Erlang Sicurezza Conclusioni Da Scheme ad Erlang CREST-Scheme + supporto alle continuazioni + sandbox e security manager della JVM − core standard, librerie esterne per la maggior parte delle funzionalità Alessandro Sivieri Computational REST ed Erlang 11/17
  • 12. Scenario Motivazioni del progetto Architetture per sistemi adattabili Struttura del framework Linguaggi per sistemi adattabili Demo Computational REST ed Erlang Sicurezza Conclusioni Da Scheme ad Erlang CREST-Erlang + supporto ai processi leggeri (con mailbox) + caricamento dinamico di moduli − mancato supporto alle continuazioni − problemi di sicurezza Alessandro Sivieri Computational REST ed Erlang 11/17
  • 13. Scenario Motivazioni del progetto Architetture per sistemi adattabili Struttura del framework Linguaggi per sistemi adattabili Demo Computational REST ed Erlang Sicurezza Conclusioni CREST-Erlang I vincoli CREST nel nuovo framework Invio delle chiusure tra nodi, utilizzando HTTP POST Supporto allo stato interno di una computazione Composizione di servizi Alessandro Sivieri Computational REST ed Erlang 12/17
  • 14. Scenario Motivazioni del progetto Architetture per sistemi adattabili Struttura del framework Linguaggi per sistemi adattabili Demo Computational REST ed Erlang Sicurezza Conclusioni CREST-Erlang Struttura del framework Incapsulamento del protocollo Alessandro Sivieri Computational REST ed Erlang 13/17
  • 15. Scenario Motivazioni del progetto Architetture per sistemi adattabili Struttura del framework Linguaggi per sistemi adattabili Demo Computational REST ed Erlang Sicurezza Conclusioni CREST-Erlang Struttura del framework Albero di supervisione Alessandro Sivieri Computational REST ed Erlang 13/17
  • 16. Scenario Motivazioni del progetto Architetture per sistemi adattabili Struttura del framework Linguaggi per sistemi adattabili Demo Computational REST ed Erlang Sicurezza Conclusioni CREST-Erlang Demo delle funzionalità del framework Scenario della demo Alessandro Sivieri Computational REST ed Erlang 14/17
  • 17. Scenario Motivazioni del progetto Architetture per sistemi adattabili Struttura del framework Linguaggi per sistemi adattabili Demo Computational REST ed Erlang Sicurezza Conclusioni Il problema della sicurezza Sicurezza del codice rispetto all’host in cui viene eseguito: HTTPS con mutua autenticazione per spawn e remote Sicurezza dell’host rispetto al codice da eseguire: analisi di progetti esistenti per sandboxing e bytecode inspection Alessandro Sivieri Computational REST ed Erlang 15/17
  • 18. Scenario Architetture per sistemi adattabili Linguaggi per sistemi adattabili Computational REST ed Erlang Conclusioni Conclusioni Erlang + Funzionalità per la distribuzione dei processi e del carico di lavoro + Caricamento dinamico del codice − Scarsa attenzione alla sicurezza − Limitazioni del meccanismo di hotswap Alessandro Sivieri Computational REST ed Erlang 16/17
  • 19. Scenario Architetture per sistemi adattabili Linguaggi per sistemi adattabili Computational REST ed Erlang Conclusioni Conclusioni Computational REST + Gestione dei cambiamenti del Web di oggi + Supporto alla scalabilità ed al dinamismo − Utilizzo del protocollo HTTP per trasmettere codice − I problemi di sicurezza possono essere importanti Alessandro Sivieri Computational REST ed Erlang 16/17
  • 20. Appendice Bibliografia Bibliografia J. Armstrong. Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf, 2007. J.R. Erenkrantz. Computational REST: a new model for decentralized, Internet-scale applications. California State University at Long Beach, 2009. R.N. Taylor, P. Oreizy and N. Medvidovic. Runtime software adaptation: framework, approaches, and styles. ICSE Companion 2008, 899–910, 2008. J. Zachary. Protecting mobile code in the world. Internet Computing, IEEE, 7(2):78–82, 2003. Alessandro Sivieri Computational REST ed Erlang 17/17