A Domain-specific Language for Microservices
A common architectural pattern for complex online systems is a collection of ``microservices'' communicating via RPC interfaces. This arrangement provides autonomy for teams owning services to develop, deploy, and operate their services without centralized coordination. But this autonomy comes at a cost in leverage—the fixed costs of running a service are high, and the desire to avoid them can lead to poor design choices.
In this paper we describe Strato, a system built at Twitter that runs many microservices hosted in a single service platform—trading a little autonomy for a lot of leverage. Hosted microservices are written in a Scala-like DSL that supports transparent concurrency and direct access to Thrift data (the common currency of services at Twitter). The DSL compiles to a concurrency library written in Scala with an arrows-based interface. We detail the design and implementation of the DSL and concurrency library, and evaluate the effectiveness of Strato in improving leverage at Twitter.
Fri 28 SepDisplayed time zone: Guadalajara, Mexico City, Monterrey change
15:20 - 16:10 | Session 3: DSLs & Sponsor TalkScala 2018 at Frisco Chair(s): Sebastian Erdweg Delft University of Technology, Netherlands | ||
15:20 22mTalk | A Domain-specific Language for Microservices Scala 2018 Jacob Donham Twitter, Inc. DOI | ||
15:42 28mIndustry talk | SemanticDB: a common data model for Scala developer tools Scala 2018 Eugene Burmako Twitter, Inc. |