Perfect Images on Any Social Network, Accessibility Focus and Our Journey With Kubernetes

Buffer Engineering Report

October 2016

Requests for buffer.com

206 m +4%

Avg. response for buffer.com

280 ms +4.8%

Requests for api.bufferapp.com

1.06 b +1.9%

Avg. response for api.bufferapp.com

98 ms +12.7%

Code reviews
given

66% of pull requests -2%

Bugs & Quality

  • 13 S1 (severity 1) bugs: 2 opened, 11 closed (84% smashed)
  • 16 S2 (severity 2) bugs: 5 opened, 11 closed (68% smashed)

Buffer images are now the right size for every social network!

Mike has rolled out our new image resizing service to all of our users at this point, and we’re majorly excited!

The new service resizes images to the correct size for each social network (rather than the smallest size) so you can post one image to multiple social media platforms and feel confident it’ll look great everywhere.

Image uploads were starting to become more and more of a pain point for our users, and rolling out a reliable, scalable solution that makes sharing to Buffer that much more frictionless is a major win.

Focusing on accessibility at Buffer

Emily has been championing accessible engineering over the past few months and October saw continued development on a Alt Text tool for Twitter that will help Buffer to reach and empower more users. We’re excited to launch this when it is ready!

Emily also shared learnings at JSConf Colombia, where she gave a workshop on tools that can help monitor and address accessibility issues – you can check out her slides here! We’re so proud of the important work she’s doing to make Buffer a truly inclusive product and community.

A new way to use Buffer for Business

Coming soon to a Business account near you: Organizational Admin, a major leap forward for Business users!

With the new Admin portal built out by Alex, Hamish, José and Dan, Business users can create an organization to which social media accounts and team members belong, and designate admins for their Buffer organization.

This means Business users no longer need to have Buffer set up and belonging to an individual user, which caused headaches when the ‘main user’ switched jobs or went on vacation.

Mobile: Android reliability and Apple Touch ID

On Android, Marcus and Joe have been focusing on rewriting our Composer, a vital part of the Buffer experience! It’s coming along really nicely, and will be out in our beta program quite soon. Bufferoos are testing internally with all our devices and giving the tires a good kick!

In order to improve the device registration process, they’re also investigating moving from Google Cloud Messaging (GCM) to Firebase Cloud Messaging. GCM was failing for some users, causing them not to receive push notifications. This move means no more missed notifications on your Android phone!

On iOS, Andy and Jordan have been working on introducing Touch ID to the iOS app which we will be shipping with v6.1 to allow you to make your Buffer account even more secure on the go. Now, if you’re away from your phone for a bit leaving Buffer open, we’ll log you in again with Touch ID. Here’s to keeping those updates nice and safe!

Andy and Jordan also spent a bunch of time improving our In-App Subscription logic and rewrote the logic to resolve various issues we were seeing with iOS 10, and are rewriting the media picker in AsyncDisplayKit (ASDK.)

Finally, check out this enticing preview of 3D Touch approvals of Buffer contributions! (Coming in November!)

Lessons from our Kubernetes journey

Key stats
Pods: 111 (up from 45)
Nodes: 8 (up from 7)
Deployments: 69 (as of 10/27)

Harrison shared some great insights on load testing and setting memory and cpu limits in kubernetes (i.e. the stuff you should be worrying about after you’ve got your service deployed) – you can check out the slides for his SnackChat (our internal knowledge-sharing chats) here.

As we’re moving more and more services over, we’re handling larger traffic volumes on Kubernetes and load testing, canary deploys and proper resource limits are a critical part of shipping a reliable and predictable production service.

Dan spoke about how we’re using Kubernetes in production at the Kubernetes NYC Meetup and building Node.js microservices with Docker at the Node.js NYC Meetup – check out the slides!

Adnan created a new Kubernetes deployment app that is part Slackbot, part continuous integration controller.

This makes it so much easier to deploy our services to Kubernetes smoothly because both deploys and rollbacks are triggered via a simple Slack slash command, which tells our CI/CD server what docker images to build and where to deploy them on our cluster.

(Curious to learn more what Kubernetes is and why it’s awesome? We love The Children’s Illustrated Guide to Kubernetes for a quick explanation.)

Team updates: Weddings and public speaking!

We’re thrilled that in October, both Niel and Steven got married! Congratulations!

Joe shared how he overcame his fears of public speaking to now regularly talks at conferences like DroidCon in this awesome post.

Over to you

Is there anything you’d love to learn more about? Anything we could share more of? We’d love to hear from you in the comments!

Check out more reports from October 2016: