skip to main content
10.1145/2525528.2525538acmconferencesArticle/Chapter ViewAbstractPublication PagessospConference Proceedingsconference-collections
research-article

Your server as a function

Published: 03 November 2013 Publication History

Abstract

Building server software in a large-scale setting, where systems exhibit a high degree of concurrency and environmental variability, is a challenging task to even the most experienced programmer. Efficiency, safety, and robustness are paramount---goals which have traditionally conflicted with modularity, reusability, and flexibility.
We describe three abstractions which combine to present a powerful programming model for building safe, modular, and efficient server software: Composable futures are used to relate concurrent, asynchronous actions; services and filters are specialized functions used for the modular composition of our complex server software.
Finally, we discuss our experiences using these abstractions and techniques throughout Twitter's serving infrastructure.

References

[1]
Go. http://www.golang.org.
[2]
Haskell. http://www.haskell.org.
[3]
A. Agarwal, M. Slee, and M. Kwiatkowski. Thrift: Scalable cross-language services implementation. Technical report, Facebook, 4 2007.
[4]
Arvind, R. S. Nikhil, and K. K. Pingali. I-structures: Data structures for parallel computing. ACM Trans. Program. Lang. Syst., 11(4):598--632, Oct. 1989.
[5]
M. Busch, K. Gade, B. Larson, P. Lok, S. Luckenbill, and J. Lin. Early-bird: Real-time search at Twitter. In Proceedings of the 2012 IEEE 28th International Conference on Data Engineering, ICDE '12, pages 1360--1369, Washington, DC, USA, 2012. IEEE Computer Society.
[6]
T. D. Chandra, R. Griesemer, and J. Redstone. Paxos made live: an engineering perspective. In Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing, PODC '07, pages 398--407. ACM, 2007.
[7]
J. Dean and L. A. Barroso. The tail at scale. Commun. ACM, 56(2):74--80, Feb. 2013.
[8]
S. Doeraene and P. Van Roy. A new concurrency model for scala based on a declarative dataflow core. 2013.
[9]
M. Eriksen. jvmgcprof. https://github.com/twitter/jvmgcprof, Nov. 2012.
[10]
M. Eriksen and N. Kallen. Finagle. http://twitter.github.com/finagle, Nov. 2010.
[11]
B. Fitzpatrick. Distributed caching with memcached. Linux J., 2004(124):5--, Aug. 2004.
[12]
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design patterns: elements of reusable object-oriented software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1995.
[13]
D. R. Hanson. Fast allocation and deallocation of memory based on object lifetimes. Software: Practice and Experience, 20(1):5--12, 1990.
[14]
M. O. Heather Miller and P. Haller. SIP-21 - Spores. http://docs.scala-lang.org/sips/pending/spores.html, 2013.
[15]
D. Karger, E. Lehman, T. Leighton, R. Panigrahy, M. Levine, and D. Lewin. Consistent hashing and random trees: distributed caching protocols for relieving hot spots on the World Wide Web. In Proceedings of the twenty-ninth annual ACM symposium on Theory of computing, STOC '97, pages 654--663, New York, NY, USA, 1997. ACM.
[16]
B. Matheny. Eliminating duplicate requests. http://tumblr.mobocracy.net/post/45358335655/eliminating-duplicate-requests, Mar. 2013.
[17]
M. Odersky and al. An overview of the Scala programming language. Technical Report IC/2004/64, EPFL Lausanne, Switzerland, 2004.
[18]
D. Ritchie. The evolution of the Unix time-sharing system. In Proceedings of a Symposium on Language Design and Programming Methodology, pages 25--36, London, UK, UK, 1980. Springer-Verlag.
[19]
P. V. Roy and S. Haridi. Concepts, Techniques, and Models of Computer Programming. MIT Press, Cambridge, MA, USA, 2004.
[20]
B. H. Sigelman, L. A. Barroso, M. Burrows, P. Stephenson, M. Plakal, D. Beaver, S. Jaspan, and C. Shanbhag. Dapper, a large-scale distributed systems tracing infrastructure. Technical report, Google, Inc., 2010.
[21]
G. Smolka. The Oz programming model. In COMPUTER SCIENCE TODAY, LECTURE NOTES IN COMPUTER SCIENCE, pages 324--343. Springer-Verlag, 1995.
[22]
J. Vouillon. Lwt: a cooperative thread library. In Proceedings of the 2008 ACM SIGPLAN workshop on ML, ML '08, pages 3--12, New York, NY, USA, 2008. ACM.
[23]
M. Zissman, G. O'Leary, and D. Johnson. A block diagram compiler for a digital signal processing mimd computer. In Acoustics, Speech, and Signal Processing, IEEE International Conference on ICASSP '87., volume 12, pages 1867--1870, 1987.

Cited By

View all
  • (2019)Ignis: scaling distribution-oblivious systems with light-touch distributionProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314586(1010-1026)Online publication date: 8-Jun-2019
  • (2018)Secure serverless computing using dynamic information flow controlProceedings of the ACM on Programming Languages10.1145/32764882:OOPSLA(1-26)Online publication date: 24-Oct-2018
  • (2018)A domain-specific language for microservicesProceedings of the 9th ACM SIGPLAN International Symposium on Scala10.1145/3241653.3241654(2-12)Online publication date: 17-Sep-2018
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLOS '13: Proceedings of the Seventh Workshop on Programming Languages and Operating Systems
November 2013
70 pages
ISBN:9781450324601
DOI:10.1145/2525528
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 03 November 2013

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Research-article

Conference

SOSP '13
Sponsor:

Acceptance Rates

PLOS '13 Paper Acceptance Rate 10 of 16 submissions, 63%;
Overall Acceptance Rate 17 of 32 submissions, 53%

Upcoming Conference

SOSP '25
ACM SIGOPS 31st Symposium on Operating Systems Principles
October 13 - 16, 2025
Seoul , Republic of Korea

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)6
  • Downloads (Last 6 weeks)0
Reflects downloads up to 20 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2019)Ignis: scaling distribution-oblivious systems with light-touch distributionProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314586(1010-1026)Online publication date: 8-Jun-2019
  • (2018)Secure serverless computing using dynamic information flow controlProceedings of the ACM on Programming Languages10.1145/32764882:OOPSLA(1-26)Online publication date: 24-Oct-2018
  • (2018)A domain-specific language for microservicesProceedings of the 9th ACM SIGPLAN International Symposium on Scala10.1145/3241653.3241654(2-12)Online publication date: 17-Sep-2018
  • (2018)Compiling for concise code and efficient I/OProceedings of the 27th International Conference on Compiler Construction10.1145/3178372.3179505(104-115)Online publication date: 24-Feb-2018
  • (2017)On the Design of Distributed Programming ModelsProceedings of the Programming Models and Languages for Distributed Computing10.1145/3166089.3166093(1-6)Online publication date: 20-Jun-2017
  • (2017)Towards Fine-grained, Automated Application CompartmentalizationProceedings of the 9th Workshop on Programming Languages and Operating Systems10.1145/3144555.3144563(43-50)Online publication date: 28-Oct-2017
  • (2016)Incremental consistency guarantees for replicated objectsProceedings of the 12th USENIX conference on Operating Systems Design and Implementation10.5555/3026877.3026891(169-184)Online publication date: 2-Nov-2016
  • (2016)Industrial-scale agileCommunications of the ACM10.1145/300983059:12(63-71)Online publication date: 1-Dec-2016
  • (2016)Software-defined batteriesCommunications of the ACM10.1145/300717959:12(111-119)Online publication date: 1-Dec-2016
  • (2016)Extracting 3D objects from photographs using 3-sweepCommunications of the ACM10.1145/300717559:12(121-129)Online publication date: 1-Dec-2016
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media