Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

7 views

Published on

Let's get back to the time when languages could be defined with just 6 reserved keywords or none at all, and learn how the ideas that John McCarthy and Alan Key envisioned in Lisp and Smalltalk are still alive and kicking in our serverless and message-driven world. No matter the language you are using now, and how much you are an OOP or functional guy, you'll learn how to develop better serverless applications and build extensible and decoupled workflows.

Published in: Software
  • Be the first to comment

  • Be the first to like this

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

  1. 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. 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. 3 John McCharty [1927-2011]
 (image by "null0" CC BY-SA 2.0) Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  4. 4. LISP 4 (image By Lisp CC BY-SA 4.0) Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  5. 5. 5 XKCD - Permanent link to this comic Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  6. 6. (print "Hello world") 6 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  7. 7. LIS(t) P(rocessor) 7 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  8. 8. LISP was the first homoiconic programming language 8 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  9. 9. 9 XKCD - Permanent link to this comic Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  10. 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. 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. 12. SMALLTALK 12 (Byte Magazine Vol. 6 No. 8 cover, August 1981) Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  13. 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. 14. Transcript show: 'Hello, world!'. 14 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  15. 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. 16. Smalltalk is about making small talk in a kind way 16 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  17. 17. 17 XKCD - Permanent link to this comic Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  18. 18. Smalltalk #doesNotUnderstand 
 is sent first to the receiver 18 Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  19. 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. 20. SERVERLESS COMPUTING… …the most intelligent way to misuse 
 a bunch of computers Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  21. 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. 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. 23. AWS LAMBDA SERVERLESS COMPUTING 23 Image from AWS Lambda official page Alessandro Confetti - November 20th 2018 – Codemotion, Berlin
  24. 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. 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. 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. 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. 28. $ tail -f questions 28 Alessandro Confetti aconfet@thoughtworks.com twitter @zigolab 
 blog http://blog.zigolab.it
  29. 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

×