0
Building a Massively Scalable
Cloud Service
from the Grounds Up
Yoav Landman
@yo

dman
avlan

cee tee

github

oh @ J

Frog

/yoav
.com
What Frog?
What Frog?
What Frog?
What Frog?
So…
___________
Some Numbers
liftoff + 5 months
___________
Some Numbers

Users

liftoff + 5 months
7K
___________
Some Numbers

liftoff + 5 months
Users
7K
Packages
70K
___________
Some Numbers

liftoff + 5 months
Users
7K
Packages
70K
Requests
1.2 B/Month
___________
Requirements
___________
Requirements

– Download binaries
___________
Requirements

– Download binaries
– Web Front
___________
Requirements

– Download binaries
– Web FRONT
– REST API
___________
Requirements

– Download binaries
– Web FRONt
– REST API
– Backend services
We know developers
%new_sexy_lang% community
Not our fault! AWS failed again!
Downloads must…
Web application must…
Backend Services must…
Choose your battles...
_________________
Non-Func. Requirements
_________________
Non-Func. Requirements

Requirement RPS Availability
_________________
Non-Func. Requirements

Requirement RPS Availability
Download
10K Always
_________________
Non-Func. Requirements

Requirement RPS Availability
Download
10K Always
Interaction
200 Almost always
_________________
Non-Func. Requirements

Requirement
Download
Interaction
Services

RPS
10K
200
10

Availability
Always
A...
Download Server
No Servlets here
Deduplication by Checksum
File	
  A:	
  46b34	
  

/user-­‐a/repo-­‐z/package-­‐y/file-­‐x	
  

File	
  B:	
  a64ff7	
  

/o...
Flat blobs storage
File	
  A:	
  46b34	
  
File	
  B:	
  a64ff7	
  
Mapping

/user-­‐m/repo-­‐w/package-­‐t/file-­‐f	
  
Web Front
Web Front
Web Framework
___________
Requirements
___________
Requirements

– Rapid Application
Development
___________
Requirements

– Rapid Application
Development
– Flexible schema
___________
Requirements

– Rapid Application
Development
– Flexible schema
– Java Background
___________
Requirements

– Rapid Application
Development
– Flexible schema
– Java Background
– Stateless
________________

Why don’t you just use...?
Framework

Why not?
________________

Why don’t you just use...?
Framework
Why not?
Angular.js Ember.js æж.js Maturity
-	
  
________________

Why don’t you just use...?
Framework
Why not?
Angular.js Ember.js æж.js Maturity
-	
  
Wicket
State
________________

Why don’t you just use...?
Framework
Why not?
Angular.js Ember.js æж.js Maturity
-	
  
Wicket
State
JSF
...
________________

Why don’t you just use...?
Framework
Why not?
Angular.js Ember.js æж.js Maturity
-	
  
Wicket
State
JSF
...
Updated Grails to newer minor
Web Front
Data Model
Remember?
Grails means
Gorm!
Gorm MongoDB plugin
Web Front
Search
Search
2 types of search
Full Text Search

Structured Search
2 types of search
Full Text Search

Structured Search
________________
Executive summary

Framework

Why not?
________________
Executive summary

Framework
Lucene/
compass

Why not?
Only embedded,
resource guzzler
________________
Executive summary

Framework
Lucene/
compass
solr

Why not?
Only embedded,
resource guzzler
Bad grails
in...
________________
Executive summary

Framework
Lucene/
compass
solr
sphynx

Why not?
Only embedded,
resource guzzler
Bad gr...
vs.
vs.
You ask
ElasticSearch answers
Additional Services
Additional Services
Indexes, Statistics, Logs
Also, Redis to the resque
Did they just add a 4th nosql?!
Additional Services
Documentation
DevOps
IaaS vs. SaaS
Leave it to the Pros
SaaS for Download
Service

_________________
Component

SaaS
SaaS for Download
Service

_________________
Component
blob storage

SaaS
SL objectstore
SaaS for Download
Service

