SlideShare a Scribd company logo
1 of 29
Download to read offline
OOP VS FUNCTIONAL:
STOP THE FIGHT AND START BUILDING
MESSAGE DRIVEN
SERVERLESS APPLICATIONS
November 20th 2018 – Codemotion, Berlin
A l e s s a n d r o C o n f e t t i
Datalake Pipeline
Amazon

Athena
S3
Lambda
Batch
data_lake
EMR
data_lake
Amazon ES
SNS
email
AWS
Lambda
Lambda
load_data
SNS
load_data
Lambda
load_athena
Batch
data_lake
SNS

load_athena
S3
01_raw_data
S3
02_type_data
03_entities
SNS
info
SNS

error
metadata sql tableparquet files
S3

03_entities
html report
Upload
event
csv file
upload
S3
01_raw_data
csv files
S3
01_raw_data
metadata
+
csv files S3
02_type_data
03_entities
parquet files
S3
01_raw_data
metadata
ECR
data_lake
S3
artefacts
scripts
docker image
docker image docker image
S3
03_entities
Tableau
Redash
Metadata
validation/fix
(optional)
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
3
John McCharty [1927-2011]

(image by "null0" CC BY-SA 2.0)
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
LISP
4
(image By Lisp CC BY-SA 4.0)
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
5
XKCD - Permanent link to this comic
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
(print "Hello world")
6
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
LIS(t) P(rocessor)
7
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
LISP was the first homoiconic
programming language
8
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
9
XKCD - Permanent link to this comic
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
…LISP has jokingly been described as “the most
intelligent way to misuse a computer”. I think that
description a great compliment because it transmits
the full flavour of liberation: it has assisted a
number of our most gifted fellow humans in thinking
previously impossible thoughts…
10
Edsger W. Dijkstra,1972 Turing Award Lecture
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
11
Alan Kay [1940-present]

(image by Marcin Wichary from San Francisco, U.S.A. - Alan Kay, CC BY 2.0)
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
SMALLTALK
12
(Byte Magazine Vol. 6 No. 8 cover, August 1981)
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
The problem with object-oriented languages 

is they've got all this implicit environment that
they carry around with them. You wanted a
banana but what you got was a gorilla
holding the banana and the entire jungle.
13
Joe Amstrong, Coders at Work (ISBN 978-1430219484)
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
Transcript show: 'Hello, world!'.
14
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
I'm sorry that I long ago coined 

the term "objects" for this topic
because it gets many people 

to focus on the lesser idea. 

The big idea is "messaging"
15
Alan Kay, 1998 Squeak-dev mailing list
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
Smalltalk
is about making
small talk in a kind way
16
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
17
XKCD - Permanent link to this comic
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
Smalltalk #doesNotUnderstand 

is sent first to the receiver
18
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
19
LISP SMALLTALK
Focus on data structures Focus on messaging
Functions are used to organise and compose
transformation of data structures
Classes are used to organise behaviour and
object to persist data
Reflection through homoiconicity Reflection through meta-models
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
SERVERLESS COMPUTING…
…the most intelligent way to misuse 

a bunch of computers
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
“The Internet would not have happened nearly as
soon as it did except for the fact that John initiated
the development of time-sharing systems. We keep
inventing new names for time-sharing. It came to be
called servers.... Now we call it cloud computing.
That is still just time-sharing. John started it."
21
Lester Earnest, October 28, 2011 Los Anagels Times
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
I HAVE A LONG STORY OF COMPUTER MISUSE…
22
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
CPU 6502 @ 1.023MHz
Memory 64 KB RAM (up to 1 MB)
NATURAL LANGUAGE PARSER
80s
CPU 68LC040 @ 25 MHz
Memory 4 MB RAM (up to 36 MB)
CODING IN SMALLTALK
90s
CPU Core i7 @ 2,7 GHz
Memory 16 GB RAM)
RUNNING A FULL K8S
00s
AWS LAMBDA SERVERLESS COMPUTING
23
Image from AWS Lambda official page
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
Nitro (custom kvm on top of custom asisc)
DO YOU STILL THINK OPTIMISATION IS THE KEY?
24
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
Node
Pod
JVM
Node
YOUR CODE IS HERE!!!
Fabio Tiriticco Akka Cluster versus Kubernetes: Clustering Solutions Showdown
Datalake Pipeline
Amazon

