SlideShare una empresa de Scribd logo
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!

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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 a 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 a 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
 

Último

Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Último (20)

Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Buy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptxBuy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptx
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 

Building a Massively Scalable Cloud Service from the Grounds Up