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.
References
- 1995. Apache Web Server. https://httpd.apache.orgGoogle Scholar
- 1995. Squid Web Cache. http://www.squid-cache.orgGoogle Scholar
- 2004. Nginx Web Server. https://nginx.orgGoogle Scholar
- 2005. http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork. htmlGoogle Scholar
- 2006. Varnish Web Cache. https://varnish-cache.orgGoogle Scholar
- 2009. Macworld: Best of Show 2009. https://www.itworld.com/article/ 2782292/macworld--best-of-show-2009.htmlGoogle Scholar
- 2009. node.js. https://nodejs.org/en/Google Scholar
- 2015. HTTP Middleware. https://laravel.com/docs/5.0/middlewareGoogle Scholar
- 2015. Wikipedia: Wunderlist. https://en.wikipedia.org/wiki/ WunderlistGoogle Scholar
- 2016. Fastify. https://www.fastify.ioGoogle Scholar
- 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 .Google Scholar
- M.J. Bach. 1986. The Design of the UNIX Operating System. PrenticeHall. https://books.google.de/books?id=NrBQAAAAMAAJGoogle Scholar
- 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. Google Scholar
Digital Library
- 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).Google Scholar
- Konstantin Haase Blake Mizerany. 2007. Sinatra. http://sinatrarb.comGoogle Scholar
- Frederick P. Brooks. 1975. The Mythical Man-Month. Addison Wesley, Reading, Mass.Google Scholar
- 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. Google Scholar
Digital Library
- 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 .Google Scholar
- Roy Thomas Fielding. 2000. Architectural Styles and the Design of Network-based Software Architectures . Ph.D. Dissertation. AAI9980887.Google Scholar
- 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. Google Scholar
Digital Library
- 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. Google Scholar
Cross Ref
- 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.Google Scholar
Digital Library
- David Garlan, Robert Allen, and John Ockerbloom. 1995. Architectural Mismatch: Why Reuse Is So Hard. IEEE Softw. 12, 6 (Nov. 1995), 17–26. Google Scholar
Digital Library
- David Garlan, Robert Allen, and John Ockerbloom. 2009. Architectural Mismatch: Why Reuse Is Still So Hard. IEEE Softw. 26, 4 (July 2009), 66–69. Google Scholar
Digital Library
- Christian Grothoff and other authors. 2003. GNU libmichrohttpd. https://www.gnu.org/software/libmicrohttpd/Google Scholar
- John S. Heidemann and Gerald J. Popek. 1994. File-system Development with Stackable Layers. ACM Trans. Comput. Syst. 12, 1 (Feb. 1994), 58–89. Google Scholar
Digital Library
- J. Hughes. 1989. Why Functional Programming Matters. Comput. J. 32, 2 (April 1989), 98–107. Google Scholar
Digital Library
- Mykhailo Karpenko. 2019. Personal Communication. (4 2019).Google Scholar
- Alan C. Kay. 1996. History of Programming languages—II. ACM, New York, NY, USA, Chapter The Early History of Smalltalk, 511–598. Google Scholar
Digital Library
- Michael Keith and Randy Stafford. 2008. Exposing the ORM Cache. Queue 6, 3 (May 2008), 38–47. Google Scholar
Digital Library
- 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.679694Google Scholar
Digital Library
- Samuel C. Kendall, Jim Waldo, Ann Wollrath, and Geoff Wyant. 1994. A Note on Distributed Computing . Technical Report. Mountain View, CA, USA.Google Scholar
- 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-identifiersGoogle Scholar
- Jens Lincke. 2019. Personal Communication. (4 2019).Google Scholar
- 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.pdfGoogle Scholar
- James Lewis Martin Fowler. 2014. Microservices: a definition of this new architectural term. https://martinfowler.com/articles/ microservices.htmlGoogle Scholar
- John McCarthy. 1959. Recursive Functions of Symbolic Expressions and Their Computation by Machine . Technical Report. Cambridge, MA, USA.Google Scholar
- Doug McIlroy. 1964. Pipes Proposal. http://doc.cat-v.org/unix/pipes/Google Scholar
- 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.pdfGoogle Scholar
Digital Library
- Armin Ronacher. 2010. Flask: a Python Web Microframework. https: //palletsprojects.com/p/flask/Google Scholar
- Mary Shaw and David Garlan. 1996. Software Architecture: Perspectives on an Emerging Discipline . Prentice-Hall, Inc., Upper Saddle River, NJ, USA.Google Scholar
Digital Library
- Guido van Rossum and Fred L. Drake. 2011. The Python Language Reference Manual . Network Theory Ltd.Google Scholar
- 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/Google Scholar
- Marcel Weiher. 1998. MPWFoundation Framework. https://github. com/mpw/MPWFoundationGoogle Scholar
- Marcel Weiher. 2003. Objective-Smalltalk. http://objective.stGoogle Scholar
- Marcel Weiher. 2003. ObjectiveHTTPD Framework. https://github. com/mpw/ObjectiveHTTPDGoogle Scholar
- 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. Google Scholar
Cross Ref
- 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. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- 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.Google Scholar
Index Terms
Storage combinators

Marcel Weiher


Comments