Athena
S3
Lambda
Batch
data_lake
EMR
data_lake
Amazon ES
SNS
email
AWS
Lambda
Lambda
load_data
SNS
load_data
Lambda
load_athena
Batch
data_lake
SNS
S3
01_raw_data
S3
02_type_data
03_entities
SNS
info
SNS

error
metadata sql tableparquet files
S3

03_entities
html report
Upload
event
csv file
upload
S3
01_raw_data
csv files
S3
01_raw_data
metadata
+
csv files S3
02_type_data
03_entities
parquet files
S3
01_raw_data
metadata
ECR
data_lake
S3
artefacts
scripts
docker image
docker image docker image
S3
03_entities
Tableau
Redash
Metadata
validation/fix
(optional)
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
26
SERVERLESS
Send
meaningful data structure 

to topics & queues
Use namespaces to group 

your data and functions
Move from monitoring to observability

(notify what’s going on 

or what you expect to happen next 

with meaningful messages)
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
LISP SMALLTALK
Focus on data structures Focus on messaging
Functions are used to organise
and compose transformation of
data structures
Classes are used to organise
behaviour and object to persist
data
Reflection through
homoiconicity
Reflection through meta-
models
“The key in making great and growable systems is much
more to design how its modules communicate rather than
what their internal properties and behaviors should be. 

Think of the internet -- to live, it (a) has to allow many
different kinds of ideas and realizations that are beyond
any single standard and (b) to allow varying degrees of
safe interoperability between these ideas.”
27
Alan Kay, 1998 Squeak-dev mailing list
Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
$ tail -f questions
28
Alessandro Confetti
aconfet@thoughtworks.com
twitter @zigolab 

blog http://blog.zigolab.it
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 VOL19
https://info.thoughtworks.com/technology-radar-subscription.html

More Related Content

Similar to Oop vs functional stop the fight and start building message driven serverless applications

MongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB Atlas
MongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB AtlasMongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB Atlas
MongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB AtlasMongoDB
 
LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話LINE Corporation
 
Implementing Analytics in High-Traffic Social Games
Implementing Analytics in High-Traffic Social GamesImplementing Analytics in High-Traffic Social Games
Implementing Analytics in High-Traffic Social GamesSocial Point
 
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...Codemotion
 
AWS re:Invent 2016: Big Data Mini Con State of the Union (BDM205)
AWS re:Invent 2016: Big Data Mini Con State of the Union (BDM205)AWS re:Invent 2016: Big Data Mini Con State of the Union (BDM205)
AWS re:Invent 2016: Big Data Mini Con State of the Union (BDM205)Amazon Web Services
 
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...Codemotion Tel Aviv
 
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 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...Codemotion
 
OpenChain Automation Case Study - September to December 2021
OpenChain Automation Case Study - September to December 2021OpenChain Automation Case Study - September to December 2021
OpenChain Automation Case Study - September to December 2021Shane Coughlan
 
Flutter SV Meetup Oct 2022 - End to end encrypted IoT with Dart and Flutter
Flutter SV Meetup Oct 2022 - End to end encrypted IoT with Dart and FlutterFlutter SV Meetup Oct 2022 - End to end encrypted IoT with Dart and Flutter
Flutter SV Meetup Oct 2022 - End to end encrypted IoT with Dart and FlutterChris Swan
 
Kubecon SIG Apps December 2017 Update
Kubecon SIG Apps December 2017 UpdateKubecon SIG Apps December 2017 Update
Kubecon SIG Apps December 2017 UpdateMatthew Farina
 
AWS re:Invent re:Cap - 데이터 분석: Amazon EC2 C4 Instance + Amazon EBS - 김일호
AWS re:Invent re:Cap - 데이터 분석: Amazon EC2 C4 Instance + Amazon EBS - 김일호AWS re:Invent re:Cap - 데이터 분석: Amazon EC2 C4 Instance + Amazon EBS - 김일호
AWS re:Invent re:Cap - 데이터 분석: Amazon EC2 C4 Instance + Amazon EBS - 김일호Amazon Web Services Korea
 
