Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

111
{ Erlang : Because S**t happens Mahesh Paolini-Subramanya (@dieswaytoofast) V.P. Ubiquiti Networks

description

Mahesh talks about the buddha-nature of Erlang/OTP, pointing out how the various features of the language tie together into one seamless Fault Tolerant whole. Mahesh emphasizes that Erlang begins and ends with Fault Tolerance. Fault Tolerance is baked into the very genes of Erlang/OTP - something that ends up being amazingly useful when building any kind of system. Mahesh Paolini-Subramanya is the V.P. of R&D at Ubiquiti Networks - a manufacturer of disruptive technology platforms for emerging markets. He has spent the recent past building out Erlang-based massively concurrent Cloud Services and VoIP platforms. Mahesh was previously the CTO of Vocalocity after its merger with Aptela, where he was a founder and CTO.

Transcript of Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Page 1: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

{

Erlang :Because S**t happens

Mahesh Paolini-Subramanya (@dieswaytoofast)V.P. Ubiquiti Networks

Page 2: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
Page 3: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

My Vacation

Page 4: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

(Actually, the day before)

Page 5: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

A small failure…

Page 6: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
Page 7: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

The Horror! The Horror!

Page 8: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Why are my calls failing?

Page 9: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

You better call me back!

Page 10: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

I’m still p***ed off!

Page 11: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

And you’re stupid Apps don’t work!

Page 12: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

The Horror! The Horror!

Page 13: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Surely you Tested?

Page 14: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

1000 year floods

Page 15: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
Page 16: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Fault Tolerance

Page 17: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

The Big SixFrom http://www.erlang.org/download/armstrong_thesis_2003.pdf

Page 18: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Fault detection

The Big SixFrom http://www.erlang.org/download/armstrong_thesis_2003.pdf

Page 19: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Fault detection

Fault identification

The Big SixFrom http://www.erlang.org/download/armstrong_thesis_2003.pdf

Page 20: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Fault detection

Fault Identification

Error Encapsulation

The Big SixFrom http://www.erlang.org/download/armstrong_thesis_2003.pdf

Page 21: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Fault detection

Fault Identification

Error Encapsulation

Code upgrade

The Big SixFrom http://www.erlang.org/download/armstrong_thesis_2003.pdf

Page 22: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Fault detection

Fault Identification

Error Encapsulation

Code upgrade

Stable Storage

The Big SixFrom http://www.erlang.org/download/armstrong_thesis_2003.pdf

Page 23: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

erlang…

Page 24: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Fault detection

Fault Identification

Error Encapsulation

Code upgrade

Stable Storage

The Big SixFrom http://www.erlang.org/download/armstrong_thesis_2003.pdf

Page 25: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency Oriented

Page 26: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency Oriented

Page 27: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Fault detection

Fault Identification

Error Encapsulation

Code upgrade

Stable Storage

The Big SixFrom http://www.erlang.org/download/armstrong_thesis_2003.pdf

Page 28: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Fault Detection

Page 29: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Fault detection

Fault Identification

Error Encapsulation

Code upgrade

Stable Storage

The Big SixFrom http://www.erlang.org/download/armstrong_thesis_2003.pdf

Page 30: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Stack Traces?

Page 31: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Immutable Variables

X = 1.

Page 32: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Immutable Variables

X = 1.

X = 2.

Page 33: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Immutable Variables

X = 1.

X = 2.

X = X + 1.

Page 34: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Fault Identification

Page 35: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Fault detection

Fault Identification

Error Encapsulation

Code upgrade

Stable Storage

The Big SixFrom http://www.erlang.org/download/armstrong_thesis_2003.pdf

Page 36: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Let It Crash

Page 37: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

BEAM!

Page 38: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Faster to create

JVM is not necessarily your friend!

Page 39: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Fault detection

Fault Identification

Error Encapsulation

Code upgrade

Stable Storage

The Big SixFrom http://www.erlang.org/download/armstrong_thesis_2003.pdf

Page 40: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Code Upgrade

Page 41: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Live!

Hot SwappingCode Upgrade

Page 42: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Fault detection

Fault Identification

Error Encapsulation

Code upgrade

Stable Storage

The Big SixFrom http://www.erlang.org/download/armstrong_thesis_2003.pdf

Page 43: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

The Intangibles

Page 44: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

4x – 10x less code

Page 45: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Code Size

Page 46: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Faster to create

4x – 10x less code

Page 47: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Faster to create

Easier to reason about

4x – 10x less code

Page 48: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Faster to create

Easier to reason about

Fewer bugs

4x – 10x less code

Page 49: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Faster to create

Easier to reason about

Fewer bugs

Speedy refactoring

4x – 10x less code

Page 50: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

The Shell is our friend

Page 51: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Live Debugging

Page 52: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Predictability

Page 53: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Performance

Page 54: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
Page 55: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Fault Tolerance - Systems

Page 56: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
Page 57: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Romney 2012

Page 58: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Fault Tolerance - Systems

Page 59: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Error encapsulation

Fault detection

Fault identification

Code upgrade

Stable Storage

The Big Six - Systems

Page 60: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Error encapsulation

Fault detection

Fault identification

Code upgrade

Stable Storage

The Big Six - Systems

Page 61: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Error encapsulation

Fault detection

Fault identification

Code upgrade

Stable Storage

The Big Six - Systems

Page 62: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Loose Coupling?

Page 63: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Breeds Trust

Loose Coupling

Page 64: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Loose Coupling

Page 65: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Breeds Trust

Devote more brainpower to specific areas

Loose Coupling

Page 66: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Loose Coupling

Page 67: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Breeds Trust

Devote more brainpower to specific areas

No. of bugs/line is constant

Loose Coupling

Page 68: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Performance

Page 69: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

60 - 90% of all SW projects fail

10 – 25% of all SW projects get abandoned

Fault Tolerance

Page 70: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
Page 71: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Error encapsulation

Fault detection

Fault identification

Code upgrade

Stable Storage

The Big Six - Systems

Page 72: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Monitoring?

Page 73: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Dashboards

Monitoring?

Page 74: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Dashboards

Out of band systems

Monitoring?

Page 75: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Supervision

Page 76: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Dashboards

Out of band systems

Polyglot safety

Monitoring?

Page 77: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Error encapsulation

Fault detection

Fault identification

Code upgrade

Stable Storage

The Big Six - Systems

Page 78: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Error encapsulation

Fault detection

Fault identification

Code upgrade

Stable Storage

The Big Six - Systems

Page 79: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Concurrency

Error encapsulation

Fault detection

Fault identification

Code upgrade

Stable Storage

The Big Six - Systems

Page 80: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

No battle plan survives contact with the enemy

Page 81: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Not just about Systems

Fault Tolerance

Page 82: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Fault Tolerance

Page 83: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

People

Vendors

Fault Tolerance

Page 84: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

People

Vendors

Fraud

Fault Tolerance

Page 85: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

The BusinessBeware the Black Swan

Page 86: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Is It Safe?

Page 87: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

erlang…

Page 88: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

[email protected] @dieswaytoofastQuestions

Page 89: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Coda

Active Queue Management

Page 90: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Queues

Page 91: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Queues

Page 92: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Queues

Page 93: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Queues

Page 94: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Can you recover quickly?

Buffer-bloat doesn’t matter, right?

Once up, can you deal with the backlog?

Back-pressure isn’t an issue, right?

Queues

Page 95: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Can you recover quickly?

Buffer-bloat doesn’t matter, right?

Once up, can you deal with the backlog?

Back-pressure isn’t an issue, right?

Queues

Page 96: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Programmable

Page 97: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Behavioral

Page 98: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Self Managed

Page 99: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Something’s gotta give

Page 100: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Tail Drop

Page 101: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

God(category – TCP/IP)

Page 102: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

RED

Page 103: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

RED

Page 104: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Newark Airport

Page 105: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

FRED

Page 106: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

RED-PD

Page 107: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

WRED

Page 108: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

RED – Many many more

SRED RRED ARED (and Blue!) CHOKe

Page 109: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

Special Mention

RED in a different Light

Page 111: Erlang - Because s**t Happens by Mahesh Paolini-Subramanya

[email protected] @dieswaytoofastQuestions