speaker-page

Nick DiRienzo, Vinay Tota

Nick DiRienzo is a software engineer at Optimizely. He enjoys writing code in Python, making developers’ lives better, and eating Mission burritos.

Vinay Tota is currently a member of the Application Platform team at Optimizely. A long time ago wanted to be a theoretical physicist but now has way more fun hacking code. More recently he's worked on building high throughput low latency systems for ad serving using Python.

Speaker home page

How Optimizely Scaled its REST API with Asyncio

Fundamentals, Intermediate
8/12/2017 | 3:15 PM-4:15 PM | HouseCanary Room

Description

With developers, an awesome product isn’t everything, or at least we found that out. More than a product you need a platform. But what is a platform? Learn tips and tricks about building a public API using the latest and greatest tools: OpenAPI, Python 3 and asyncio.

Abstract

With developers, an awesome product isn’t everything, or at least we found that out. More than a product, you need a platform. But what is a platform? And how do you build one alongside all the other weird old code you might have inherited?

In a perfect world, Jeff Dean would ride in on a Unicorn with stone tablets inscribed with UML diagrams of an application architecture so perfect you’d weep with joy. In the real world however that tends not to happen, so the process is a bit more iterative. Sometimes you try things that don’t work or seem silly in retrospect.

Part of our platform journey has been building a public API with our favorite hand picked technologies: OpenAPI and Python 3, especially asyncio. Building a rock solid, fast, and scalable Python application was not all rainbows and unicorns along the way. Through this process, we learned quite a bit about describing REST APIs and how modern Python concurrency mechanisms behave in the real world.

We’ll share how we used OpenAPI to power our public API and improve the developer experience for both internal engineers and external consumers.

We started off with a mix of multiprocessing and asyncio, and have since migrated completely to asyncio. Also, we’ll share a few of the things we've learned in the process, which we hope will help you if you choose to use asyncio.