Alex MacCaw Alex MacCaw ·

Dealing with Deprecating APIs

From time to time we have to make backwards incompatible changes to our APIs. To make sure everything keeps working for our customers we have a date based API versioning system which works pretty well. However, this does mean that at any point in time we have a lot of...

Read On
Rob Holland Rob Holland ·

Docker & CoreOS - Part 2

In Part 1 of this series we gave you an overview of the deployment process at Clearbit. In this post I'm going to talk about our how we use fleet to run our services. Note: We use Amazon's EC2 system. In this article when I refer to a machine I'm...

Read On
Alex MacCaw Alex MacCaw ·

Docker & CoreOS - Part 1

We use Docker and CoreOS extensively at Clearbit. We have over 70 different internal services running across a cluster of 18 machines on EC2. Every day our servers handle upwards of 1.5 million API calls, and that growth rate is only increasing. All this means being able to scale...

Read On
Alex MacCaw Alex MacCaw ·

PostgreSQL offsets and pagination performance

PostgreSQL is notoriously bad at performing well with high offsets, mainly because it needs to do a full table scan and count all the rows up to the offset. This can be a problem is you want to paginate over a full table without holding all the rows in memory....

Read On
Join 15,000+ Subscribers
Get tactical growth tips once a week
Alex MacCaw Alex MacCaw ·

Rack, CSV streaming, and Ruby's Enumerator

When a response body to a HTTP request gets big it's a good idea to stream it. A classic example of this is a CSV download--while you might get away without streaming for smaller response bodies as soon as the CSV file size is over a few megabytes you're going...

Read On