Making it easy to work with data
Making it easy to work with dataMaking it easy to work with data
Making it easy to work with dataCharles Smith
 
Spark Streaming Intro @KTech
Spark Streaming Intro @KTechSpark Streaming Intro @KTech
Spark Streaming Intro @KTechOleg Korolenko
 
A Semantic Multimedia Web (Part 3)
A Semantic Multimedia Web (Part 3)A Semantic Multimedia Web (Part 3)
A Semantic Multimedia Web (Part 3)Raphael Troncy
 
Serverless Applications on AWS
Serverless Applications on AWSServerless Applications on AWS
Serverless Applications on AWSDean Bryen
 
Linked Data applications for BIM
Linked Data applications for BIMLinked Data applications for BIM
Linked Data applications for BIMAna Roxin
 
The future will be Serverless (FrontConf Munich 2017)
The future will be Serverless (FrontConf Munich 2017)The future will be Serverless (FrontConf Munich 2017)
The future will be Serverless (FrontConf Munich 2017)Luciano Mammino
 

Similar to Oop vs functional stop the fight and start building message driven serverless applications (20)

Encode Club Hackathon
Encode Club Hackathon  Encode Club Hackathon
Encode Club Hackathon
 
MongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB Atlas
MongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB AtlasMongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB Atlas
MongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB Atlas
 
LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話
 
Implementing Analytics in High-Traffic Social Games
Implementing Analytics in High-Traffic Social GamesImplementing Analytics in High-Traffic Social Games
Implementing Analytics in High-Traffic Social Games
 
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...
 
AWS re:Invent 2016: Big Data Mini Con State of the Union (BDM205)
AWS re:Invent 2016: Big Data Mini Con State of the Union (BDM205)AWS re:Invent 2016: Big Data Mini Con State of the Union (BDM205)
AWS re:Invent 2016: Big Data Mini Con State of the Union (BDM205)
 
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...
 
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...
 
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...
 
OpenChain Automation Case Study - September to December 2021
OpenChain Automation Case Study - September to December 2021OpenChain Automation Case Study - September to December 2021
OpenChain Automation Case Study - September to December 2021
 
Flutter SV Meetup Oct 2022 - End to end encrypted IoT with Dart and Flutter
Flutter SV Meetup Oct 2022 - End to end encrypted IoT with Dart and FlutterFlutter SV Meetup Oct 2022 - End to end encrypted IoT with Dart and Flutter
Flutter SV Meetup Oct 2022 - End to end encrypted IoT with Dart and Flutter
 
Kubecon SIG Apps December 2017 Update
Kubecon SIG Apps December 2017 UpdateKubecon SIG Apps December 2017 Update
Kubecon SIG Apps December 2017 Update
 
AWS re:Invent re:Cap - 데이터 분석: Amazon EC2 C4 Instance + Amazon EBS - 김일호
AWS re:Invent re:Cap - 데이터 분석: Amazon EC2 C4 Instance + Amazon EBS - 김일호AWS re:Invent re:Cap - 데이터 분석: Amazon EC2 C4 Instance + Amazon EBS - 김일호
AWS re:Invent re:Cap - 데이터 분석: Amazon EC2 C4 Instance + Amazon EBS - 김일호
 
Making it easy to work with data
Making it easy to work with dataMaking it easy to work with data
Making it easy to work with data
 
Spark Streaming Intro @KTech
Spark Streaming Intro @KTechSpark Streaming Intro @KTech
Spark Streaming Intro @KTech
 
A Semantic Multimedia Web (Part 3)
A Semantic Multimedia Web (Part 3)A Semantic Multimedia Web (Part 3)
A Semantic Multimedia Web (Part 3)
 
Serverless Apps on AWS
Serverless Apps on AWS Serverless Apps on AWS
Serverless Apps on AWS
 
Serverless Applications on AWS
Serverless Applications on AWSServerless Applications on AWS
Serverless Applications on AWS
 
Linked Data applications for BIM
Linked Data applications for BIMLinked Data applications for BIM
Linked Data applications for BIM
 