_________________
Component
blob storage
mapping

SaaS
SL objectstore
Cloudant
_________________
SaaS for Web and services

Component

SaaS
_________________
SaaS for Web and services

Component
Model

SaaS
Mongohq
_________________
SaaS for Web and services

Component
Model
Grails

SaaS
Mongohq
N/A
_________________
SaaS for Web and services

Component
Model
Grails
ElasticSearch

SaaS
Mongohq
N/A
N/A
_________________
SaaS for Web and services

Component
Model
Grails
ElasticSearch
Redis

SaaS
Mongohq
N/A
N/A
N/A
Physical vs. Virtual
Remember this?
__________

Virtualization
__________

Virtualization
Pros
__________

Virtualization
Pros
–  Cheap
__________

Virtualization
Pros
–  Cheap
–  elastic
__________

Virtualization
Pros
–  Cheap
–  elastic
–  Volatile
__________

Virtualization
Pros
–  Cheap
–  elastic
–  Volatile
cons
__________

Virtualization
Pros
–  Cheap
–  elastic
–  Volatile
cons
–  Overhead
__________

Virtualization
Pros
–  Cheap
–  elastic
–  Volatile
cons
–  Overhead
–  Tenant, not owner
Development Environment
Remember?
We are liberal
We are liberal
We are liberal
We are liberal
The Solution
The Solution
The Solution
The Solution
Chef What?
Opscode Chef
Opscode Chef
Opscode Chef
Opscode Chef
The Solution
The Solution
Vagrant Who?
Vagrant
Vagrant
Vagrant
Vagrant
Vagrant
Development
Development
Development
Development
Ops are part of the DevOps
1.  Vagrant boots centos
on virtualbox
1.  Vagrant boots centos
on virtualbox
2.  Chef installs all db
and service rpms
from private YUM repo
1.  Vagrant boots centos
on virtualbox
2.  Chef installs all db
and service rpms
from private YUM repo
3.  Profit!
High Availability
(And Locality)
Cluster everything
Remember?
CDN for Download Server
GTD for Web Application
Backup
(and Vendor Lock-Out)
Snapshots and replicas
Monitoring
(Servers, State and Logs)
Prevent this:
Going to Production…
Remember?
The Solution
All together now
______________
Conclusions time
______________
Conclusions time

– Define Criticality
______________
Conclusions time

– Define Criticality
– Embrace the change
______________
Conclusions time

– Define Criticality
– Embrace the change
– Plan for scale, but be
realistic
______________
Conclusions time

– Define Criticality
– Embrace the change
– Plan for scale, but be
realistic
– Backup eve...
No, thank you!
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Building a Massively Scalable Cloud Service from the Grounds Up
Upcoming SlideShare
Loading in...5
×

Building a Massively Scalable Cloud Service from the Grounds Up

552

Published on

Serving developer binaries isn’t trivial. Such binaries are consumed by tools ,and create massive request load. Add to that support for metadata, REST API, storage quotas, stats, repo indexes on demand and global HA distribution, and you’ve got yourself a pretty complicated system to run and manage. This talk will show you how Bintray, JFrog’s social binary distribution service, works. We will speak about how the system segmentation supports massive loads across data centers with stateless vertical scaling; how Grails applications scale and how we tie up different NoSQL technologies such as CouchDB, MongoDB, ElasticSearch & Redis; how we chose between physical and virtual servers and how we manage deployments without service interruption.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
552
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Building a Massively Scalable Cloud Service from the Grounds Up"

  1. 1. Building a Massively Scalable Cloud Service from the Grounds Up
  2. 2. Yoav Landman @yo dman avlan cee tee github oh @ J Frog /yoav .com
  3. 3. What Frog?
  4. 4. What Frog?
  5. 5. What Frog?
  6. 6. What Frog?
  7. 7. So…
  8. 8. ___________ Some Numbers liftoff + 5 months
  9. 9. ___________ Some Numbers Users liftoff + 5 months 7K
  10. 10. ___________ Some Numbers liftoff + 5 months Users 7K Packages 70K
  11. 11. ___________ Some Numbers liftoff + 5 months Users 7K Packages 70K Requests 1.2 B/Month
  12. 12. ___________ Requirements
  13. 13. ___________ Requirements – Download binaries
  14. 14. ___________ Requirements – Download binaries – Web Front
  15. 15. ___________ Requirements – Download binaries – Web FRONT – REST API
  16. 16. ___________ Requirements – Download binaries – Web FRONt – REST API – Backend services
  17. 17. We know developers
  18. 18. %new_sexy_lang% community
  19. 19. Not our fault! AWS failed again!
  20. 20. Downloads must…
  21. 21. Web application must…
  22. 22. Backend Services must…
  23. 23. Choose your battles...
  24. 24. _________________ Non-Func. Requirements
  25. 25. _________________ Non-Func. Requirements Requirement RPS Availability
  26. 26. _________________ Non-Func. Requirements Requirement RPS Availability Download 10K Always
  27. 27. _________________ Non-Func. Requirements Requirement RPS Availability Download 10K Always Interaction 200 Almost always
  28. 28. _________________ Non-Func. Requirements Requirement Download Interaction Services RPS 10K 200 10 Availability Always Almost always Most of the time
  29. 29. Download Server
  30. 30. No Servlets here
  31. 31. Deduplication by Checksum File  A:  46b34   /user-­‐a/repo-­‐z/package-­‐y/file-­‐x   File  B:  a64ff7   /org-­‐c/repo-­‐m/package-­‐n/file-­‐k   /user-­‐m/repo-­‐w/package-­‐t/file-­‐f  
  32. 32. Flat blobs storage File  A:  46b34   File  B:  a64ff7  
  33. 33. Mapping /user-­‐m/repo-­‐w/package-­‐t/file-­‐f  
  34. 34. Web Front
  35. 35. Web Front Web Framework
  36. 36. ___________ Requirements
  37. 37. ___________ Requirements – Rapid Application Development
  38. 38. ___________ Requirements – Rapid Application Development – Flexible schema
  39. 39. ___________ Requirements – Rapid Application Development – Flexible schema – Java Background
  40. 40. ___________ Requirements – Rapid Application Development – Flexible schema – Java Background – Stateless
  41. 41. ________________ Why don’t you just use...? Framework Why not?
  42. 42. ________________ Why don’t you just use...? Framework Why not? Angular.js Ember.js æж.js Maturity -  
  43. 43. ________________ Why don’t you just use...? Framework Why not? Angular.js Ember.js æж.js Maturity -   Wicket State
  44. 44. ________________ Why don’t you just use...? Framework Why not? Angular.js Ember.js æж.js Maturity -   Wicket State JSF Model
  45. 45. ________________ Why don’t you just use...? Framework Why not? Angular.js Ember.js æж.js Maturity -   Wicket State JSF Model Non-java No java bg
  46. 46. Updated Grails to newer minor
  47. 47. Web Front Data Model
  48. 48. Remember?
  49. 49. Grails means Gorm!
  50. 50. Gorm MongoDB plugin
  51. 51. Web Front Search
  52. 52. Search
  53. 53. 2 types of search Full Text Search Structured Search
  54. 54. 2 types of search Full Text Search Structured Search
  55. 55. ________________ Executive summary Framework Why not?
  56. 56. ________________ Executive summary Framework Lucene/ compass Why not? Only embedded, resource guzzler
  57. 57. ________________ Executive summary Framework Lucene/ compass solr Why not? Only embedded, resource guzzler Bad grails integration
  58. 58. ________________ Executive summary Framework Lucene/ compass solr sphynx Why not? Only embedded, resource guzzler Bad grails integration No incremental index
  59. 59. vs.
  60. 60. vs.
  61. 61. You ask
  62. 62. ElasticSearch answers
  63. 63. Additional Services
  64. 64. Additional Services Indexes, Statistics, Logs
  65. 65. Also, Redis to the resque
  66. 66. Did they just add a 4th nosql?!
  67. 67. Additional Services Documentation
  68. 68. DevOps
  69. 69. IaaS vs. SaaS
  70. 70. Leave it to the Pros
  71. 71. SaaS for Download Service _________________ Component SaaS
  72. 72. SaaS for Download Service _________________ Component blob storage SaaS SL objectstore
  73. 73. SaaS for Download Service _________________ Component blob storage mapping SaaS SL objectstore Cloudant
  74. 74. _________________ SaaS for Web and services Component SaaS
  75. 75. _________________ SaaS for Web and services Component Model SaaS Mongohq
  76. 76. _________________ SaaS for Web and services Component Model Grails SaaS Mongohq N/A
  77. 77. _________________ SaaS for Web and services Component Model Grails ElasticSearch SaaS Mongohq N/A N/A
  78. 78. _________________ SaaS for Web and services Component Model Grails ElasticSearch Redis SaaS Mongohq N/A N/A N/A
  79. 79. Physical vs. Virtual
  80. 80. Remember this?
  81. 81. __________ Virtualization
  82. 82. __________ Virtualization Pros
  83. 83. __________ Virtualization Pros –  Cheap
  84. 84. __________ Virtualization Pros –  Cheap –  elastic
  85. 85. __________ Virtualization Pros –  Cheap –  elastic –  Volatile
  86. 86. __________ Virtualization Pros –  Cheap –  elastic –  Volatile cons
  87. 87. __________ Virtualization Pros –  Cheap –  elastic –  Volatile cons –  Overhead
  88. 88. __________ Virtualization Pros –  Cheap –  elastic –  Volatile cons –  Overhead –  Tenant, not owner
  89. 89. Development Environment
  90. 90. Remember?
  91. 91. We are liberal
  92. 92. We are liberal
  93. 93. We are liberal
  94. 94. We are liberal
  95. 95. The Solution
  96. 96. The Solution
  97. 97. The Solution
  98. 98. The Solution
  99. 99. Chef What?
  100. 100. Opscode Chef
  101. 101. Opscode Chef
  102. 102. Opscode Chef
  103. 103. Opscode Chef
  104. 104. The Solution
  105. 105. The Solution
  106. 106. Vagrant Who?
  107. 107. Vagrant
  108. 108. Vagrant
  109. 109. Vagrant
  110. 110. Vagrant
  111. 111. Vagrant
  112. 112. Development
  113. 113. Development
  114. 114. Development
  115. 115. Development
  116. 116. Ops are part of the DevOps
  117. 117. 1.  Vagrant boots centos on virtualbox
  118. 118. 1.  Vagrant boots centos on virtualbox 2.  Chef installs all db and service rpms from private YUM repo
  119. 119. 1.  Vagrant boots centos on virtualbox 2.  Chef installs all db and service rpms from private YUM repo 3.  Profit!
  120. 120. High Availability (And Locality)
  121. 121. Cluster everything
  122. 122. Remember?
  123. 123. CDN for Download Server
  124. 124. GTD for Web Application
  125. 125. Backup (and Vendor Lock-Out)
  126. 126. Snapshots and replicas
  127. 127. Monitoring (Servers, State and Logs)
  128. 128. Prevent this:
  129. 129. Going to Production…
  130. 130. Remember?
  131. 131. The Solution
  132. 132. All together now
  133. 133. ______________ Conclusions time
  134. 134. ______________ Conclusions time – Define Criticality
  135. 135. ______________ Conclusions time – Define Criticality – Embrace the change
  136. 136. ______________ Conclusions time – Define Criticality – Embrace the change – Plan for scale, but be realistic
  137. 137. ______________ Conclusions time – Define Criticality – Embrace the change – Plan for scale, but be realistic – Backup everything!
  138. 138. No, thank you!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×