3. 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
The compute team is responsible for placing the droplet
Configuring it with the right amount of memory, cpu, and hdd
Connecting it with networking
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
DigitalOcean focuses on simplicity. Our goal is to offer the primitives and building blocks that will help you build the most successful product
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?
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….
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….
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...
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.
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….
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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
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
DO Load Balancer
Can configure it to be TCP, HTTP, HTTPS
Uses Health Checks
DO Load Balancer
Can configure it to be TCP, HTTP, HTTPS
Uses Health Checks
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.
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
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
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?
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
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
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
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
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
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.
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