Top Banner
Viktória Fördős Erlanger @ Cisco NSO Core 5 March 2020, Code BEAM SF Think in Erlang!
26

Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

Aug 10, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

Viktória FördősErlanger @ Cisco NSO Core5 March 2020, Code BEAM SF

Think in Erlang!

Page 2: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Which programming language was the first you learnt?

Java

Pascal

C

Basic

Page 3: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Which programming language was the first you used professionally?

Python

C/C++

PHP

JavaCobol

Page 4: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Which programming language do you work with?

Erlang

Elixir

Other

Page 5: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Imperative paradigm

Page 6: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public

Statements, describing how to execute the program.

Goal is achieved through statechanges.

Focus is on the control flow.

Imperative

Page 7: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Is Erlang an imperative programming language?

Page 8: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Declarative paradigm

Page 9: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public

What we learn first• High level

• Quick prototyping & testing

• No mutable objects

Page 10: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public

Next, we learn• Lambda calculus

• Function application• Function abstraction• Function composition• Higher order functions• Fix point theorem

Page 11: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

DataData Data

DataData

Data

DataDataData

Data

DataData

Data

Data DataData

Data DataData Data

DataDataData

Data

Data

Page 12: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Function f: X -> Y

Input x

Output y = f(x)

IO model

Page 13: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public

i(A, h(f(A), g(A)))

Data Transformation Function A

CB

D

E

B = f(A),

C = g(A),D = h(B, C),E = i(A, D)

Page 14: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Erlang

Page 15: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public

Based on data dependencies

Concurrency

Page 16: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public

Evaluates a function.

Has its own world.

Uses signals to communicate with the outside world.

Process

Page 17: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public

Network is not always reliable. Things will fail. “Let it crash!”

Distributed

Page 18: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Think in Erlang

Process

DistributionEmbrace failure Function

Data IO model

Page 19: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Case Study

Page 20: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

Intent-BasedTools

DevOps CI/CDPipeline

OSS/BSSSystems

Scripts andApplication

ServiceOrchestration

Page 21: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public

Network Services

VPNs, ACLs.

Page 22: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public

The problem

Service lifecycle management.

Page 23: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public

NSO needs

• Service model – IO model

• Mapping from service input parameters to actual device configuration. - Data transformation function.

Service lifecycle management: create, update, delete.

NSO way

Page 24: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Tail-f FASTMAP algorithm

to network

DELETE

NSO API

UNDO

NSO CORE

CREATE

NSO API

User code - CREATE

NSO CORE

UNDO

to network

NSO API

UPDATE

UNDO

User code - CREATE

NSO CORE

NEW UNDO

to network

Page 25: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Tail-f Reactive FASTMAP algorithm

NSO API

UPDATE

UNDO

User code - CREATE

NSO CORE

NEW UNDO

to network

Page 26: Think in Erlang! - codesync.global€¦ · © 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF Which programming language do you work with? Erlang Elixir

© 2020 Cisco and/or its affiliates. All rights reserved. Cisco Public #CodeBEAMSF

Think in Erlang

Process

DistributionEmbrace failure Function

Data IO model