The future will be Serverless (FrontConf Munich 2017)
The future will be Serverless (FrontConf Munich 2017)The future will be Serverless (FrontConf Munich 2017)
The future will be Serverless (FrontConf Munich 2017)
 

More from Alessandro Confetti

XConf 2022 - Code As Data: How data insights on legacy codebases can fill the...
XConf 2022 - Code As Data: How data insights on legacy codebases can fill the...XConf 2022 - Code As Data: How data insights on legacy codebases can fill the...
XConf 2022 - Code As Data: How data insights on legacy codebases can fill the...Alessandro Confetti
 
Was the technology really useful this time?
Was the technology really useful this time?Was the technology really useful this time?
Was the technology really useful this time?Alessandro Confetti
 
Scuttlebutt or how to exit facebook and start coding your first web 3.0 socia...
Scuttlebutt or how to exit facebook and start coding your first web 3.0 socia...Scuttlebutt or how to exit facebook and start coding your first web 3.0 socia...
Scuttlebutt or how to exit facebook and start coding your first web 3.0 socia...Alessandro Confetti
 
Through the looking glass (of the blockchain)
Through the looking glass (of the blockchain)Through the looking glass (of the blockchain)
Through the looking glass (of the blockchain)Alessandro Confetti
 
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
 

More from Alessandro Confetti (8)

XConf 2022 - Code As Data: How data insights on legacy codebases can fill the...
XConf 2022 - Code As Data: How data insights on legacy codebases can fill the...XConf 2022 - Code As Data: How data insights on legacy codebases can fill the...
XConf 2022 - Code As Data: How data insights on legacy codebases can fill the...
 
Was the technology really useful this time?
Was the technology really useful this time?Was the technology really useful this time?
Was the technology really useful this time?
 
Scuttlebutt or how to exit facebook and start coding your first web 3.0 socia...
Scuttlebutt or how to exit facebook and start coding your first web 3.0 socia...Scuttlebutt or how to exit facebook and start coding your first web 3.0 socia...
Scuttlebutt or how to exit facebook and start coding your first web 3.0 socia...
 
Through the looking glass (of the blockchain)
Through the looking glass (of the blockchain)Through the looking glass (of the blockchain)
Through the looking glass (of the blockchain)
 
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...
 
Blockchain
BlockchainBlockchain
Blockchain
 
The Pandora Security Model
The Pandora Security ModelThe Pandora Security Model
The Pandora Security Model
 
Agile vs ??
Agile vs ??Agile vs ??
Agile vs ??
 

Recently uploaded

MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 

Recently uploaded (20)

MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 

