SlideShare a Scribd company logo
Scaling to Millions
Ray Ramjiawan
Software Engineer
February 2017
Ray Ramjiawan
2
ray@do.co
@rayram23
About DigitalOcean
The cloud for developers
DigitalOcean is an IaaS company that
delivers the fastest and easiest way
for developers and businesses to
deploy and scale their applications in
the cloud.
We’re are building for the needs of
the developer because we believe
that they are the future.
2011
founded in New York City
285+
employees
750K+
registered customers
30M+
Droplets (cloud servers)
launched to date
$123M+
funding raised
2nd
largest and fastest
growing cloud provider
according to Netcraft
Our Investors
Company Facts
3
Our Mission
4
Simplify infrastructure and
create an experience that
developers love.
5
6
Where do we start?
8
9
Single Server Architecture
Application Server
SQL DB
User Content
Cache
Where do we run our application?
Hatch  the build blocks; scaling to millions v.1
Hatch  the build blocks; scaling to millions v.1
13
14
15
16
17
Full Cache
Public Release
Random Cat
of the Day
Full Disk
Today
Recommended
Cats
18
Resize
● 64GB RAM
● 640GB SSD
● Droplet Unchanged
High Memory
● 224 GB RAM
● 500GB SSD
● Brand New Instance
19
Application Deployment
20
Hatch  the build blocks; scaling to millions v.1
Hatch  the build blocks; scaling to millions v.1
Hatch  the build blocks; scaling to millions v.1
Hatch  the build blocks; scaling to millions v.1
Hatch  the build blocks; scaling to millions v.1
26
27
● Add to a running droplet
● Live resizable
● Built in Alerting
● Preconfigured up to 16TB
Block storage
28
Demo Time
30
Application Server
High Memory /
Cache
Block Storage
32
Service Discovery
33
Droplet Tagging
34
Load Balancers
35
Application Server
High Memory /
Cache
Block Storage
37
38
39
40
41
Droplet Creation
Resizing
Monitoring and Agent
Floating IPs
Snapshots and Backups
High Memory
Tagging
Load Balancer
42
Pro Tips
43
Graphs > Logs
44
45
Don’t Scale
(too soon)
46
Trace Everything
5s
48

More Related Content

PDF
Atlassian
PPTX
Company presontation
PDF
How Mentor Graphics Uses Google Cloud for the Internet of Things - Mentor Gra...
PPTX
Azure IPaaS: Integration Evolved! (Glenn Colpaert @TechdaysNL 2017)
PDF
Introducing App Engine for Business
PDF
Automating security in aws with divvy cloud
PPTX
Cloud integration: what's in it for you? (Toon Vanhoutte & Massimo Crippa at ...
PPTX
Deploy a secure website with AWS and Owasp
Atlassian
Company presontation
How Mentor Graphics Uses Google Cloud for the Internet of Things - Mentor Gra...
Azure IPaaS: Integration Evolved! (Glenn Colpaert @TechdaysNL 2017)
Introducing App Engine for Business
Automating security in aws with divvy cloud
Cloud integration: what's in it for you? (Toon Vanhoutte & Massimo Crippa at ...
Deploy a secure website with AWS and Owasp

What's hot (19)

PPTX
Enhancing web applications with cloud intelligence
PPTX
Hybrid integration and the power of Azure services (Jon Fancey at CONNECT17)
PPTX
Working With Containers In The Enterprise
PDF
OWF13 - October 3 - Raphael Ferreira
PDF
Why Docker, Why Now?
PPTX
MongoDB World 2016: Lunch & Learn: Google Cloud for the Enterprise
PPTX
ironSource Atom BigData New-York
PPTX
ironSource Atom BigData Berlin
PPTX
Pivoting to Cloud: How an MSP Brokers Cloud Services
PPTX
Discover how the cloud will empower every organization on the planet to achie...
PDF
Search for All with Elastic Workplace Search
PPTX
Cloud Native Demystified: Build Once, Run Anywhere!
PDF
Cloud Con 2015 - Integration & Web APIs
PPTX
[Webinar] When It Comes To Cloud, Great Power Brings Great Responsibility
PDF
Application Evolution Strategy
PPTX
Cloud computing
PPTX
Analytics in the Cloud: Getting The Most Out Of Analytics Deployments
PDF
Search for All with Elastic Workplace Search
PDF
BizTalk Server 2016: What's new (por Mariano Robles)
Enhancing web applications with cloud intelligence
Hybrid integration and the power of Azure services (Jon Fancey at CONNECT17)
Working With Containers In The Enterprise
OWF13 - October 3 - Raphael Ferreira
Why Docker, Why Now?
MongoDB World 2016: Lunch & Learn: Google Cloud for the Enterprise
ironSource Atom BigData New-York
ironSource Atom BigData Berlin
Pivoting to Cloud: How an MSP Brokers Cloud Services
Discover how the cloud will empower every organization on the planet to achie...
Search for All with Elastic Workplace Search
Cloud Native Demystified: Build Once, Run Anywhere!
Cloud Con 2015 - Integration & Web APIs
[Webinar] When It Comes To Cloud, Great Power Brings Great Responsibility
Application Evolution Strategy
Cloud computing
Analytics in the Cloud: Getting The Most Out Of Analytics Deployments
Search for All with Elastic Workplace Search
BizTalk Server 2016: What's new (por Mariano Robles)
Ad

