0
High Availability with
Erlang/Elixir
Norberto Ortigoza
@hiphoox
Availability: state of being
possible to get or use
Server Server Server
Cluster
Server
App Server App Server App Server
Operating System
Process A Process B Process C
System
Micro service Micro Service Micro Service
Isolation
–Alan Kay on the Meaning of “Object-Oriented Programming”
“OOP to me means only messaging, local
retention and protection ...
Erlang has lightweight
processes
Process
Erlang has messaging
Erlang has live code
upgrade
An Operating System
on its own
So, What do we do when
we detect an error?
Let it crash!
How?
Detect and know why
it crashed
Process A Process BMonitor
Process A Process BLink
Supervision Trees
Application
App
Supervisor
Worker Worker Worker
Application
App
Supervisor
Worker Worker Worker
Application
App
Supervisor
Worker Worker Worker
Client
App
Super
visor
Worker Worker Worker
Server
App
Super
visor
Worker Worker Worker
Server
App
Super
visor
Worker Work...
BEAM
Client Client Client Client
Client Client Client Client
262,144 process
default limite, scales to
millions
Open Telecom
Platform (OTP)
GenServer
GenEvent
Supervisor
Application
Agent
Task
Elixir
Fault tolerance implies
scalability
To make things fault-tolerant we
have to make sure they are
made from isolated components
If the components are
isolated they can run in
parallel
Things that are isolated
and can run in parallel
are scalable!
Elixir
defmodule Hello do
IO.puts "Defining the function world"
def world do
IO.puts "Hello World"
end
IO.puts "Function world de...
References
• http://www.infoq.com/presentations/Building-
Highly-Available-Systems-in-Erlang
• http://www.infoq.com/presen...
39
Alta disponibilidad con Erlang/Elixir - Norberto Ortigoza
Alta disponibilidad con Erlang/Elixir - Norberto Ortigoza
Alta disponibilidad con Erlang/Elixir - Norberto Ortigoza
Alta disponibilidad con Erlang/Elixir - Norberto Ortigoza
Upcoming SlideShare
Loading in...5
×

Alta disponibilidad con Erlang/Elixir - Norberto Ortigoza

336

Published on

Norberto Ortigoza es instructor para América Latina por parte de Big Nerd Ranch, la empresa de cursos para iOS más importante del mundo. Es Director de Desarrollo en Diverza y co-fundador del grupo Cocoaheads en el Distrito Federal dirigido a desarrolladores en OSX y iOS. También es instructor oficial de Rubymotion. Ha sido programador por más de 20 años, donde ha empleado Sistemas operativos y lenguajes como NeXT, OSX, Solaris, Windows, Smalltalk, Objective-C, C, Java, C#, Ruby, PHP, Python, Perl y en los últimos días Elixir y Go. Ha impartido cursos de desarrollo en India, USA, Colombia, Bélgica y México.

Es Ingeniero en Computación por parte de la Facultad de Ingeniería de la UNAM. Tiene estudios de Maestría en Ciencias de la Computación por la UNAM. Diplomado en Procesos y Arquitectura de Software por parte del SEI - Carnegie Mellon University.

Published in: Software
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
336
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
16
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Alta disponibilidad con Erlang/Elixir - Norberto Ortigoza"

  1. 1. High Availability with Erlang/Elixir Norberto Ortigoza @hiphoox
  2. 2. Availability: state of being possible to get or use
  3. 3. Server Server Server Cluster
  4. 4. Server App Server App Server App Server
  5. 5. Operating System Process A Process B Process C
  6. 6. System Micro service Micro Service Micro Service
  7. 7. Isolation
  8. 8. –Alan Kay on the Meaning of “Object-Oriented Programming” “OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late- binding of all things..”
  9. 9. Erlang has lightweight processes
  10. 10. Process
  11. 11. Erlang has messaging
  12. 12. Erlang has live code upgrade
  13. 13. An Operating System on its own
  14. 14. So, What do we do when we detect an error?
  15. 15. Let it crash!
  16. 16. How?
  17. 17. Detect and know why it crashed
  18. 18. Process A Process BMonitor
  19. 19. Process A Process BLink
  20. 20. Supervision Trees
  21. 21. Application App Supervisor Worker Worker Worker
  22. 22. Application App Supervisor Worker Worker Worker Application App Supervisor Worker Worker Worker
  23. 23. Client App Super visor Worker Worker Worker Server App Super visor Worker Worker Worker Server App Super visor Worker Worker Worker BEAM
  24. 24. BEAM Client Client Client Client Client Client Client Client
  25. 25. 262,144 process default limite, scales to millions
  26. 26. Open Telecom Platform (OTP)
  27. 27. GenServer GenEvent Supervisor Application Agent Task Elixir
  28. 28. Fault tolerance implies scalability
  29. 29. To make things fault-tolerant we have to make sure they are made from isolated components
  30. 30. If the components are isolated they can run in parallel
  31. 31. Things that are isolated and can run in parallel are scalable!
  32. 32. Elixir
  33. 33. defmodule Hello do IO.puts "Defining the function world" def world do IO.puts "Hello World" end IO.puts "Function world defined" end Hello.world
  34. 34. References • http://www.infoq.com/presentations/Building- Highly-Available-Systems-in-Erlang • http://www.infoq.com/presentations/self-heal- scalable-system • http://www.infoq.com/presentations/fault- tolerance-101-qcon-london
  35. 35. 39
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×