Oop vs functional stop the fight and start building message driven serverless applications

  • 1. OOP VS FUNCTIONAL: STOP THE FIGHT AND START BUILDING MESSAGE DRIVEN SERVERLESS APPLICATIONS November 20th 2018 – Codemotion, Berlin A l e s s a n d r o C o n f e t t i
  • 2. Datalake Pipeline Amazon
 Athena S3 Lambda Batch data_lake EMR data_lake Amazon ES SNS email AWS Lambda Lambda load_data SNS load_data Lambda load_athena Batch data_lake SNS
 load_athena S3 01_raw_data S3 02_type_data 03_entities SNS info SNS
 error metadata sql tableparquet files S3
 03_entities html report Upload event csv file upload S3 01_raw_data csv files S3 01_raw_data metadata + csv files S3 02_type_data 03_entities parquet files S3 01_raw_data metadata ECR data_lake S3 artefacts scripts docker image docker image docker image S3 03_entities Tableau Redash Metadata validation/fix (optional) Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 3. 3 John McCharty [1927-2011]
 (image by "null0" CC BY-SA 2.0) Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 4. LISP 4 (image By Lisp CC BY-SA 4.0) Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 5. 5 XKCD - Permanent link to this comic Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 6. (print "Hello world") 6 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 7. LIS(t) P(rocessor) 7 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 8. LISP was the first homoiconic programming language 8 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 9. 9 XKCD - Permanent link to this comic Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 10. …LISP has jokingly been described as “the most intelligent way to misuse a computer”. I think that description a great compliment because it transmits the full flavour of liberation: it has assisted a number of our most gifted fellow humans in thinking previously impossible thoughts… 10 Edsger W. Dijkstra,1972 Turing Award Lecture Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 11. 11 Alan Kay [1940-present]
 (image by Marcin Wichary from San Francisco, U.S.A. - Alan Kay, CC BY 2.0) Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 12. SMALLTALK 12 (Byte Magazine Vol. 6 No. 8 cover, August 1981) Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 13. The problem with object-oriented languages 
 is they've got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle. 13 Joe Amstrong, Coders at Work (ISBN 978-1430219484) Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 14. Transcript show: 'Hello, world!'. 14 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 15. I'm sorry that I long ago coined 
 the term "objects" for this topic because it gets many people 
 to focus on the lesser idea. 
 The big idea is "messaging" 15 Alan Kay, 1998 Squeak-dev mailing list Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 16. Smalltalk is about making small talk in a kind way 16 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 17. 17 XKCD - Permanent link to this comic Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 18. Smalltalk #doesNotUnderstand 
 is sent first to the receiver 18 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 19. 19 LISP SMALLTALK Focus on data structures Focus on messaging Functions are used to organise and compose transformation of data structures Classes are used to organise behaviour and object to persist data Reflection through homoiconicity Reflection through meta-models Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 20. SERVERLESS COMPUTING… …the most intelligent way to misuse 
 a bunch of computers Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 21. “The Internet would not have happened nearly as soon as it did except for the fact that John initiated the development of time-sharing systems. We keep inventing new names for time-sharing. It came to be called servers.... Now we call it cloud computing. That is still just time-sharing. John started it." 21 Lester Earnest, October 28, 2011 Los Anagels Times Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 22. I HAVE A LONG STORY OF COMPUTER MISUSE… 22 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin CPU 6502 @ 1.023MHz Memory 64 KB RAM (up to 1 MB) NATURAL LANGUAGE PARSER 80s CPU 68LC040 @ 25 MHz Memory 4 MB RAM (up to 36 MB) CODING IN SMALLTALK 90s CPU Core i7 @ 2,7 GHz Memory 16 GB RAM) RUNNING A FULL K8S 00s
  • 23. AWS LAMBDA SERVERLESS COMPUTING 23 Image from AWS Lambda official page Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 24. Nitro (custom kvm on top of custom asisc) DO YOU STILL THINK OPTIMISATION IS THE KEY? 24 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin Node Pod JVM Node YOUR CODE IS HERE!!! Fabio Tiriticco Akka Cluster versus Kubernetes: Clustering Solutions Showdown
  • 25. Datalake Pipeline Amazon
 Athena S3 Lambda Batch data_lake EMR data_lake Amazon ES SNS email AWS Lambda Lambda load_data SNS load_data Lambda load_athena Batch data_lake SNS S3 01_raw_data S3 02_type_data 03_entities SNS info SNS
 error metadata sql tableparquet files S3
 03_entities html report Upload event csv file upload S3 01_raw_data csv files S3 01_raw_data metadata + csv files S3 02_type_data 03_entities parquet files S3 01_raw_data metadata ECR data_lake S3 artefacts scripts docker image docker image docker image S3 03_entities Tableau Redash Metadata validation/fix (optional) Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 26. 26 SERVERLESS Send meaningful data structure 
 to topics & queues Use namespaces to group 
 your data and functions Move from monitoring to observability
 (notify what’s going on 
 or what you expect to happen next 
 with meaningful messages) Alessandro Confetti - November 20th 2018 – Codemotion, Berlin LISP SMALLTALK Focus on data structures Focus on messaging Functions are used to organise and compose transformation of data structures Classes are used to organise behaviour and object to persist data Reflection through homoiconicity Reflection through meta- models
  • 27. “The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be. 
 Think of the internet -- to live, it (a) has to allow many different kinds of ideas and realizations that are beyond any single standard and (b) to allow varying degrees of safe interoperability between these ideas.” 27 Alan Kay, 1998 Squeak-dev mailing list Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  • 28. $ tail -f questions 28 Alessandro Confetti aconfet@thoughtworks.com twitter @zigolab 
 blog http://blog.zigolab.it
  • 29. 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 VOL19 https://info.thoughtworks.com/technology-radar-subscription.html