20000 Leagues Under the Sea: Diving Into the Slack Infrastructure

Post on 06-Apr-2017

29 views 3 download

Transcript of 20000 Leagues Under the Sea: Diving Into the Slack Infrastructure

20,000 Leagues Under the Sea:

Diving into the Slack Infrastructure

Raissa Largman, Infrastructure Engineer

Infrastructure Hunger Games Champion 2017

Java backend developer

Been at Slack since January 2016

Who is Raissa?

Agenda:

1.Past - Where did we embark from for this voyage?

2.The problem - The kraken3.Present - How are we fighting off the kraken?

4.Future - Building armor against future krakens

5.Q&A

Part 1:In the Beginning

Message Server

Basic Architecture

Your client#team-backend-

servicesWebapp / Database

Sending a Message (MS1.0)

Message Server

Going Over the Socket (MS1.0)

Your client#team-backend-services

Message Server

Other People See the Message (MS1.0)

Your client#team-backend-services

Julia#team-backend-services

Serguei#team-backend-services

Message Server

Saving in the Database (MS1.0)

Webapp / Database

Message Server 1

Message Server Expansion

Clients Webapp / Database

Message Server 2

Message Server 3

...

Enterprise Grid

Enterprise Shared Channels

Message Server (Team 1)

Going Over the Socket (MS1.0)

Your client#announcements-global

(shared)

Message Server (Team 1)

Other People See the Message (MS1.0)

Your client#announcements-global

Juan Local#announcements-global

Susan B. Enterprise#annoucements-global

Message Server (Team 2)

Message Server (Team 1)

Other People See the Message (MS1.0)

Your client#announcements-global

Juan Local#announcements-global

Susan B. Enterprise#annoucements-global

Message Server (Team 2)

Message Server (Team 1)

Other People See the Message (MS1.0)

Your client#announcements-global

Juan Local#announcements-global

Susan B. Enterprise#annoucements-global

Message Server (Team 2)

Message Server (Team 1)

Saving in the Database (MS1.0)

Webapp / Database

Message Server (Team 2)

{

"team_id":"T6789",

"ms_host":"ms101",

"shared_channels":[

"C111":["T1234","T4567","T6789"],

"C234":["T4567","T6789"],

"C346":["T1234","T6789"],

...

]

}

Team Meta

Part 2:Current State of Affairs

Deploy Confidence

Scaling - Enterprise Shared Channels

“Second System Syndrome”

Why Create the Hybrid MS1.5?

Sending a Message (MS1.5)

Message Server (Nautilus)

Going Over the Socket (MS1.5)

Your client#announcements-global

(shared)

Message Server (Nautilus)

Passing to the Channel Server (MS1.5)

Channel Server (#announcements-

global)

Message Server (Nautilus)

Passing back to Message Servers (MS1.5)

Channel Server (#announcements-

global)

Message Server (Yellow Submarine)

Channel Server (#announcements-

global)

Saving in the Database (MS1.5)

Webapp / Database

Message Server (Nautilus)

Other People See the Message (MS1.5)

Your client#announcements-global

Jules Verne#announcements-global

John Lennon#annoucements-global

Message Server (Yellow Submarine)

Bonus Benefit (MS1.5)

Consul

Admin ServerChannel Servers

Part 3:The Future™

1 server becomes 4

MS2.0

Admin Server

Admin Server

Webapp / Database

Gateway Server

Gateway Server

Clients

Presence Server

Presence Server

Gateway ServerAdmin Server

Functionality is the same

MS1.0

Message Server (MS)

Channel Server (CS) Admin Server (AS) Presence Server

(PS)Gateway Server

(GS)

MS2.0

Q&A

Thanks!

Got questions? raissa@slack-corp.com