Similar to Hatch the build blocks; scaling to millions v.1 (20)

PPTX
What is DigitalOcean_.pptx
PDF
Digitalocean
PPTX
Mohan Ram Workshop - Growth Levers for Scaling Your Company Lessons from Digi...
PPTX
Mohan Ram Workshop - Growth Levers for Scaling Your Company Lessons from Digi...
PDF
Digital Ocean Accounts quan tity.pdf
PDF
Doing This Cloud Thing Right – a Lap Around DigitalOcean Products and a Roadm...
PPTX
Microservices kept simple
PDF
Stacks Cloud - Digital Ocean
PDF
Scaling on DigitalOcean
PPTX
Scale as a Competitive Advantage
PDF
Build Apps Faster With DigitalOcean App Platform
PPTX
Tectonic Summit 2016: Betting on Kubernetes
PDF
Is it Time to Move Your Enterprise to the Cloud
PPTX
Presentation.pptx
PDF
stackconf 2023 | How to survive Cloud – An Ops perspective by Katharina Somme...
PDF
Combining Cloud Native & PaaS: Building a Fully Managed Application Platform ...
PDF
Cloud Computing - Making IT Simple
PPTX
Cloud Expo NYC 2017: Big Data in IoT
PDF
Building an Autoscaler for DigitalOcean - DevOps Days Denver 2015
PDF
20180522 infra autoscaling_system
What is DigitalOcean_.pptx
Digitalocean
Mohan Ram Workshop - Growth Levers for Scaling Your Company Lessons from Digi...
Mohan Ram Workshop - Growth Levers for Scaling Your Company Lessons from Digi...
Digital Ocean Accounts quan tity.pdf
Doing This Cloud Thing Right – a Lap Around DigitalOcean Products and a Roadm...
Microservices kept simple
Stacks Cloud - Digital Ocean
Scaling on DigitalOcean
Scale as a Competitive Advantage
Build Apps Faster With DigitalOcean App Platform
Tectonic Summit 2016: Betting on Kubernetes
Is it Time to Move Your Enterprise to the Cloud
Presentation.pptx
stackconf 2023 | How to survive Cloud – An Ops perspective by Katharina Somme...
Combining Cloud Native & PaaS: Building a Fully Managed Application Platform ...
Cloud Computing - Making IT Simple
Cloud Expo NYC 2017: Big Data in IoT
Building an Autoscaler for DigitalOcean - DevOps Days Denver 2015
20180522 infra autoscaling_system
Ad

Recently uploaded (20)

PDF
medical staffing services at VALiNTRY
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
AI in Product Development-omnex systems
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
System and Network Administration Chapter 2
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Understanding Forklifts - TECH EHS Solution
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
Introduction to Artificial Intelligence
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Nekopoi APK 2025 free lastest update
PPTX
history of c programming in notes for students .pptx
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
medical staffing services at VALiNTRY
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
How Creative Agencies Leverage Project Management Software.pdf
AI in Product Development-omnex systems
Which alternative to Crystal Reports is best for small or large businesses.pdf
2025 Textile ERP Trends: SAP, Odoo & Oracle
How to Migrate SBCGlobal Email to Yahoo Easily
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
System and Network Administration Chapter 2
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
VVF-Customer-Presentation2025-Ver1.9.pptx
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Understanding Forklifts - TECH EHS Solution
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Introduction to Artificial Intelligence
Design an Analysis of Algorithms I-SECS-1021-03
Nekopoi APK 2025 free lastest update
history of c programming in notes for students .pptx
Upgrade and Innovation Strategies for SAP ERP Customers

