SlideShare a Scribd company logo
1 of 29
Download to read offline
LEARN HOW TO BUILD 

DECENTRALIZED AND SERVERLESS 

HTML5 APPLICATIONS 

WITH EMBARKJS, ETHEREUM, DAT AND IPFS
April 13th 2018 – Codemotion, Rome
A l e s s a n d r o C o n f e t t i
2
image from the work of Paul Baran, On Distributed Communications Networks 1964
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
3
Image from Evolving terminology with evolved technology: decentralized versus distributed December 4, 2015
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
4
Images from Evolving terminology pt. 2: topology vs ownership January 10, 2016
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
2014
AWS Lamba
Elastic Function computing
2009
Node.js
2010
AKKA
Asyncronous WWW
2004
AWS
Elastic services
1993
CGI
1995
MySQL
Dynamic WWW
Static WWW
1990
HTTP/HTML
From decentralised arpanet to…
5
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
2017
worldwide (de)centralised serverless computing
ARPANET
1984
DNS
1974
TCP
1969
Internet foundations
BigchainDB
Blockchain based database
20162015
Ethereum
Trustless (pure) P2P function computingDAT IPFS
Pure P2P storage sevice
2013 20142011
Namecoin
Blockchain based naming service
2009
Bitcoin
Trustless pure P2P payment service
Worldwide P2P network
1999
NAPSTER
2001
From usenet to…
6
2017
P2P computing
Self-organised decentralised service
USENET
1979
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
AWS LAMBDA SERVERLESS COMPUTING
7
Image from AWS Lambda official page
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
WEB
SERVER
Storage
1990 STATIC WEB-SITE
8
CLIENT
http
Index.html
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
LOAD
BALANCER
WEB
SERVER
Storage
WEB
SERVER
Storage
2000 STATIC WEB-SITE
9
CLIENT
http
Index.html
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
EU
PROXY
WEB
SERVER
Storage
WEB
SERVER
Storage
LOAD BALANCER
2017 STATIC WEB-SITE
10
CLIENT
http
Index.html
…US
WEB
SERVER
Storage
WEB
SERVER
Storage
LOAD BALANCER
WEB
SERVER
Storage
WEB
SERVER
Storage
LOAD BALANCER
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
P2P SERVERLESS COMPUTING
11
????
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
12
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
Block 1Block …
Block 2
Block 4
ipfs
2017 IPFS STATIC WEB-SITE
13
CLIENT
IPFS
NODE
IPFS
NODE
IPFS
NODE
IPFS
NODE
Storage
HTTP/IPFS 

GATEWAY
Storage
Index.html
block
1
block
4
block
7
block
2
block
5
block
8
block
3
block
6
block
9
Storage
StorageStorage
Index.html
http
ipfs
Index.html
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
HOW TO INSTALL IPFS
14
wget https://dist.ipfs.io/go-ipfs/v0.4.14/go-ipfs_v0.4.14_linux-amd64.tar.gz
tar -xvfz go-ipfs_v0.4.14_linux-amd64.tar.gz
cd go-ipfs
./install.sh
ipfs init
ipfs daemon
http://localhost:5001/webui
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
15
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
16
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
HOW TO INSTALL DAT
17
npm install -g dat
mkdir MyData
cd MyData
dat create
dat share —-http
http://localhost:8080
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
18
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
19
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
20
Image and article about the left-pad incident from The Register
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
21
STATIC HTTP SITE STATIC IPFS/DAT SITE
Bandwidth costs and capacity 

is upon the site
Bandwidth costs and capacity 

is upon the client
proxies, load balancers, 

clusters and zones must be 

configured and maintained
The P2P network is self-organising
Censorship can be easily enforced 

thought DNS and IP Filtering
Content is resilient 

to DSN and IP filtering 

or deletion
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
22
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
P2P SERVERLESS COMPUTING
23
IPFS/DAT BLOCKCHAIN
ETHEREUM
Front-end code for
weather app is hosted
on IPFS or DAT
Ethereum contract is executed on the EVM
and returns data back to user
(eventually storing data on the blockchain)
The smart contract is
triggered by the user or an
external oracle
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
24
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
25
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
HOW TO INSTALL EMBARKJS
26
# install ethereum
wget https://gethstore.blob.core.windows.net/builds/geth-darwin-amd64-1.6.0-
facc47cb.tar.gz
tar -xvfz geth-darwin-amd64-1.6.0-facc47cb.tar.gz
sudo mv geth-darwin-amd64-1.6.0-facc47cb/geth /usr/local/bin/geth
# install EmbarkJS
sudo npm -g install embark
embark demo
# install compatible ipfs version inside demo folder
mkdir demo/bin
cd demo/bin
wget https://dist.ipfs.io/go-ipfs/v0.4.11/go-ipfs_v0.4.11_darwin-amd64.tar.gz
tar -xvfz go-ipfs_v0.4.11_darwin-amd64.tar.gz
./ipfs init
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
27
(DE)CENTRALISED 

SERVLESS COMPUTING
DISTRIBUTED

SERVLESS COMPUTING
you don’t have to manage servers or services, 

neither to worry how to scale or allocate them… 

as long are you able to pay 

or to cope with the provider’s rules
you don’t have to manage servers or services, 

neither to worry how to scale or allocate them… 

but you can help build the network

and been rewarded for it
Trust is upon the the provider Trust is upon the network
Resilience and scalability 

through (de)centralised

clustering, sharding, zoning…
Resilience and scalability 

through distributed networks
Alessandro Confetti - April 13th 2018 – Codemotion, Rome
WE ARE HIRING IN ITALY!
i n f o - i t @ t h o u g h t w o r k s . c o m
TECNOLOGY RADAR VOL17
https://info.thoughtworks.com/technology-radar-subscription.html
$ tail -f questions
29
Alessandro Confetti
aconfet@thoughtworks.com
twitter @zigolab 

blog http://blog.zigolab.it

More Related Content

What's hot

FOSDEM 2017: Making Your Own Open Source Raspberry Pi HAT
FOSDEM 2017: Making Your Own Open Source Raspberry Pi HATFOSDEM 2017: Making Your Own Open Source Raspberry Pi HAT
FOSDEM 2017: Making Your Own Open Source Raspberry Pi HAT
Leon Anavi
 

What's hot (12)

FOSDEM 2017: Making Your Own Open Source Raspberry Pi HAT
FOSDEM 2017: Making Your Own Open Source Raspberry Pi HATFOSDEM 2017: Making Your Own Open Source Raspberry Pi HAT
FOSDEM 2017: Making Your Own Open Source Raspberry Pi HAT
 
MOSP Walkthrough 2009
MOSP Walkthrough 2009MOSP Walkthrough 2009
MOSP Walkthrough 2009
 
Building a scalable learning platform - Erik Veld - Codemotion Amsterdam 2018
Building a scalable learning platform - Erik Veld - Codemotion Amsterdam 2018Building a scalable learning platform - Erik Veld - Codemotion Amsterdam 2018
Building a scalable learning platform - Erik Veld - Codemotion Amsterdam 2018
 
Create IoT with Open Source Hardware, Tizen and HTML5
Create IoT with Open Source Hardware, Tizen and HTML5Create IoT with Open Source Hardware, Tizen and HTML5
Create IoT with Open Source Hardware, Tizen and HTML5
 
Networks, Linux, Containers, Pods
Networks, Linux, Containers, PodsNetworks, Linux, Containers, Pods
Networks, Linux, Containers, Pods
 
Istio - The life of a packet
Istio - The life of a packetIstio - The life of a packet
Istio - The life of a packet
 
FOSDEM 2012 vcsh talk
FOSDEM 2012 vcsh talkFOSDEM 2012 vcsh talk
FOSDEM 2012 vcsh talk
 
Teledoom by Matt Williams for TADHack Orlando online 2020
Teledoom by Matt Williams for TADHack Orlando online 2020Teledoom by Matt Williams for TADHack Orlando online 2020
Teledoom by Matt Williams for TADHack Orlando online 2020
 
CI For Embedded Software - Lucas Jenss & Folker Bernitt
CI For Embedded Software - Lucas Jenss & Folker BernittCI For Embedded Software - Lucas Jenss & Folker Bernitt
CI For Embedded Software - Lucas Jenss & Folker Bernitt
 
【IoTLT一関】IoT機器のコーディングをVSCode Remoteで快適にする
【IoTLT一関】IoT機器のコーディングをVSCode Remoteで快適にする【IoTLT一関】IoT機器のコーディングをVSCode Remoteで快適にする
【IoTLT一関】IoT機器のコーディングをVSCode Remoteで快適にする
 
PHP-FIG: how the PHP world got off their islands (DrupalCamp Vienna 2015)
PHP-FIG: how the PHP world got off their islands (DrupalCamp Vienna 2015)PHP-FIG: how the PHP world got off their islands (DrupalCamp Vienna 2015)
PHP-FIG: how the PHP world got off their islands (DrupalCamp Vienna 2015)
 
Tools for Offensive RTC security. Introducing SIPVicious PRO and the demo ser...
Tools for Offensive RTC security. Introducing SIPVicious PRO and the demo ser...Tools for Offensive RTC security. Introducing SIPVicious PRO and the demo ser...
Tools for Offensive RTC security. Introducing SIPVicious PRO and the demo ser...
 

