skip to main content
10.1145/3359591.3359729acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Storage combinators

Published: 23 October 2019 Publication History

Abstract

The ability to compose software from high level components is as sought after as it is elusive. The REST architectural style used in the World Wide Web enables such plug-compatible components in distributed settings.
We propose storage combinators, a type of plug-compatible component that can be used as generic intermediary in a non-distributed setting.
Storage combinators combine several stores – components that support REST-style verbs – into a single component that also provides a store interface.
This mechanism allows a few basic components to be combined in many different ways to achieve different effects with or without adaptation. It correlates with reported increases in productivity while performing well in commercial applications with millions of users.

Supplementary Material

MP4 File (3359591.3359729.mp4)
Presentation Video

References

[1]
1995. Apache Web Server. https://httpd.apache.org
[2]
1995. Squid Web Cache. http://www.squid-cache.org
[3]
2004. Nginx Web Server. https://nginx.org
[4]
2005. http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork. html
[5]
2006. Varnish Web Cache. https://varnish-cache.org
[6]
2009. Macworld: Best of Show 2009. https://www.itworld.com/article/ 2782292/macworld--best-of-show-2009.html
[7]
2009. node.js. https://nodejs.org/en/
[8]
2015. HTTP Middleware. https://laravel.com/docs/5.0/middleware
[9]
2015. Wikipedia: Wunderlist. https://en.wikipedia.org/wiki/ Wunderlist
[10]
2016. Fastify. https://www.fastify.io
[11]
Atul Adya, Daniel Myers, Henry Qin, and Robert Grandl. 2019. Fast key-value stores: An idea whose time has come and gone. In HotOS XVII .
[12]
M.J. Bach. 1986. The Design of the UNIX Operating System. PrenticeHall. https://books.google.de/books?id=NrBQAAAAMAAJ
[13]
Luiz André Barroso, Kourosh Gharachorloo, Robert McNamara, Andreas Nowatzyk, Shaz Qadeer, Barton Sano, Scott Smith, Robert Stets, and Ben Verghese. 2000. Piranha: A Scalable Architecture Based on Single-chip Multiprocessing. SIGARCH Computer Architecture News 28, 2 (May 2000), 282–293.
[14]
Don Batory and Sean O’Mally. 1992. The Design and Implementation of Hierarchical Software Systems with Reusable Components. ACM Transactions on Software Engineering and Methodology (October 1992).
[15]
Konstantin Haase Blake Mizerany. 2007. Sinatra. http://sinatrarb.com
[16]
Frederick P. Brooks. 1975. The Mythical Man-Month. Addison Wesley, Reading, Mass.
[17]
Robert DeLine. 1999. Avoiding Packaging Mismatch with Flexible Packaging. In Proceedings of the 21st International Conference on Software Engineering (ICSE ’99) . ACM, New York, NY, USA, 97–106.
[18]
R. Fielding and J. Reschke. 2014. Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content . RFC 7231. RFC Editor. http://www.rfc-editor. org/rfc/rfc7231.txt http://www.rfc-editor.org/rfc/rfc7231.txt .
[19]
Roy Thomas Fielding. 2000. Architectural Styles and the Design of Network-based Software Architectures . Ph.D. Dissertation. AAI9980887.
[20]
J. Nathan Foster, Michael B. Greenwald, Jonathan T. Moore, Benjamin C. Pierce, and Alan Schmitt. 2005. Combinators for Bi-directional Tree Transformations: A Linguistic Approach to the View Update Problem. SIGPLAN Not. 40, 1 (Jan. 2005), 233–246.
[21]
Paolo Di Francesco, Patricia Lago, and Ivano Malavolta. 2019. Architecting with microservices: A systematic mapping study. Journal of Systems and Software 150 (2019), 77 – 97.
[22]
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-oriented Software . AddisonWesley Longman Publishing Co., Inc., Boston, MA, USA.
[23]
David Garlan, Robert Allen, and John Ockerbloom. 1995. Architectural Mismatch: Why Reuse Is So Hard. IEEE Softw. 12, 6 (Nov. 1995), 17–26.
[24]
David Garlan, Robert Allen, and John Ockerbloom. 2009. Architectural Mismatch: Why Reuse Is Still So Hard. IEEE Softw. 26, 4 (July 2009), 66–69.
[25]
Christian Grothoff and other authors. 2003. GNU libmichrohttpd. https://www.gnu.org/software/libmicrohttpd/
[26]
John S. Heidemann and Gerald J. Popek. 1994. File-system Development with Stackable Layers. ACM Trans. Comput. Syst. 12, 1 (Feb. 1994), 58–89.
[27]
J. Hughes. 1989. Why Functional Programming Matters. Comput. J. 32, 2 (April 1989), 98–107.
[28]
Mykhailo Karpenko. 2019. Personal Communication. (4 2019).
[29]
Alan C. Kay. 1996. History of Programming languages—II. ACM, New York, NY, USA, Chapter The Early History of Smalltalk, 511–598.
[30]
Michael Keith and Randy Stafford. 2008. Exposing the ORM Cache. Queue 6, 3 (May 2008), 38–47.
[31]
Ralph Keller and Urs Hölzle. 1998. Binary Component Adaptation. In Proceedings of the 12th European Conference on Object-Oriented Programming (ECCOP ’98) . Springer-Verlag, Berlin, Heidelberg, 307– 329. http://dl.acm.org/citation.cfm?id=646155.679694
[32]
Samuel C. Kendall, Jim Waldo, Ann Wollrath, and Geoff Wyant. 1994. A Note on Distributed Computing . Technical Report. Mountain View, CA, USA.
[33]
Marius Lichtblau, Patrick Rein, Stefan Ramson, Johannes Henning, Marcel Weiher, and Robert Hirschfeld. 2018. Squeak/Smalltalk Implementation of Polymorphic Identifiers. https://github.com/hpi-swalab/squeak-polymorphic-identifiers
[34]
Jens Lincke. 2019. Personal Communication. (4 2019).
[35]
Trygve M. H. Reenskaug. 1979. Thing-Model-View-Editor – an Example from a Planning System. http://heim.ifi.uio.no/ trygver/1979/mvc1/1979-05-MVC.pdf. http://heim.ifi.uio.no/~trygver/1979/mvc-1/1979-05-MVC.pdf
[36]
James Lewis Martin Fowler. 2014. Microservices: a definition of this new architectural term. https://martinfowler.com/articles/ microservices.html
[37]
John McCarthy. 1959. Recursive Functions of Symbolic Expressions and Their Computation by Machine . Technical Report. Cambridge, MA, USA.
[38]
Doug McIlroy. 1964. Pipes Proposal. http://doc.cat-v.org/unix/pipes/
[39]
Rob Pike, Dave Presotto, Ken Thompson, Howard Trickey, and Phil Winterbottom. 1993. The Use of Name Spaces in Plan 9. Operating Systems Review 27, 2 (April 1993), 72–76. http://plan9.bell-labs.com/ sys/doc/names.pdf
[40]
Armin Ronacher. 2010. Flask: a Python Web Microframework. https: //palletsprojects.com/p/flask/
[41]
Mary Shaw and David Garlan. 1996. Software Architecture: Perspectives on an Emerging Discipline . Prentice-Hall, Inc., Upper Saddle River, NJ, USA.
[42]
Guido van Rossum and Fred L. Drake. 2011. The Python Language Reference Manual . Network Theory Ltd.
[43]
Xing Wang. 2017. What is HTTP middleware? Best practices for building, designing and using middleware. https://www.moesif.com/ blog/engineering/middleware/What-Is-HTTP-Middleware/
[44]
Marcel Weiher. 1998. MPWFoundation Framework. https://github. com/mpw/MPWFoundation
[45]
Marcel Weiher. 2003. Objective-Smalltalk. http://objective.st
[46]
Marcel Weiher. 2003. ObjectiveHTTPD Framework. https://github. com/mpw/ObjectiveHTTPD
[47]
Marcel Weiher and Craig Dowie. 2014. In-Process REST at the BBC. In REST: Advanced Research Topics and Practical Applications, Cesare Pautasso, Erik Wilde, and Rosa Alarcon (Eds.). Springer New York, 193–209.
[48]
Marcel Weiher and Robert Hirschfeld. 2013. Polymorphic Identifiers: Uniform Resource Access in Objective-Smalltalk. In Proceedings of the 9th Symposium on Dynamic Languages (DLS ’13) . ACM, New York, NY, USA, 61–72.
[49]
Marcel Weiher and Robert Hirschfeld. 2016. Constraints As Polymorphic Connectors. In Proceedings of the 15th International Conference on Modularity (MODULARITY 2016) . ACM, New York, NY, USA, 134–145.
[50]
Edward Yourdon and Larry L. Constantine. 1979. Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design (1st ed.). Prentice-Hall, Inc., Upper Saddle River, NJ, USA.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
Onward! 2019: Proceedings of the 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software
October 2019
197 pages
ISBN:9781450369954
DOI:10.1145/3359591
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: 23 October 2019

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. REST
  2. components
  3. composition
  4. modularity

Qualifiers

  • Research-article

Conference

SPLASH '19
Sponsor:

Acceptance Rates

Overall Acceptance Rate 40 of 105 submissions, 38%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 518
    Total Downloads
  • Downloads (Last 12 months)10
  • Downloads (Last 6 weeks)0
Reflects downloads up to 09 Sep 2024

Other Metrics

Citations

Cited By

View all

View Options

Get Access

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