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

Transcript
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