Similar to Learn how to build decentralized and serverless html5 applications with EmbarkJS, Ethereum, IPFS and DAT - Alessandro Confetti - Codemotion Rome 2018

Similar to Learn how to build decentralized and serverless html5 applications with EmbarkJS, Ethereum, IPFS and DAT - Alessandro Confetti - Codemotion Rome 2018 (20)

Learn how to build decentralized and serverless html5 applications with Embar...
Learn how to build decentralized and serverless html5 applications with Embar...Learn how to build decentralized and serverless html5 applications with Embar...
Learn how to build decentralized and serverless html5 applications with Embar...
 
Alessandro Confetti - Learn how to build decentralized and serverless html5 a...
Alessandro Confetti - Learn how to build decentralized and serverless html5 a...Alessandro Confetti - Learn how to build decentralized and serverless html5 a...
Alessandro Confetti - Learn how to build decentralized and serverless html5 a...
 
Docker opens the Doors for IoT
Docker opens the Doors for IoTDocker opens the Doors for IoT
Docker opens the Doors for IoT
 
Beyond Web Interfaces
Beyond Web InterfacesBeyond Web Interfaces
Beyond Web Interfaces
 
OpenStack Murano introduction
OpenStack Murano introductionOpenStack Murano introduction
OpenStack Murano introduction
 
Create a-strong-two-factors-authentication-device-for-less-than-chf-100
Create a-strong-two-factors-authentication-device-for-less-than-chf-100Create a-strong-two-factors-authentication-device-for-less-than-chf-100
Create a-strong-two-factors-authentication-device-for-less-than-chf-100
 
carrow - Go bindings to Apache Arrow via C++-API
carrow - Go bindings to Apache Arrow via C++-APIcarrow - Go bindings to Apache Arrow via C++-API
carrow - Go bindings to Apache Arrow via C++-API
 
Blockchain Software for Hardware: The Canaan AvalonMiner Open Source Embedded...
Blockchain Software for Hardware: The Canaan AvalonMiner Open Source Embedded...Blockchain Software for Hardware: The Canaan AvalonMiner Open Source Embedded...
Blockchain Software for Hardware: The Canaan AvalonMiner Open Source Embedded...
 
Webrtc plugins for Desktop Browsers
Webrtc plugins for Desktop BrowsersWebrtc plugins for Desktop Browsers
Webrtc plugins for Desktop Browsers
 
Internet innovation with Multipath TCP
Internet innovation with Multipath TCPInternet innovation with Multipath TCP
Internet innovation with Multipath TCP
 
Docker containers : introduction
Docker containers : introductionDocker containers : introduction
Docker containers : introduction
 
Programming IoT with Docker: How to Start?
Programming IoT with Docker: How to Start?Programming IoT with Docker: How to Start?
Programming IoT with Docker: How to Start?
 
InterPlanetary File System (IPFS)
InterPlanetary File System (IPFS)InterPlanetary File System (IPFS)
InterPlanetary File System (IPFS)
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
Ethereum introduction
Ethereum introductionEthereum introduction
Ethereum introduction
 
Encode polkadot club
Encode polkadot club  Encode polkadot club
Encode polkadot club
 
Web3 File Storage Options
Web3 File Storage OptionsWeb3 File Storage Options
Web3 File Storage Options
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in Kubernetes
 
Frontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou FurieuxFrontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou Furieux
 
Protocol Labs, David Dias, TADSummit 2018
Protocol Labs, David Dias, TADSummit 2018Protocol Labs, David Dias, TADSummit 2018
Protocol Labs, David Dias, TADSummit 2018
 

More from Codemotion

More from Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 

