SlideShare a Scribd company logo
1 of 217
Download to read offline
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
Almost always
Most of the time
Download Server
No Servlets here
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	
  
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
Model
________________

Why don’t you just use...?
Framework
Why not?
Angular.js Ember.js æж.js Maturity
-	
  
Wicket
State
JSF
Model
Non-java
No java bg
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
integration
________________
Executive summary

Framework
Lucene/
compass
solr
sphynx

Why not?
Only embedded,
resource guzzler
Bad grails
integration
No incremental index
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 everything!
No, thank you!

More Related Content

What's hot

EnergyCAP Online JSON REST-based API
EnergyCAP Online JSON REST-based APIEnergyCAP Online JSON REST-based API
EnergyCAP Online JSON REST-based API
EnergyCAP, Inc.
 
Updated Resume
Updated ResumeUpdated Resume
Updated Resume
chaunhi
 
01. lab instructions starting project
01. lab instructions   starting project01. lab instructions   starting project
01. lab instructions starting project
rajul14
 

What's hot (20)

EnergyCAP Online JSON REST-based API
EnergyCAP Online JSON REST-based APIEnergyCAP Online JSON REST-based API
EnergyCAP Online JSON REST-based API
 
Lwc presentation
Lwc presentationLwc presentation
Lwc presentation
 
Kafka Connect and KSQL: Useful Tools in Migrating from a Legacy System to Kaf...
Kafka Connect and KSQL: Useful Tools in Migrating from a Legacy System to Kaf...Kafka Connect and KSQL: Useful Tools in Migrating from a Legacy System to Kaf...
Kafka Connect and KSQL: Useful Tools in Migrating from a Legacy System to Kaf...
 
GraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits togetherGraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits together
 
Virtual Flink Forward 2020: Testing production streaming applications - Gyul...
Virtual Flink Forward 2020: Testing production streaming applications -  Gyul...Virtual Flink Forward 2020: Testing production streaming applications -  Gyul...
Virtual Flink Forward 2020: Testing production streaming applications - Gyul...
 
Spring Boot—Production Boost
Spring Boot—Production BoostSpring Boot—Production Boost
Spring Boot—Production Boost
 
IMPROVE YOUR WEBSITE PERFORMANCE WITH ANGULAR JS2
IMPROVE YOUR WEBSITE PERFORMANCE WITH ANGULAR JS2IMPROVE YOUR WEBSITE PERFORMANCE WITH ANGULAR JS2
IMPROVE YOUR WEBSITE PERFORMANCE WITH ANGULAR JS2
 
Integration of mule esb with microsoft azure
Integration of mule esb with microsoft azureIntegration of mule esb with microsoft azure
Integration of mule esb with microsoft azure
 
An Introduction to Lightning Web Components
An Introduction to Lightning Web ComponentsAn Introduction to Lightning Web Components
An Introduction to Lightning Web Components
 
Virtual Flink Forward 2020: Apache Flink Worst Wractices - Konstantin Knauf
Virtual Flink Forward 2020: Apache Flink Worst Wractices - Konstantin KnaufVirtual Flink Forward 2020: Apache Flink Worst Wractices - Konstantin Knauf
Virtual Flink Forward 2020: Apache Flink Worst Wractices - Konstantin Knauf
 
Why UI Developers Love GraphQL - Sashko Stubailo, Apollo/Meteor
Why UI Developers Love GraphQL - Sashko Stubailo, Apollo/MeteorWhy UI Developers Love GraphQL - Sashko Stubailo, Apollo/Meteor
Why UI Developers Love GraphQL - Sashko Stubailo, Apollo/Meteor
 
React and GraphQL at Stripe
React and GraphQL at StripeReact and GraphQL at Stripe
React and GraphQL at Stripe
 
Entity framework (EF) 7
Entity framework (EF) 7Entity framework (EF) 7
Entity framework (EF) 7
 
Introduction to JavaScript for APEX Developers - Module 2: Adding JavaScript ...
Introduction to JavaScript for APEX Developers - Module 2: Adding JavaScript ...Introduction to JavaScript for APEX Developers - Module 2: Adding JavaScript ...
Introduction to JavaScript for APEX Developers - Module 2: Adding JavaScript ...
 
Updated Resume
Updated ResumeUpdated Resume
Updated Resume
 
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
Ingress? That’s So 2020! Introducing the Kubernetes Gateway APIIngress? That’s So 2020! Introducing the Kubernetes Gateway API
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
 
Oracle bi 11.1.1.6.1 and adf integration
Oracle bi 11.1.1.6.1 and adf integrationOracle bi 11.1.1.6.1 and adf integration
Oracle bi 11.1.1.6.1 and adf integration
 
Virtual Flink Forward 2020: Lessons learned on Apache Flink application avail...
Virtual Flink Forward 2020: Lessons learned on Apache Flink application avail...Virtual Flink Forward 2020: Lessons learned on Apache Flink application avail...
Virtual Flink Forward 2020: Lessons learned on Apache Flink application avail...
 
BigdataConference Europe - BigQuery ML
BigdataConference Europe - BigQuery MLBigdataConference Europe - BigQuery ML
BigdataConference Europe - BigQuery ML
 
01. lab instructions starting project
01. lab instructions   starting project01. lab instructions   starting project
01. lab instructions starting project
 

