A Case Study in Using Erlang and Ruby at Rackspace - Erlang Factory

Preview:

Citation preview

A Case Study in UsingErlang and Rubyat Rackspace

PolyglotParallelism

1Thursday, April 19, 12

2Thursday, April 19, 12

FoundationDevelopmentAndAutomationTeam

3Thursday, April 19, 12

F D A A T

4Thursday, April 19, 12

WhatWeDo

5Thursday, April 19, 12

Through automation,Adapt and collaborate

Deliver Software

6Thursday, April 19, 12

Basics

BackupUpdateNew Configs

7Thursday, April 19, 12

Advanced

API backing MyRackspace FWMAPI backing NTaaSAPI for VLAN assignments

8Thursday, April 19, 12

9Thursday, April 19, 12

TheEnvironment

10Thursday, April 19, 12

50,000NetworkDevices

11Thursday, April 19, 12

Firewalls

Cisco ASACisco PixJuniper SRX

12Thursday, April 19, 12

Load

Cisco CSSF5 BigIPBrocade ADX

Balancers

RedHill WebMuxCisco ACE

13Thursday, April 19, 12

Switches

Cisco Catalyst 4948

Cisco Catalyst 2950Cisco Catalyst 2960

14Thursday, April 19, 12

8 Datacenters3 Continents

Asia

North AmericaEurope

15Thursday, April 19, 12

TheChallenges

16Thursday, April 19, 12

Performance

17Thursday, April 19, 12

Transparency

18Thursday, April 19, 12

MultipleDeviceTypes

19Thursday, April 19, 12

ManagementInterfaces

20Thursday, April 19, 12

WhereWeStarted

21Thursday, April 19, 12

MultipleRailsApplications

22Thursday, April 19, 12

MySQL

23Thursday, April 19, 12

VendorDeviceManagers

24Thursday, April 19, 12

3rdPartySolutions

25Thursday, April 19, 12

WhereWeAreToday

26Thursday, April 19, 12

Rails

MongoDB

Erlang

ReST API

Other Clients

NetworkDevices

27Thursday, April 19, 12

Results

Device interactions are fast & reliableFull TransparencyBetter foundation for growth

28Thursday, April 19, 12

29Thursday, April 19, 12

30Thursday, April 19, 12

31Thursday, April 19, 12

Details

32Thursday, April 19, 12

CommandLineAutomation

33Thursday, April 19, 12

Agent

SSH TelnetHTTP

34Thursday, April 19, 12

RubyScripts

35Thursday, April 19, 12

module Hello def say_hello "Hello, World!" endend

GenScript.expose(:hello, Hello)

36Thursday, April 19, 12

{ok, Pid} = gen_script:start(hello, {ruby, “hello.rb”}).

<<"Hello, World!">> =gen_script:call(Pid, hello, [])).

gen_script:stop(Pid).

37Thursday, April 19, 12

BatchJobs

38Thursday, April 19, 12

Runner

CallbackModuleWorkers

39Thursday, April 19, 12

Runner Worker CallbackModule

start

ready

process processready

.

.

.stop

item

40Thursday, April 19, 12

What’sNext

41Thursday, April 19, 12

Rails

MongoDB

Erlang

ReST API

Other Clients

NetworkDevices

42Thursday, April 19, 12

HowWeGotHere

43Thursday, April 19, 12

Objections

Erlang is weirdYou can’t find Erlang programmersIf you use Erlang you will fail

44Thursday, April 19, 12

OpenSource

45Thursday, April 19, 12

Questions

46Thursday, April 19, 12

Twitter: @philtoland

GitHub: github.com/toland

Blog: philtoland.com

47Thursday, April 19, 12

Recommended