Learn how to build decentralized and serverless html5 applications with EmbarkJS, Ethereum, IPFS and DAT - Alessandro Confetti - Codemotion Rome 2018

  • 1. LEARN HOW TO BUILD 
 DECENTRALIZED AND SERVERLESS 
 HTML5 APPLICATIONS 
 WITH EMBARKJS, ETHEREUM, DAT AND IPFS April 13th 2018 – Codemotion, Rome A l e s s a n d r o C o n f e t t i
  • 2. 2 image from the work of Paul Baran, On Distributed Communications Networks 1964 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 3. 3 Image from Evolving terminology with evolved technology: decentralized versus distributed December 4, 2015 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 4. 4 Images from Evolving terminology pt. 2: topology vs ownership January 10, 2016 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 5. 2014 AWS Lamba Elastic Function computing 2009 Node.js 2010 AKKA Asyncronous WWW 2004 AWS Elastic services 1993 CGI 1995 MySQL Dynamic WWW Static WWW 1990 HTTP/HTML From decentralised arpanet to… 5 Alessandro Confetti - April 13th 2018 – Codemotion, Rome 2017 worldwide (de)centralised serverless computing ARPANET 1984 DNS 1974 TCP 1969 Internet foundations
  • 6. BigchainDB Blockchain based database 20162015 Ethereum Trustless (pure) P2P function computingDAT IPFS Pure P2P storage sevice 2013 20142011 Namecoin Blockchain based naming service 2009 Bitcoin Trustless pure P2P payment service Worldwide P2P network 1999 NAPSTER 2001 From usenet to… 6 2017 P2P computing Self-organised decentralised service USENET 1979 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 7. AWS LAMBDA SERVERLESS COMPUTING 7 Image from AWS Lambda official page Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 8. WEB SERVER Storage 1990 STATIC WEB-SITE 8 CLIENT http Index.html Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 10. EU PROXY WEB SERVER Storage WEB SERVER Storage LOAD BALANCER 2017 STATIC WEB-SITE 10 CLIENT http Index.html …US WEB SERVER Storage WEB SERVER Storage LOAD BALANCER WEB SERVER Storage WEB SERVER Storage LOAD BALANCER Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 11. P2P SERVERLESS COMPUTING 11 ???? Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 12. 12 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 13. Block 1Block … Block 2 Block 4 ipfs 2017 IPFS STATIC WEB-SITE 13 CLIENT IPFS NODE IPFS NODE IPFS NODE IPFS NODE Storage HTTP/IPFS 
 GATEWAY Storage Index.html block 1 block 4 block 7 block 2 block 5 block 8 block 3 block 6 block 9 Storage StorageStorage Index.html http ipfs Index.html Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 14. HOW TO INSTALL IPFS 14 wget https://dist.ipfs.io/go-ipfs/v0.4.14/go-ipfs_v0.4.14_linux-amd64.tar.gz tar -xvfz go-ipfs_v0.4.14_linux-amd64.tar.gz cd go-ipfs ./install.sh ipfs init ipfs daemon http://localhost:5001/webui Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 15. 15 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 16. 16 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 17. HOW TO INSTALL DAT 17 npm install -g dat mkdir MyData cd MyData dat create dat share —-http http://localhost:8080 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 18. 18 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 19. 19 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 20. 20 Image and article about the left-pad incident from The Register Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 21. 21 STATIC HTTP SITE STATIC IPFS/DAT SITE Bandwidth costs and capacity 
 is upon the site Bandwidth costs and capacity 
 is upon the client proxies, load balancers, 
 clusters and zones must be 
 configured and maintained The P2P network is self-organising Censorship can be easily enforced 
 thought DNS and IP Filtering Content is resilient 
 to DSN and IP filtering 
 or deletion Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 22. 22 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 23. P2P SERVERLESS COMPUTING 23 IPFS/DAT BLOCKCHAIN ETHEREUM Front-end code for weather app is hosted on IPFS or DAT Ethereum contract is executed on the EVM and returns data back to user (eventually storing data on the blockchain) The smart contract is triggered by the user or an external oracle Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 24. 24 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 25. 25 Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 26. HOW TO INSTALL EMBARKJS 26 # install ethereum wget https://gethstore.blob.core.windows.net/builds/geth-darwin-amd64-1.6.0- facc47cb.tar.gz tar -xvfz geth-darwin-amd64-1.6.0-facc47cb.tar.gz sudo mv geth-darwin-amd64-1.6.0-facc47cb/geth /usr/local/bin/geth # install EmbarkJS sudo npm -g install embark embark demo # install compatible ipfs version inside demo folder mkdir demo/bin cd demo/bin wget https://dist.ipfs.io/go-ipfs/v0.4.11/go-ipfs_v0.4.11_darwin-amd64.tar.gz tar -xvfz go-ipfs_v0.4.11_darwin-amd64.tar.gz ./ipfs init Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 27. 27 (DE)CENTRALISED 
 SERVLESS COMPUTING DISTRIBUTED
 SERVLESS COMPUTING you don’t have to manage servers or services, 
 neither to worry how to scale or allocate them… 
 as long are you able to pay 
 or to cope with the provider’s rules you don’t have to manage servers or services, 
 neither to worry how to scale or allocate them… 
 but you can help build the network
 and been rewarded for it Trust is upon the the provider Trust is upon the network Resilience and scalability 
 through (de)centralised
 clustering, sharding, zoning… Resilience and scalability 
 through distributed networks Alessandro Confetti - April 13th 2018 – Codemotion, Rome
  • 28. WE ARE HIRING IN ITALY! i n f o - i t @ t h o u g h t w o r k s . c o m TECNOLOGY RADAR VOL17 https://info.thoughtworks.com/technology-radar-subscription.html
  • 29. $ tail -f questions 29 Alessandro Confetti aconfet@thoughtworks.com twitter @zigolab 
 blog http://blog.zigolab.it