Similar to Building a Massively Scalable Cloud Service from the Grounds Up

Ajuby: Open Source Application Builder
Ajuby: Open Source Application BuilderAjuby: Open Source Application Builder
Ajuby: Open Source Application Builder
mosespaik
 
Building mash ups and simplifying application integration with res tful web s...
Building mash ups and simplifying application integration with res tful web s...Building mash ups and simplifying application integration with res tful web s...
Building mash ups and simplifying application integration with res tful web s...
Md Ahmad Ali
 
Software Engineer_Ravi
Software Engineer_RaviSoftware Engineer_Ravi
Software Engineer_Ravi
ravi vemula
 

Similar to Building a Massively Scalable Cloud Service from the Grounds Up (20)

AWS Community Day Ireland - Building roads and bridges in the last decade of ...
AWS Community Day Ireland - Building roads and bridges in the last decade of ...AWS Community Day Ireland - Building roads and bridges in the last decade of ...
AWS Community Day Ireland - Building roads and bridges in the last decade of ...
 
We don’t need no stinkin app server! Building a Two-Tier Mobile App
We don’t need no stinkin app server! Building a Two-Tier Mobile AppWe don’t need no stinkin app server! Building a Two-Tier Mobile App
We don’t need no stinkin app server! Building a Two-Tier Mobile App
 
What is Server-side Rendering? How to Render Your React App on the Server-sid...
What is Server-side Rendering? How to Render Your React App on the Server-sid...What is Server-side Rendering? How to Render Your React App on the Server-sid...
What is Server-side Rendering? How to Render Your React App on the Server-sid...
 
How to use result from another query in webi hack bo
How to use result from another query in webi   hack boHow to use result from another query in webi   hack bo
How to use result from another query in webi hack bo
 
Angular-ifying Your Visualforce Pages
Angular-ifying Your Visualforce PagesAngular-ifying Your Visualforce Pages
Angular-ifying Your Visualforce Pages
 
Global Logic sMash Overview And Experiences
Global Logic   sMash  Overview And  ExperiencesGlobal Logic   sMash  Overview And  Experiences
Global Logic sMash Overview And Experiences
 
Ajuby: Open Source Application Builder
Ajuby: Open Source Application BuilderAjuby: Open Source Application Builder
Ajuby: Open Source Application Builder
 
Creating a Facebook Clone - Part XVII - Transcript.pdf
Creating a Facebook Clone - Part XVII - Transcript.pdfCreating a Facebook Clone - Part XVII - Transcript.pdf
Creating a Facebook Clone - Part XVII - Transcript.pdf
 
Building mash ups and simplifying application integration with res tful web s...
Building mash ups and simplifying application integration with res tful web s...Building mash ups and simplifying application integration with res tful web s...
Building mash ups and simplifying application integration with res tful web s...
 
UNV Are Dead - How to migrate to UNX in a few simple steps
UNV Are Dead - How to migrate to UNX in a few simple stepsUNV Are Dead - How to migrate to UNX in a few simple steps
UNV Are Dead - How to migrate to UNX in a few simple steps
 
Dreamforce 2015 Session - Angular-ifying your visualforce pages
Dreamforce 2015 Session - Angular-ifying your visualforce pagesDreamforce 2015 Session - Angular-ifying your visualforce pages
Dreamforce 2015 Session - Angular-ifying your visualforce pages
 
Sreerag dot net vs j2ee
Sreerag   dot net vs j2eeSreerag   dot net vs j2ee
Sreerag dot net vs j2ee
 
Primavera integration possibilities Technical overview - Oracle Primavera Col...
Primavera integration possibilities Technical overview - Oracle Primavera Col...Primavera integration possibilities Technical overview - Oracle Primavera Col...
Primavera integration possibilities Technical overview - Oracle Primavera Col...
 
Managing Large Flask Applications On Google App Engine (GAE)
Managing Large Flask Applications On Google App Engine (GAE)Managing Large Flask Applications On Google App Engine (GAE)
Managing Large Flask Applications On Google App Engine (GAE)
 
React for .net developers
React for .net developersReact for .net developers
React for .net developers
 
H2O World - Building a Smarter Application - Tom Kraljevic
H2O World - Building a Smarter Application - Tom KraljevicH2O World - Building a Smarter Application - Tom Kraljevic
H2O World - Building a Smarter Application - Tom Kraljevic
 
Serverless - State of the Union
Serverless - State of the UnionServerless - State of the Union
Serverless - State of the Union
 
Software Engineer_Ravi
Software Engineer_RaviSoftware Engineer_Ravi
Software Engineer_Ravi
 
Mdb dn 2017_14b_cloud_foundry
Mdb dn 2017_14b_cloud_foundryMdb dn 2017_14b_cloud_foundry
Mdb dn 2017_14b_cloud_foundry
 
PDF_Slide__Memodernisasi_aplikasi_Microsoft_Anda_dengan_cepat_di_AWS.pdf
PDF_Slide__Memodernisasi_aplikasi_Microsoft_Anda_dengan_cepat_di_AWS.pdfPDF_Slide__Memodernisasi_aplikasi_Microsoft_Anda_dengan_cepat_di_AWS.pdf
PDF_Slide__Memodernisasi_aplikasi_Microsoft_Anda_dengan_cepat_di_AWS.pdf
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Building a Massively Scalable Cloud Service from the Grounds Up