Transcript
Page 1: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Wednesday, November 20, 13

Page 2: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Heavy Lifting

ZUHAIB S IDDIQUE • @ZUHAIB • ENGINEER

Wednesday, November 20, 13

Page 3: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Wednesday, November 20, 13

Page 4: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

1. Persistent chat rooms

Wednesday, November 20, 13

Page 5: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

2. File sharing & Chat history

Wednesday, November 20, 13

Page 6: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

3. @mentions + notifications

Wednesday, November 20, 13

Page 7: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

4. Integrations and API

Wednesday, November 20, 13

Page 8: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

5. Runs on everything

Wednesday, November 20, 13

Page 9: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

5. Runs on everything

Wednesday, November 20, 13

Page 10: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

5. Runs on everything

Wednesday, November 20, 13

Page 11: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Group chat and IM for teams.

Wednesday, November 20, 13

Page 12: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

1,000,000,000

messages sent

1,200,000,000

Wednesday, November 20, 13

Page 13: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

{ "id": "b0952da8-faa1-48f7-b1df-a8b2fb24bdfe", "from": { "nick": "Zuhaib Siddique", "group_id": 1, "user_id": 1 }, "room": { "group_id": 1, "name": "testing", "id": 1 }, "stanza_type": "muc_message", "date": "2013-11-14T23:20:13Z 424967", "stanza_data": { "body": "ElasticSearch FTW" }}

What is a HipChat Message?

Wednesday, November 20, 13

Page 14: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

In the beginning there was …

Wednesday, November 20, 13

Page 15: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Then we added...

https://github.com/rnewson/couchdb-luceneWednesday, November 20, 13

Page 16: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

CouchDB + CouchDB-Lucene

•Started to tip over at 200M Docs

•m2.4xlarge

Wednesday, November 20, 13

Page 17: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

CouchDB + CouchDB-Lucene

m2.4xlarge m2.4xlarge

Worked well for the first 500MWednesday, November 20, 13

Page 18: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

m2.4xlarge hs1.8xlarge

Wednesday, November 20, 13

Page 19: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

But it still wasn’t big enough.

Wednesday, November 20, 13

Page 20: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Dont F*ck the Customer

Wednesday, November 20, 13

Page 21: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

First Attempt at Scaling

Wednesday, November 20, 13

Page 22: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Wednesday, November 20, 13

Page 23: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Why ElasticSearch for HipChat

Wednesday, November 20, 13

Page 24: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Why ElasticSearch for HipChat

{ "query_string" : { "default_field" : "content", "query" : "this AND that OR thus" }}

Wednesday, November 20, 13

Page 25: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Why ElasticSearch for HipChat

Wednesday, November 20, 13

Page 26: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Search Error Rate

Wednesday, November 20, 13

Page 27: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Wednesday, November 20, 13

Page 28: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Don’t Forget about CouchDB

AWS Max EBS size

Wednesday, November 20, 13

Page 29: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Stop the CouchDB bleeding

Wednesday, November 20, 13

Page 30: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

CouchDB end of the road

Wednesday, November 20, 13

Page 31: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Wednesday, November 20, 13

Page 32: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

(allthethings) ElasticSearch

{ "_index": "muc-2013.11", "_type": "document", "_id": "b0952da8-faa1-48f7-b1df-a8b2fb24bdfe", "_version": 1, "exists": true, "_source": { "from": { "nick": "Zuhaib Siddique", "group_id": 1, "user_id": 1 }, "room": { "group_id": 1, "name": "testing", "id": 1 }, "stanza_type": "muc_message", "date": "2013-11-14T23:20:13Z 424967", "_id": "b0952da8-faa1-48f7-b1df-a8b2fb24bdfe", "stanza_data": { "body": "ElasticSearch FTW" } }}

{ "id": "b0952da8-faa1-48f7-b1df-a8b2fb24bdfe", "from": { "nick": "Zuhaib Siddique", "group_id": 1, "user_id": 1 }, "room": { "group_id": 1, "name": "testing", "id": 1 }, "stanza_type": "muc_message", "date": "2013-11-14T23:20:13Z 424967", "stanza_data": { "body": "ElasticSearch FTW" }}

ElasticSearch CouchDB

Wednesday, November 20, 13

Page 33: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

(allthethings) ElasticSearch

{ "_index": "muc-2013.11", "_type": "document", "_id": "b0952da8-faa1-48f7-b1df-a8b2fb24bdfe", "_version": 1, "exists": true, "_source": { "from": { "nick": "Zuhaib Siddique", "group_id": 1, "user_id": 1 }, "room": { "group_id": 1, "name": "testing", "id": 1 }, "stanza_type": "muc_message", "date": "2013-11-14T23:20:13Z 424967", "_id": "b0952da8-faa1-48f7-b1df-a8b2fb24bdfe", "stanza_data": { "body": "ElasticSearch FTW" } }}

{ "id": "b0952da8-faa1-48f7-b1df-a8b2fb24bdfe", "from": { "nick": "Zuhaib Siddique", "group_id": 1, "user_id": 1 }, "room": { "group_id": 1, "name": "testing", "id": 1 }, "stanza_type": "muc_message", "date": "2013-11-14T23:20:13Z 424967", "stanza_data": { "body": "ElasticSearch FTW" }}

ElasticSearch CouchDB

Wednesday, November 20, 13

Page 34: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

CouchDB vs ElasticSearchCouchDB Spike

to 800ms!

Avg 100ms with ES

Wednesday, November 20, 13

Page 35: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

master

Running ElasticSearch

clientsHipChat Customer

Thanks Philip O’Toole - Loggly

Wednesday, November 20, 13

Page 36: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

$ fab create_esindex:hostname=esindex-d4

Wednesday, November 20, 13

Page 37: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

•Spin up EC2 Instance• Install Oracle Java 7•Create Provision IOPs EBS• Install and configure ElasticSearch•???•Profit!

Behind the Scenes

Wednesday, November 20, 13

Page 38: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

# Elasticsearchnodes = partial_search(:node, "role:elasticsearch_server AND chef_environment:#{node.chef_environment}", :keys => { 'hostname' => [ 'hostname' ] })if nodes.empty? Chef::Log.error "site.json - No Elasticsearch servers found"else es_nodes = nodes.map {|n| { 'host' => n['hostname'], 'port' => 9200 } } data["elasticsearch"] = { "connections" => es_nodes.sort_by {|n| n['host'] } }end

Wednesday, November 20, 13

Page 39: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

site.json"elasticsearch": { "connections": [ { “host": "esindex-c1", "port": 9200 }, ... { "host": "esindex-e3", "port": 9200 } ]}

Wednesday, November 20, 13

Page 40: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

You

Wednesday, November 20, 13

Page 41: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Running Elasticsearch

Wednesday, November 20, 13

Page 42: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Running ElasticSearch

Single Node OOM!

Wednesday, November 20, 13

Page 43: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Monitor, Monitor, Monitor!

Wednesday, November 20, 13

Page 44: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Backup

Wednesday, November 20, 13

Page 45: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

100,000,000,000?To infinity and beyond!

Wednesday, November 20, 13

Page 46: SF ElasticSearch Meetup - How HipChat Scaled to 1B Messages

Questions?

Wednesday, November 20, 13


Top Related