SlideShare ist ein Scribd-Unternehmen logo
1 von 62
Downloaden Sie, um offline zu lesen
CHOOSING THE ERLANG ECOSYSTEM
FOR DEVELOPING THE APPLICATIONS
OF THE FUTURE!
Stavros Aronis
© 2019 – Erlang Solutions Ltd. 1
@Vahnatai
INTRO:‹
LAUNCHING ON THE SUPER BOWL
2
© 2019 – Erlang Solutions Ltd.
3
© 2019 – Erlang Solutions Ltd.
https://codesync.global/speaker/keith-elder/
KEITH’S STORY
➀ Loan & mortgage company
➀ Launching a new product via a Super Bowl ad
➀ Getting ready for huge traïŹƒc
➀ Requirements:
‱ Hard deadline (~ 300 days)
‱ 30 000 transactions / second
‱ 1-2 ms response time
‱ 

© 2019 – Erlang Solutions Ltd. 4
KEITH’S STORY
➀ “Let’s use Erlang”
➀ How come?
‱ During “innovation time” people were reading
Bruce Tate’s “Seven Languages in Seven Weeks”
‱ Erlang got two senior engineers very excited
➀ Still

‱ For a critical piece of their stack

‱ 
 with no prior production experience
‱ 
 were they mad?
© 2019 – Erlang Solutions Ltd. 5
WHO IS USING ERLANG?
© 2019 – Erlang Solutions Ltd.
6
© 2019 – Erlang Solutions Ltd.
(DR.) STAVROS ARONIS!
From: Athens, GR
Living in: Uppsala, SE
Interests:  NonViolent Communication, Rationality, Privacy
Hobbies:   Music (accordion, student brass band, arrange, sing)
7
COOL! ANYONE ELSE?
© 2019 – Erlang Solutions Ltd.
8
ERLANG SOLUTIONS
➀ 90+ experts
➀ 4+ oïŹƒces in Europe & the Americas‹
(We Are Hiring!)
➀ 20+ yrs of experience
➀ Diverse clients, from startups to Fortune 500’s
➀ Passionate about Erlang & Elixir prog. languages.
➀ Building innovative, scalable & resilient systems
➀ Member of Trifork Group of tech companies, adding
value to over 300+ clients.
➀ Powering communities via Code Sync family of
global tech events.
© 2019 – Erlang Solutions Ltd. 9
NO, REALLY, WHO IS USING ERLANG?
© 2019 – Erlang Solutions Ltd.
10
WHAT PEOPLE USUALLY THINK

© 2019 – Erlang Solutions Ltd. 11

 AND A GLIMPSE OF THE REALITY
© 2019 – Erlang Solutions Ltd. 12
© 2019 – Erlang Solutions Ltd.
BACKGROUND (1980s)
➀ Ericsson’s “best seller” AXE
telephone exchanges
(switches) required large‹
eïŹ€ort to develop and maintain
software.
➀ How to make programming
such devices easier?
➀ Let’s try to design a
language

13
REQUIREMENTS
➀ Huge numbers of concurrent activities
➀ Time constraints (deadlines)
➀ Distribution over several computers
➀ Continuous operation over years -‹
Zero-downtime maintenance
➀ Tolerance for hardware & software failures
© 2019 – Erlang Solutions Ltd.
- Bjarne DĂ€cker ‹
Former CSLab manager (Ericsson)‹
(Lic. Thesis, Nov 2010)
14
LET’S TAKE A CLOSER LOOK

© 2019 – Erlang Solutions Ltd. 15
DESIGNED FOR SEVERAL DOMAINS!

 not just telecom!