Hatch the build blocks; scaling to millions v.1

Editor's Notes

  • #3: The compute team is responsible for placing the droplet Configuring it with the right amount of memory, cpu, and hdd Connecting it with networking
  • #4: DigitalOcean is a IaaS provider What does that mean That means when you need hardware to run your applications there is no need to manage that on your own Never need to place an order for more memory or a bigger HD, etc DO runs software on a fleet of thousands of hypervisors that can provide the hardware that you need with flexibility
  • #5: DigitalOcean focuses on simplicity. Our goal is to offer the primitives and building blocks that will help you build the most successful product
  • #6: DigitalOcean has some great products We won’t be able to get to all of them today so feel free so shoot me an email or grab me after the talk to ask any questions you may have. In my opinion just telling you about the products won’t really tell you about their best uses Instead we will walk through a new product we are building and introduce scenarios where using digital ocean as your infrastructure provider proves to be most beneficial So lets start a company, we hit some bumps in the road, put out some fires and grow our company to a global scale that can will support millions of users Following this ill leave some time at the end for lessons learned during my time at DO and working with large scale distributed systems in general And some time for questions at the end So where do we start?
  • #7: We get started like any other company does. With a great idea! You get this amazing idea. You do some research and realize no one else is doing this. You vet your idea to some close friends So what do you do? How do you get started? Well If you’re anything like me….
  • #8: We get started like any other company does. With a great idea! You get this amazing idea. You do some research and realize no one else is doing this. You vet your idea to some close friends So what do you do? How do you get started? Well If youre anything like me….
  • #9: You run to your computer and quickly slap something together to see what can get done and possibly garner some interest for prospective investors This leads me into a bit of who this talk is for today If you are an engineer this talk is for you. If you are not an engineer dont feel intimidated. This talk will stay at a high level and at the end we have time to answer any questions. So you spend some hours coding.. You write some unit tests (hopefully) and even some integration tests.. And you wind up with something that looks like this...
  • #10: After hours and possibly days of coding your architecture looks something like this. An application server that customers can connect to. And a Database that can store all of your data. Your application server has many purposes. It stores and retrieves data from your database. It does some business logic. Hosts you static content like images. CSS, and java script files. And it Works. Most importantly this setup works. And lets say theortically this supports 200 concurrent users.
  • #11: We get started like any other company does. With a great idea! You get this amazing idea. You do some research and realize no one else is doing this. You vet your idea to some close friends So what do you do? How do you get started? Well If youre anything like me….
  • #12: After hours and possibly days of coding your architecture looks something like this. An application server that customers can connect to. And a Database that can store all of your data. Your application server has many purposes. It stores and retrieves data from your database. It does some business logic. Hosts you static content like images. CSS, and java script files. And it Works. Most importantly this setup works. And lets say theortically this supports 200 concurrent users.
  • #13: After hours and possibly days of coding your architecture looks something like this. An application server that customers can connect to. And a Database that can store all of your data. Your application server has many purposes. It stores and retrieves data from your database. It does some business logic. Hosts you static content like images. CSS, and java script files. And it Works. Most importantly this setup works. And lets say theortically this supports 200 concurrent users.
  • #14: The first product i would like to introduce today is graphs Graphs can provide deep insights into your running droplet, provides cpu, disk i/o, memory utilization, and bandwidth utilization. With more to come. Allows real time alerting via slack and email Using graphs we were able to verify that we can support 200 concurrent users. That seems like a good place to start for our product.
  • #15: The first product i would like to introduce today is graphs Graphs can provide deep insights into your running droplet, provides cpu, disk i/o, memory utilization, and bandwidth utilization. With more to come. Allows real time alerting via slack and email Using graphs we were able to verify that we can support 200 concurrent users. That seems like a good place to start for our product.
  • #16: The first product i would like to introduce today is graphs Graphs can provide deep insights into your running droplet, provides cpu, disk i/o, memory utilization, and bandwidth utilization. With more to come. Allows real time alerting via slack and email Using graphs we were able to verify that we can support 200 concurrent users. That seems like a good place to start for our product.
  • #17: The first product i would like to introduce today is graphs Graphs can provide deep insights into your running droplet, provides cpu, disk i/o, memory utilization, and bandwidth utilization. With more to come. Allows real time alerting via slack and email Using graphs we were able to verify that we can support 200 concurrent users. That seems like a good place to start for our product.
  • #18: As a visual aid, here is a graph of your daily active users with projections you have done Some killer features you have added consistently bring on more users so we can project out You are even in talks with some other start ups and small companies to offer your product to them But wait… We know we can only support 200 concurrent users.. What do we do when we go above that number. No way we can afford to lose the customers we just added At this point our system going down is just not allowed
  • #19: Well lets just make our droplet larger. We have two options. The first is a simple resize You can resize your droplets memory and CPU all the way up to 64GB and 20 CPUs Droplet is unchanged. Networking stays the same, file system untouched. Our Second option Is a move to one of our high memory plans Up to 224 GB of memory and 32 Cores Since we are going with a new instance by using high memory plans, let’s take this opportunity to address some pain points with our current setup Every Time we deploy our code we have to stop our application. Deploy the new code.
  • #20: Well lets just make our droplet larger. We have two options. The first is a simple resize You can resize your droplets memory and CPU all the way up to 64GB and 20 CPUs Droplet is unchanged. Networking stays the same, file system untouched. Our Second option Is a move to one of our high memory plans Up to 224 GB of memory and 32 Cores Since we are going with a new instance by using high memory plans, let’s take this opportunity to address some pain points with our current setup Every Time we deploy our code we have to stop our application. Deploy the new code.
  • #21: Well lets just make our droplet larger. We have two options. The first is a simple resize You can resize your droplets memory and CPU all the way up to 64GB and 20 CPUs Droplet is unchanged. Networking stays the same, file system untouched. Our Second option Is a move to one of our high memory plans Up to 224 GB of memory and 32 Cores Since we are going with a new instance by using high memory plans, let’s take this opportunity to address some pain points with our current setup Every Time we deploy our code we have to stop our application. Deploy the new code.
  • #22: Floating IPs Floating IPs allow you to point traffic to a another droplet without having to update DNS. Clients never know anything has changed Now we can stand up a new instance of our application. Run some integration tests, and when we we believe everything is ok, move all traffic over to our newly deployed code.
  • #23: Floating IPs Floating IPs allow you to point traffic to a another droplet without having to update DNS. Clients never know anything has changed Now we can stand up a new instance of our application. Run some integration tests, and when we we believe everything is ok, move all traffic over to our newly deployed code.
  • #24: Floating IPs Floating IPs allow you to point traffic to a another droplet without having to update DNS. Clients never know anything has changed Now we can stand up a new instance of our application. Run some integration tests, and when we we believe everything is ok, move all traffic over to our newly deployed code.
  • #25: Floating IPs Floating IPs allow you to point traffic to a another droplet without having to update DNS. Clients never know anything has changed Now we can stand up a new instance of our application. Run some integration tests, and when we we believe everything is ok, move all traffic over to our newly deployed code.
  • #26: Floating IPs Floating IPs allow you to point traffic to a another droplet without having to update DNS. Clients never know anything has changed Now we can stand up a new instance of our application. Run some integration tests, and when we we believe everything is ok, move all traffic over to our newly deployed code.
  • #27: Received an alert that your disk is full After some investigation you realize it is because of user uploaded assets Even causing your application server to crash! No time to fix this as the meeting is starting soon and your prod instance is also there for your demo How do you quickly add more disk space to your droplet?
  • #28: Use Block storage We can quickly add a new volume to our running droplet Update configuration to point to newly mounted volume Start to take a hard look at our system A single instance going down because of disk space is simply not allowed.
  • #30: Up until now we have been able to increase the size of our single machine to account for new users. This is called vertical scaling or scaling up. The problem with this approach is that we will ultimately hit some limitation. That limitation is ultimately imposed by having everything running on a single machine. Machines can physically only have so much RAM and CPU. They can only support so many Network cards that give you more bandwidth.
  • #31: Use Block storage We can quickly add a new volume to our running droplet Update configuration to point to newly mounted volume Start to take a hard look at our system A single instance going down because of disk space is simply not allowed.
  • #32: Up until now we have been able to increase the size of our single machine to account for new users. This is called vertical scaling or scaling up. The problem with this approach is that we will ultimately hit some limitation. That limitation is ultimately imposed by having everything running on a single machine. Machines can physically only have so much RAM and CPU. They can only support so many Network cards that give you more bandwidth.
  • #33: With tagging, whenever a droplet is created we can tag it as our db replica or an instance of our application server. This makes it easy when our application server needs a connection to a db replica. Just query the tags api for droplets that have the tag they need. We can automatically update the load balancer when it was created using tags! This allows our clients to always be routed to available application servers
  • #34: With tagging, whenever a droplet is created we can tag it as our db replica or an instance of our application server. This makes it easy when our application server needs a connection to a db replica. Just query the tags api for droplets that have the tag they need. We can automatically update the load balancer when it was created using tags! This allows our clients to always be routed to available application servers
  • #35: DO Load Balancer Can configure it to be TCP, HTTP, HTTPS Uses Health Checks
  • #36: DO Load Balancer Can configure it to be TCP, HTTP, HTTPS Uses Health Checks
  • #37: Up until now we have been able to increase the size of our single machine to account for new users. This is called vertical scaling or scaling up. The problem with this approach is that we will ultimately hit some limitation. That limitation is ultimately imposed by having everything running on a single machine. Machines can physically only have so much RAM and CPU. They can only support so many Network cards that give you more bandwidth.
  • #40: With tagging, whenever a droplet is created we can tag it as our db replica or an instance of our application server. This makes it easy when our application server needs a connection to a db replica. Just query the tags api for droplets that have the tag they need. We can automatically update the load balancer when it was created using tags! This allows our clients to always be routed to available application servers
  • #41: With tagging, whenever a droplet is created we can tag it as our db replica or an instance of our application server. This makes it easy when our application server needs a connection to a db replica. Just query the tags api for droplets that have the tag they need. We can automatically update the load balancer when it was created using tags! This allows our clients to always be routed to available application servers
  • #42: DigitalOcean has some great products We won’t be able to get to all of them today so feel free so shoot me an email or grab me after the talk to ask any questions you may have. In my opinion just telling you about the products won’t really tell you about their best uses Instead we will walk through a new product we are building and introduce scenarios where using digital ocean as your infrastructure provider proves to be most beneficial So lets start a company, we hit some bumps in the road, put out some fires and grow our company to a global scale that can will support millions of users Following this ill leave some time at the end for lessons learned during my time at DO and working with large scale distributed systems in general And some time for questions at the end So where do we start?
  • #43: With tagging, whenever a droplet is created we can tag it as our db replica or an instance of our application server. This makes it easy when our application server needs a connection to a db replica. Just query the tags api for droplets that have the tag they need. We can automatically update the load balancer when it was created using tags! This allows our clients to always be routed to available application servers
  • #44: With tagging, whenever a droplet is created we can tag it as our db replica or an instance of our application server. This makes it easy when our application server needs a connection to a db replica. Just query the tags api for droplets that have the tag they need. We can automatically update the load balancer when it was created using tags! This allows our clients to always be routed to available application servers
  • #45: With tagging, whenever a droplet is created we can tag it as our db replica or an instance of our application server. This makes it easy when our application server needs a connection to a db replica. Just query the tags api for droplets that have the tag they need. We can automatically update the load balancer when it was created using tags! This allows our clients to always be routed to available application servers
  • #46: With tagging, whenever a droplet is created we can tag it as our db replica or an instance of our application server. This makes it easy when our application server needs a connection to a db replica. Just query the tags api for droplets that have the tag they need. We can automatically update the load balancer when it was created using tags! This allows our clients to always be routed to available application servers
  • #47: With tagging, whenever a droplet is created we can tag it as our db replica or an instance of our application server. This makes it easy when our application server needs a connection to a db replica. Just query the tags api for droplets that have the tag they need. We can automatically update the load balancer when it was created using tags! This allows our clients to always be routed to available application servers
  • #48: Up until now we have been able to increase the size of our single machine to account for new users. This is called vertical scaling or scaling up. The problem with this approach is that we will ultimately hit some limitation. That limitation is ultimately imposed by having everything running on a single machine. Machines can physically only have so much RAM and CPU. They can only support so many Network cards that give you more bandwidth.
  • #49: With tagging, whenever a droplet is created we can tag it as our db replica or an instance of our application server. This makes it easy when our application server needs a connection to a db replica. Just query the tags api for droplets that have the tag they need. We can automatically update the load balancer when it was created using tags! This allows our clients to always be routed to available application servers