© 2019 – Erlang Solutions Ltd. 16
© 2019 – Erlang Solutions Ltd. 17
WHY?
18
© 2019 – Erlang Solutions Ltd.© 2018 – Erlang Solutions Ltd.
© 2019 – Erlang Solutions Ltd.© 2018 – Erlang Solutions Ltd. 19
FUNCTIONAL
© 2019 – Erlang Solutions Ltd.
20
FUNCTIONAL PROGRAMMING
© 2019 – Erlang Solutions Ltd. 21
PATTERN MATCHING
sum([]) -> 0;
sum([H|T]) -> H + sum(T).
© 2019 – Erlang Solutions Ltd. 22
© 2019 – Erlang Solutions Ltd.
BEAUTY!
qsort([Head|Tail]) ->
Smaller =
qsort([X || X <- Tail, X =< Head]),
Larger =
qsort([Y || Y <- Tail, Y > Head]),
Smaller ++ [Head] ++ Larger;
qsort([]) ->
[].
23
PATTERN MATCHING
<< IpVers:4, HLen:4,‹
SrvcType:8, TotLen:16,‹
ID:16, Flgs:3, FragOff:13,‹
TTL:8, Proto:8, HdrChkSum:16,‹
SrcIP:32, DestIP:32,‹
RestDgram/binary >>
© 2019 – Erlang Solutions Ltd. 24
LIBRARIES
➀ Standard libraries in Erlang/OTP
➀ lists
➀ sets
➀ (di)graphs
➀ strings
➀ maps
➀ math
➀ io
➀ 

© 2019 – Erlang Solutions Ltd. 25
CONCURRENT
© 2019 – Erlang Solutions Ltd.
26
JOE ARMSTRONG’S TENETS
➀ The world is concurrent
➀ Things in the world don’t “share data”
➀ Things communicate with messages
➀ Communications (and things) fail
© 2019 – Erlang Solutions Ltd. 27
PROCESSES (“GREEN” THREADS)
© 2019 – Erlang Solutions Ltd.
P1
P2
spawn(Fun)
P3
spawn(Fun)
28
MESSAGE PASSING
© 2019 – Erlang Solutions Ltd.
P1
P2 P3
29
MESSAGE PASSING
© 2019 – Erlang Solutions Ltd.
P1
P2 P3
foo
P1 ! foo
30
MESSAGE PASSING
© 2019 – Erlang Solutions Ltd.
P1
P2 P3
foo
P1 ! foo
31
MESSAGE PASSING
© 2019 – Erlang Solutions Ltd.
P1
P2 P3
foo
receive
foo -> 

end
32
MESSAGE PASSING
© 2019 – Erlang Solutions Ltd.
P1
P2 P3
foo
receive
foo -> 

end
33
FAULT TOLERANT
© 2019 – Erlang Solutions Ltd.
34
THERE WILL BE FAIL
➀ Unexpected inputs
➀ Unexpected delays
➀ Unexpected
 anything!
➀ Let it crash!
© 2019 – Erlang Solutions Ltd. 35
MONITORS
➀ ‘If this process exits, send me‹
a message’
➀ Perfect for synchronous requests!
© 2019 – Erlang Solutions Ltd. 36
LINKS
© 2019 – Erlang Solutions Ltd.
P1
P3
P2
P4
37
LINKS
© 2019 – Erlang Solutions Ltd.
P1
P3
P2
P4
38
LINKS
© 2019 – Erlang Solutions Ltd.
P1
P3
P2
P4
39
SUPERVISION TREES
© 2019 – Erlang Solutions Ltd.
S1
W3W2 S4
W6W5
40
THE WORLD IS CONCURRENT
© 2019 – Erlang Solutions Ltd.
"Concurrency in the 80s? It was probably too underground for you."‹
-Hipster @joeerl #erlang - @jessegumm (2 Feb 2014)
https://twitter.com/jessegumm/status/430016389378625536
41
DISTRIBUTED
© 2019 – Erlang Solutions Ltd.
42
THERE WILL BE MORE FAIL
➀ Plug is pulled
➀ Fiber is severed
➀ OS panics
➀ 

© 2019 – Erlang Solutions Ltd. 43
NODE DISCOVERY & CONNECTION
➀ Explicit or automatic, on-demand
➀ Fully connected mesh
© 2019 – Erlang Solutions Ltd. 44
TRANSPARENT MESSAGE PASSING
➀ Remote PIDs
➀ ““Little”” eïŹ€ort to make a program‹
distributed
© 2019 – Erlang Solutions Ltd. 45
ERLANG/OTP & THE BEAM
© 2019 – Erlang Solutions Ltd.
46
THE ERLANG/OTP DISTRIBUTION
➀ Erlang is the core language
➀ Erlang/OTP is the implementation
➀ Open Telecom Platform
➀ Line is hard to discern sometimes
© 2019 – Erlang Solutions Ltd. 47
THE BEAM
➀ Virtual machine for Erlang programs
➀ Support for ‘all of the above’
➀ SMP/multicore
➀ Ports for working with other programs
➀ Native C code support
➀ 

© 2019 – Erlang Solutions Ltd. 48
EVEN MORE OTP LIBRARIES
➀ Behaviours (gen_server, supervisor, 
)
➀ mnesia
➀ httpc
➀ crypto, ssl, ssh
➀ common_test
➀ unicode
➀ snmp
➀ wx
➀ hipe, dialyzer
© 2019 – Erlang Solutions Ltd. 49
THE ERLANG ECOSYSTEM
© 2019 – Erlang Solutions Ltd.
50
WHY BUILD OTHER LANGUAGES?
➀ Fun
➀ Accessible
➀ Explore other design choices
➀ Can be based on
➀ The BEAM
➀ Erlang
➀ Erlang/OTP
© 2019 – Erlang Solutions Ltd. 51
NOTABLE MENTIONS
➀ LFE (Lisp Flavoured Erlang)
➀ Alpaca (ML)
➀ Efene (Alt syntax)
➀ Luerl (Lua)
➀ Erlog (Prolog)
➀ Clojerl (Clojure)
➀ Fez (F#)
➀ ?? (Forth)
© 2019 – Erlang Solutions Ltd. 52
ELIXIR
➀ Ruby-like syntax
➀ Many Erlang libraries and interfaces‹
standardised, rewritten and extended
➀ Extensive set of build tools and packages
➀ Several notable projects
➀ Phoenix
➀ Ecto
➀ Hex
© 2019 – Erlang Solutions Ltd. 53
ELIXIR AND OTHER ECOSYSTEMS
© 2019 – Erlang Solutions Ltd. 54
➀ Broadway, a library for data ingestion
pipelines
➀ Amazon SQS, Google Cloud Pub/Sub,
RabbitMQ
© 2019 – Erlang Solutions Ltd. 55
THE ERLANG ECOSYSTEM
© 2019 – Erlang Solutions Ltd. 56
CONCLUSION
© 2019 – Erlang Solutions Ltd.
57
© 2019 – Erlang Solutions Ltd. 58
JOIN THE BEST!
© 2019 – Erlang Solutions Ltd. 59
60
© 2019 – Erlang Solutions Ltd.
https://codesync.global/speaker/keith-elder/
61
© 2019 – Erlang Solutions Ltd.
FIND OUT MORE ON TWITTER
➀ #CODEBEAMSF
➀ #CODEBEAMSTO
➀ @CodeBEAMio
➀ #MyTopdogStatus
➀ @ErlangSolutions
➀ @Vahnatai
© 2019 – Erlang Solutions Ltd. 62
Thank you!Special thanks to: Francesco Cesarini, Robert Virding

Weitere Àhnliche Inhalte

Ähnlich wie Choosing the Erlang Ecosystem for Developing the Applications of the Future!

How do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server patternHow do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server patternJ On The Beach
 
SplunkLive! Utrecht 2019: NXP
SplunkLive! Utrecht 2019: NXP SplunkLive! Utrecht 2019: NXP
SplunkLive! Utrecht 2019: NXP Splunk
 
The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...Ontico
 
EMC World 2016 - code.03 Introduction to Containers
EMC World 2016 - code.03 Introduction to ContainersEMC World 2016 - code.03 Introduction to Containers
EMC World 2016 - code.03 Introduction to Containers{code}
 
How to paper prototype a digital solution
How to paper prototype a digital solutionHow to paper prototype a digital solution
How to paper prototype a digital solutionkarintroeger
 
Polycom RealPresence Trio 8800 for Microsoft Office 365 and Skype
Polycom RealPresence Trio 8800 for Microsoft Office 365 and SkypePolycom RealPresence Trio 8800 for Microsoft Office 365 and Skype
Polycom RealPresence Trio 8800 for Microsoft Office 365 and SkypeDavid J Rosenthal
 
Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis
Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad AssisKubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis
Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad AssisAgileSparks
 
Bertrand Meyer - Challenges in computing research at SIT Insights in Technolo...
Bertrand Meyer - Challenges in computing research at SIT Insights in Technolo...Bertrand Meyer - Challenges in computing research at SIT Insights in Technolo...
Bertrand Meyer - Challenges in computing research at SIT Insights in Technolo...Schaffhausen Institute of Technology
 
Amora: A mobile remote assistant
Amora: A mobile remote assistantAmora: A mobile remote assistant
Amora: A mobile remote assistantgsroma
 
EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...
EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...
EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...{code}
 
Making ES6 available to all with ChakraCore
Making ES6 available to all with ChakraCoreMaking ES6 available to all with ChakraCore
Making ES6 available to all with ChakraCoreChristian Heilmann
 
“Turning your ML algorithms into full web apps in no time with Python" by Mar...
“Turning your ML algorithms into full web apps in no time with Python" by Mar...“Turning your ML algorithms into full web apps in no time with Python" by Mar...
“Turning your ML algorithms into full web apps in no time with Python" by Mar...Paris Women in Machine Learning and Data Science
 
Intro to Forecasting with TensorFlow and Prophet
Intro to Forecasting with TensorFlow and ProphetIntro to Forecasting with TensorFlow and Prophet
Intro to Forecasting with TensorFlow and ProphetAnais Jackie Dotis
 
Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?Edward Burns
 
EMC World 2016 - code.11 Intimidate me not - How to Contribute to Large Open ...
EMC World 2016 - code.11 Intimidate me not - How to Contribute to Large Open ...EMC World 2016 - code.11 Intimidate me not - How to Contribute to Large Open ...
EMC World 2016 - code.11 Intimidate me not - How to Contribute to Large Open ...{code}
 
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdfUC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdfWlamir Molinari
 
Dev talks Cluj 2018 : Java in the 21 Century: Are you thinking far enough ahead?
Dev talks Cluj 2018 : Java in the 21 Century: Are you thinking far enough ahead?Dev talks Cluj 2018 : Java in the 21 Century: Are you thinking far enough ahead?
Dev talks Cluj 2018 : Java in the 21 Century: Are you thinking far enough ahead?Steve Poole
 
Thinking in a Highly Concurrent, Mostly-functional Language - Cesarini
Thinking in a Highly Concurrent, Mostly-functional Language - CesariniThinking in a Highly Concurrent, Mostly-functional Language - Cesarini
Thinking in a Highly Concurrent, Mostly-functional Language - CesariniCodemotion
 
Why open source is good for your economy
Why open source is good for your economyWhy open source is good for your economy
Why open source is good for your economyDirk Riehle
 

Ähnlich wie Choosing the Erlang Ecosystem for Developing the Applications of the Future! (20)

How do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server patternHow do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server pattern
 
SplunkLive! Utrecht 2019: NXP
SplunkLive! Utrecht 2019: NXP SplunkLive! Utrecht 2019: NXP
SplunkLive! Utrecht 2019: NXP
 
The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...
 
Erlang os
Erlang osErlang os
Erlang os
 
EMC World 2016 - code.03 Introduction to Containers
EMC World 2016 - code.03 Introduction to ContainersEMC World 2016 - code.03 Introduction to Containers
EMC World 2016 - code.03 Introduction to Containers
 
How to paper prototype a digital solution
How to paper prototype a digital solutionHow to paper prototype a digital solution
How to paper prototype a digital solution
 
Polycom RealPresence Trio 8800 for Microsoft Office 365 and Skype
Polycom RealPresence Trio 8800 for Microsoft Office 365 and SkypePolycom RealPresence Trio 8800 for Microsoft Office 365 and Skype
Polycom RealPresence Trio 8800 for Microsoft Office 365 and Skype
 
Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis
Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad AssisKubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis
Kubernetes is Hard! Lessons Learned Taking Our Apps to Kubernetes by Eldad Assis
 
Bertrand Meyer - Challenges in computing research at SIT Insights in Technolo...
Bertrand Meyer - Challenges in computing research at SIT Insights in Technolo...Bertrand Meyer - Challenges in computing research at SIT Insights in Technolo...
Bertrand Meyer - Challenges in computing research at SIT Insights in Technolo...
 
Amora: A mobile remote assistant
Amora: A mobile remote assistantAmora: A mobile remote assistant
Amora: A mobile remote assistant
 
EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...
EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...
EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...
 
Making ES6 available to all with ChakraCore
Making ES6 available to all with ChakraCoreMaking ES6 available to all with ChakraCore
Making ES6 available to all with ChakraCore
 
“Turning your ML algorithms into full web apps in no time with Python" by Mar...
“Turning your ML algorithms into full web apps in no time with Python" by Mar...“Turning your ML algorithms into full web apps in no time with Python" by Mar...
“Turning your ML algorithms into full web apps in no time with Python" by Mar...
 
Intro to Forecasting with TensorFlow and Prophet
Intro to Forecasting with TensorFlow and ProphetIntro to Forecasting with TensorFlow and Prophet
Intro to Forecasting with TensorFlow and Prophet
 
Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?Programming Language Platform Growth: Table Stakes or Deal Makes?
Programming Language Platform Growth: Table Stakes or Deal Makes?
 
EMC World 2016 - code.11 Intimidate me not - How to Contribute to Large Open ...
EMC World 2016 - code.11 Intimidate me not - How to Contribute to Large Open ...EMC World 2016 - code.11 Intimidate me not - How to Contribute to Large Open ...
EMC World 2016 - code.11 Intimidate me not - How to Contribute to Large Open ...
 
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdfUC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
 
Dev talks Cluj 2018 : Java in the 21 Century: Are you thinking far enough ahead?
Dev talks Cluj 2018 : Java in the 21 Century: Are you thinking far enough ahead?Dev talks Cluj 2018 : Java in the 21 Century: Are you thinking far enough ahead?
Dev talks Cluj 2018 : Java in the 21 Century: Are you thinking far enough ahead?
 
Thinking in a Highly Concurrent, Mostly-functional Language - Cesarini
Thinking in a Highly Concurrent, Mostly-functional Language - CesariniThinking in a Highly Concurrent, Mostly-functional Language - Cesarini
Thinking in a Highly Concurrent, Mostly-functional Language - Cesarini
 
Why open source is good for your economy
Why open source is good for your economyWhy open source is good for your economy
Why open source is good for your economy
 

KĂŒrzlich hochgeladen

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
call girls in Vaishali (Ghaziabad) 🔝 >àŒ’8448380779 🔝 genuine Escort Service đŸ”âœ”ïžâœ”ïž
call girls in Vaishali (Ghaziabad) 🔝 >àŒ’8448380779 🔝 genuine Escort Service đŸ”âœ”ïžâœ”ïžcall girls in Vaishali (Ghaziabad) 🔝 >àŒ’8448380779 🔝 genuine Escort Service đŸ”âœ”ïžâœ”ïž
call girls in Vaishali (Ghaziabad) 🔝 >àŒ’8448380779 🔝 genuine Escort Service đŸ”âœ”ïžâœ”ïžDelhi Call girls
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto GonzĂĄlez Trastoy
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 

KĂŒrzlich hochgeladen (20)

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
call girls in Vaishali (Ghaziabad) 🔝 >àŒ’8448380779 🔝 genuine Escort Service đŸ”âœ”ïžâœ”ïž
call girls in Vaishali (Ghaziabad) 🔝 >àŒ’8448380779 🔝 genuine Escort Service đŸ”âœ”ïžâœ”ïžcall girls in Vaishali (Ghaziabad) 🔝 >àŒ’8448380779 🔝 genuine Escort Service đŸ”âœ”ïžâœ”ïž
call girls in Vaishali (Ghaziabad) 🔝 >àŒ’8448380779 🔝 genuine Escort Service đŸ”âœ”ïžâœ”ïž
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 

Choosing the Erlang Ecosystem for Developing the Applications of the Future!

  • 2. INTRO:‹ LAUNCHING ON THE SUPER BOWL 2 © 2019 – Erlang Solutions Ltd.
  • 3. 3 © 2019 – Erlang Solutions Ltd. https://codesync.global/speaker/keith-elder/
  • 4. KEITH’S STORY ➀ Loan & mortgage company ➀ Launching a new product via a Super Bowl ad ➀ Getting ready for huge traïŹƒc ➀ Requirements: ‱ Hard deadline (~ 300 days) ‱ 30 000 transactions / second ‱ 1-2 ms response time ‱ 
 © 2019 – Erlang Solutions Ltd. 4
  • 5. KEITH’S STORY ➀ “Let’s use Erlang” ➀ How come? ‱ During “innovation time” people were reading Bruce Tate’s “Seven Languages in Seven Weeks” ‱ Erlang got two senior engineers very excited ➀ Still
 ‱ For a critical piece of their stack
 ‱ 
 with no prior production experience ‱ 
 were they mad? © 2019 – Erlang Solutions Ltd. 5
  • 6. WHO IS USING ERLANG? © 2019 – Erlang Solutions Ltd. 6
  • 7. © 2019 – Erlang Solutions Ltd. (DR.) STAVROS ARONIS! From: Athens, GR Living in: Uppsala, SE Interests:  NonViolent Communication, Rationality, Privacy Hobbies:   Music (accordion, student brass band, arrange, sing) 7
  • 8. COOL! ANYONE ELSE? © 2019 – Erlang Solutions Ltd. 8
  • 9. ERLANG SOLUTIONS ➀ 90+ experts ➀ 4+ oïŹƒces in Europe & the Americas‹ (We Are Hiring!) ➀ 20+ yrs of experience ➀ Diverse clients, from startups to Fortune 500’s ➀ Passionate about Erlang & Elixir prog. languages. ➀ Building innovative, scalable & resilient systems ➀ Member of Trifork Group of tech companies, adding value to over 300+ clients. ➀ Powering communities via Code Sync family of global tech events. © 2019 – Erlang Solutions Ltd. 9
  • 10. NO, REALLY, WHO IS USING ERLANG? © 2019 – Erlang Solutions Ltd. 10
  • 11. WHAT PEOPLE USUALLY THINK
 © 2019 – Erlang Solutions Ltd. 11
  • 12. 
 AND A GLIMPSE OF THE REALITY © 2019 – Erlang Solutions Ltd. 12
  • 13. © 2019 – Erlang Solutions Ltd. BACKGROUND (1980s) ➀ Ericsson’s “best seller” AXE telephone exchanges (switches) required large‹ eïŹ€ort to develop and maintain software. ➀ How to make programming such devices easier? ➀ Let’s try to design a language
 13
  • 14. REQUIREMENTS ➀ Huge numbers of concurrent activities ➀ Time constraints (deadlines) ➀ Distribution over several computers ➀ Continuous operation over years -‹ Zero-downtime maintenance ➀ Tolerance for hardware & software failures © 2019 – Erlang Solutions Ltd. - Bjarne DĂ€cker ‹ Former CSLab manager (Ericsson)‹ (Lic. Thesis, Nov 2010) 14
  • 15. LET’S TAKE A CLOSER LOOK
 © 2019 – Erlang Solutions Ltd. 15
  • 16. DESIGNED FOR SEVERAL DOMAINS! 
 not just telecom! © 2019 – Erlang Solutions Ltd. 16
  • 17. © 2019 – Erlang Solutions Ltd. 17
  • 18. WHY? 18 © 2019 – Erlang Solutions Ltd.© 2018 – Erlang Solutions Ltd.
  • 19. © 2019 – Erlang Solutions Ltd.© 2018 – Erlang Solutions Ltd. 19
  • 20. FUNCTIONAL © 2019 – Erlang Solutions Ltd. 20
  • 21. FUNCTIONAL PROGRAMMING © 2019 – Erlang Solutions Ltd. 21
  • 22. PATTERN MATCHING sum([]) -> 0; sum([H|T]) -> H + sum(T). © 2019 – Erlang Solutions Ltd. 22
  • 23. © 2019 – Erlang Solutions Ltd. BEAUTY! qsort([Head|Tail]) -> Smaller = qsort([X || X <- Tail, X =< Head]), Larger = qsort([Y || Y <- Tail, Y > Head]), Smaller ++ [Head] ++ Larger; qsort([]) -> []. 23
  • 24. PATTERN MATCHING << IpVers:4, HLen:4,‹ SrvcType:8, TotLen:16,‹ ID:16, Flgs:3, FragOff:13,‹ TTL:8, Proto:8, HdrChkSum:16,‹ SrcIP:32, DestIP:32,‹ RestDgram/binary >> © 2019 – Erlang Solutions Ltd. 24
  • 25. LIBRARIES ➀ Standard libraries in Erlang/OTP ➀ lists ➀ sets ➀ (di)graphs ➀ strings ➀ maps ➀ math ➀ io ➀ 
 © 2019 – Erlang Solutions Ltd. 25
  • 26. CONCURRENT © 2019 – Erlang Solutions Ltd. 26
  • 27. JOE ARMSTRONG’S TENETS ➀ The world is concurrent ➀ Things in the world don’t “share data” ➀ Things communicate with messages ➀ Communications (and things) fail © 2019 – Erlang Solutions Ltd. 27
  • 28. PROCESSES (“GREEN” THREADS) © 2019 – Erlang Solutions Ltd. P1 P2 spawn(Fun) P3 spawn(Fun) 28
  • 29. MESSAGE PASSING © 2019 – Erlang Solutions Ltd. P1 P2 P3 29
  • 30. MESSAGE PASSING © 2019 – Erlang Solutions Ltd. P1 P2 P3 foo P1 ! foo 30
  • 31. MESSAGE PASSING © 2019 – Erlang Solutions Ltd. P1 P2 P3 foo P1 ! foo 31
  • 32. MESSAGE PASSING © 2019 – Erlang Solutions Ltd. P1 P2 P3 foo receive foo -> 
 end 32
  • 33. MESSAGE PASSING © 2019 – Erlang Solutions Ltd. P1 P2 P3 foo receive foo -> 
 end 33
  • 34. FAULT TOLERANT © 2019 – Erlang Solutions Ltd. 34
  • 35. THERE WILL BE FAIL ➀ Unexpected inputs ➀ Unexpected delays ➀ Unexpected
 anything! ➀ Let it crash! © 2019 – Erlang Solutions Ltd. 35
  • 36. MONITORS ➀ ‘If this process exits, send me‹ a message’ ➀ Perfect for synchronous requests! © 2019 – Erlang Solutions Ltd. 36
  • 37. LINKS © 2019 – Erlang Solutions Ltd. P1 P3 P2 P4 37
  • 38. LINKS © 2019 – Erlang Solutions Ltd. P1 P3 P2 P4 38
  • 39. LINKS © 2019 – Erlang Solutions Ltd. P1 P3 P2 P4 39
  • 40. SUPERVISION TREES © 2019 – Erlang Solutions Ltd. S1 W3W2 S4 W6W5 40
  • 41. THE WORLD IS CONCURRENT © 2019 – Erlang Solutions Ltd. "Concurrency in the 80s? It was probably too underground for you."‹ -Hipster @joeerl #erlang - @jessegumm (2 Feb 2014) https://twitter.com/jessegumm/status/430016389378625536 41
  • 42. DISTRIBUTED © 2019 – Erlang Solutions Ltd. 42
  • 43. THERE WILL BE MORE FAIL ➀ Plug is pulled ➀ Fiber is severed ➀ OS panics ➀ 
 © 2019 – Erlang Solutions Ltd. 43
  • 44. NODE DISCOVERY & CONNECTION ➀ Explicit or automatic, on-demand ➀ Fully connected mesh © 2019 – Erlang Solutions Ltd. 44
  • 45. TRANSPARENT MESSAGE PASSING ➀ Remote PIDs ➀ ““Little”” eïŹ€ort to make a program‹ distributed © 2019 – Erlang Solutions Ltd. 45
  • 46. ERLANG/OTP & THE BEAM © 2019 – Erlang Solutions Ltd. 46
  • 47. THE ERLANG/OTP DISTRIBUTION ➀ Erlang is the core language ➀ Erlang/OTP is the implementation ➀ Open Telecom Platform ➀ Line is hard to discern sometimes © 2019 – Erlang Solutions Ltd. 47
  • 48. THE BEAM ➀ Virtual machine for Erlang programs ➀ Support for ‘all of the above’ ➀ SMP/multicore ➀ Ports for working with other programs ➀ Native C code support ➀ 
 © 2019 – Erlang Solutions Ltd. 48
  • 49. EVEN MORE OTP LIBRARIES ➀ Behaviours (gen_server, supervisor, 
) ➀ mnesia ➀ httpc ➀ crypto, ssl, ssh ➀ common_test ➀ unicode ➀ snmp ➀ wx ➀ hipe, dialyzer © 2019 – Erlang Solutions Ltd. 49
  • 50. THE ERLANG ECOSYSTEM © 2019 – Erlang Solutions Ltd. 50
  • 51. WHY BUILD OTHER LANGUAGES? ➀ Fun ➀ Accessible ➀ Explore other design choices ➀ Can be based on ➀ The BEAM ➀ Erlang ➀ Erlang/OTP © 2019 – Erlang Solutions Ltd. 51
  • 52. NOTABLE MENTIONS ➀ LFE (Lisp Flavoured Erlang) ➀ Alpaca (ML) ➀ Efene (Alt syntax) ➀ Luerl (Lua) ➀ Erlog (Prolog) ➀ Clojerl (Clojure) ➀ Fez (F#) ➀ ?? (Forth) © 2019 – Erlang Solutions Ltd. 52
  • 53. ELIXIR ➀ Ruby-like syntax ➀ Many Erlang libraries and interfaces‹ standardised, rewritten and extended ➀ Extensive set of build tools and packages ➀ Several notable projects ➀ Phoenix ➀ Ecto ➀ Hex © 2019 – Erlang Solutions Ltd. 53
  • 54. ELIXIR AND OTHER ECOSYSTEMS © 2019 – Erlang Solutions Ltd. 54 ➀ Broadway, a library for data ingestion pipelines ➀ Amazon SQS, Google Cloud Pub/Sub, RabbitMQ
  • 55. © 2019 – Erlang Solutions Ltd. 55
  • 56. THE ERLANG ECOSYSTEM © 2019 – Erlang Solutions Ltd. 56
  • 57. CONCLUSION © 2019 – Erlang Solutions Ltd. 57
  • 58. © 2019 – Erlang Solutions Ltd. 58
  • 59. JOIN THE BEST! © 2019 – Erlang Solutions Ltd. 59
  • 60. 60 © 2019 – Erlang Solutions Ltd. https://codesync.global/speaker/keith-elder/
  • 61. 61 © 2019 – Erlang Solutions Ltd.
  • 62. FIND OUT MORE ON TWITTER ➀ #CODEBEAMSF ➀ #CODEBEAMSTO ➀ @CodeBEAMio ➀ #MyTopdogStatus ➀ @ErlangSolutions ➀ @Vahnatai © 2019 – Erlang Solutions Ltd. 62 Thank you!Special thanks to: Francesco Cesarini, Robert Virding