ABSTRACT
Over the last 10-15 years, our industry has developed and deployed many large-scale Internet services, from e-commerce to social networking sites, all facing common challenges in latency, reliability, and scalability. Over time, a relatively small number of architectural patterns have emerged to address these challenges, such as tiering, caching, partitioning, and pre- or post-processing compute intensive tasks. Unfortunately, following these patterns requires developers to have a deep understanding of the trade-offs involved in these patterns as well as an end-to-end understanding of their own system and its expected workloads. The result is that non-expert developers have a hard time applying these patterns in their code, leading to low-performing, highly suboptimal applications.
In this paper, we propose FLUXO, a system that separates an Internet service's logical functionality from the architectural decisions made to support performance, scalability, and reliability. FLUXO achieves this separation through the use of a restricted programming language designed 1) to limit a developer's ability to write programs that are incompatible with widely used Internet service architectural patterns; and 2) to simplify the analysis needed to identify how architectural patterns should be applied to programs. Because architectural patterns are often highly dependent on application performance, workloads and data distributions, our platform captures such data as a runtime profile of the application and makes it available for use when determining how to apply architectural patterns. This separation makes service development accessible to non-experts by allowing them to focus on application features and leaving complicated architectural optimizations to experts writing application-agnostic, profile-guided optimization tools.
To evaluate FLUXO, we show how a variety of architectural patterns can be expressed as transformations applied to FLUXO programs. Even simple heuristics for automatically applying these optimizations can show reductions in latency ranging from 20-90% without requiring special effort from the application developer. We also demonstrate how a simple shared-nothing tiering and replication pattern is able to scale our test suite, a web-based IM, email, and addressbook application.
- S. Agrawal, S. Chaudhuri, and V. R. Narasayya. Automated Selection of Materialized Views and Indexes in SQL Databases. In Proceedings of VLDB, pages 496--505, 2000. Google ScholarDigital Library
- A. V. Aho, M. Lam, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 2007. Google ScholarDigital Library
- J. Albahari and B. Albahari. LINQ Pocket Reference. O'Reilly Media, 2008. Google ScholarDigital Library
- P. Alvaro, T. Condie, N. Conway, K. Elmeleegy, J. Hellerstein, and R. Sears. Boom analytics: Exploring data-centric, declarative programming for the cloud. In Proceedings of EuroSys, 2010. Google ScholarDigital Library
- Amazon. Amazon elastic compute cloud (EC2). http://aws.amazon.com/ec2/.Google Scholar
- R. Bekin and S. Dawson. LinkedIn communication architecture. Presentation at JavaOne, 2008.Google Scholar
- C. Bouras, A. Konidaris, and D. Kostoulas. Predictive prefetching on the web and its potential impact in the wide area. World Wide Web, 7(2):143--179, 2004. Google ScholarDigital Library
- J. Brutlag. Speed matters for Google Web search. http://code.google.com/speed/files/delayexp.pdf, June 2009.Google Scholar
- D. Callahan, K. D. Cooper, K. Kennedy, and L. Torczon. Interprocedural constant propagation. In Proceedings of the Symposium on Compiler Construction, pages 152--161, 1986. Google ScholarDigital Library
- E. Christensen, F. Curbera, G. Meredith, and S. Weerawarana. WSDL: Web services description language. http://www.w3.org/TR/wsdl, Mar. 2001.Google Scholar
- T. Condie, N. Conway, P. Alvaro, J. M. Hellerstein, K. Elmeleegy, and R. Sears. Mapreduce online. Technical Report UCB/EECS-2009-136, EECS Department, University of California, Berkeley, Oct 2009.Google Scholar
- A. Darte, Y. Robert, and F. Vivien. Scheduling and Automatic Parallelization. Birkhauser Boston, 2000. Google ScholarDigital Library
- J. Dean and S. Ghemawat. MapReduce: simplified data processing on large clusters. In Proceedings of OSDI, 2004. Google ScholarDigital Library
- Google. Google app engine. http://code.google.com/appengine/.Google Scholar
- Google. Google app engine (second look). http://dumpstuffhere.blogspot.com/2008/07/google-app-engine.html, 2008.Google Scholar
- R. Gupta, E. Mehofer, and Y. Zhang. Profile guided compiler optimizations. In The Compiler Design Handbook, pages 143--174, 2002.Google ScholarCross Ref
- J. Hamilton. On designing and deploying internet-scale services. In Proceedings of LISA, pages 1--12, 2007. Google ScholarDigital Library
- C. Henderson. Flickr and PHP. Presentation to Vancouver PHP Users Group, Aug 2004.Google Scholar
- C. Henderson. Building Scalable Web Sites: Building, scaling, and optimizing the next generation of web applications. O'Reilly Media, Inc., 2006. Google ScholarDigital Library
- C. Henderson. Scalable Web Architectures: Common Patterns and Approaches, September 2008.Google Scholar
- M. Isard, M. Budiu, Y. Yu, A. Birrell, and D. Fetterly. Dryad: distributed data-parallel programs from sequential building blocks. In Proceedings of EuroSys, pages 59--72, 2007. Google ScholarDigital Library
- James. Google app engine followup. http://dumpstuffhere.blogspot.com/2008/07/google-app-engine-followup.html, 2008.Google Scholar
- W. M. Johnston, J. R. P. Hanna, and R. J. Millar. Advances in dataflow programming languages. ACM Comput. Surv., 36(1):1--34, 2004. Google ScholarDigital Library
- E. Kiciman, B. Livshits, and M. Musuvathi. Fluxo: A simple service compiler. In Proceedings of HotOS, 2009. Google ScholarDigital Library
- G. Lapalme. Implementation of a "lisp comprehension" macro. SIGPLAN Lisp Pointers, IV(2):16--23, 1991. Google ScholarDigital Library
- E. D. Lazowska, J. Zahorjan, G. S. Graham, and K. C. Sevcik. Quantitative system performance: computer system analysis using queueing network models. Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 1984. Google ScholarDigital Library
- Livejournal. http://www.slideshare.net/miyagawa/how-we-build-vox, 2007.Google Scholar
- B. T. Loo, T. Condie, J. M. Hellerstein, P. Maniatis, T. Roscoe, and I. Stoica. Implementing declarative overlays. In Proceedings of SOSP, 2005. Google ScholarDigital Library
- Microsoft. Azure services platform. http://www.microsoft.com/azure/.Google Scholar
- Microsoft, http://www.popfly.com/, 2008.Google Scholar
- W. A. Najjar, E. A. Lee, and G. R. Gao. Advances in the dataflow computational model. Parallel Computing, 25(13-14):1907--1929, 1999. Google ScholarDigital Library
- T. O'Reilly. Database war stories #3: Flickr. O'Reilly Radar, Apr 2006.Google Scholar
- A. Rasmussen, E. Kiciman, B. Livshits, and M. Musuvathi. Short paper: Improving the responsiveness of interactive Internet services with automatic cache placement. In Proceedings of EuroSys, 2009. Google ScholarDigital Library
- Ruby on Rails. http://rubyonrails.org, 2009.Google Scholar
- Scala. http://www.scala-lang.org, 2009.Google Scholar
- E. Schurman and J. Brutlag. The user and business impact of server delays, additional bytes, and HTTP chunking in Web search. http://en.oreilly.com/velocity2009/public/schedule/detail/8523, May 2009.Google Scholar
- R. Slobojan. Dan Farino: About MySpace's architecture. InfoQ, Nov 2008.Google Scholar
- C. Stewart and K. Shen. Performance modeling and system management for multi-component online services. In Proceedings of NSDI, pages 71--84, 2005. Google ScholarDigital Library
- Sun Microsystems. Java enterprise edition (J2EE). http://java.sun.com/javaee/.Google Scholar
- The Hadoop Project. http://hadoop.apache.org, 2009.Google Scholar
- P. Thurrott. MSN: The inside story. http://www.winsupersite.com/showcase/msn_inside_03.asp, May 2005.Google Scholar
- P. Tu and D. Padua. Gated SSA-based demand-driven symbolic analysis for parallelizing compilers. In Proceedings of the International Conference on Supercomputing, pages 414--423, 1995. Google ScholarDigital Library
- M. Welsh, D. Culler, and E. Brewer. SEDA: an architecture for well-conditioned, scalable Internet services. SIGOPS Oper. Syst. Rev., 35(5):230--243, 2001. Google ScholarDigital Library
- W. White, A. Demers, C. Koch, J. Gehrke, and R. Rajagopalan. Scaling games to epic proportions. In Proceedings of SIGMOD, 2007. Google ScholarDigital Library
- Yahoo!, Inc. http://pipes.yahoo.com/pipes/, 2008.Google Scholar
- F. Yang, J. Shanmugasundaram, M. Riedewald, J. Gehrke, and A. Demers. Hilda: A high-level language for data-driven web applications. Technical report, TR2005-1991, Computer Science Department, Cornell University, 2005.Google Scholar
Index Terms
- Fluxo: a system for internet service programming by non-expert developers
Recommendations
FLUXO: a simple service compiler
HotOS'09: Proceedings of the 12th conference on Hot topics in operating systemsIn this paper, we propose FLUXO, a system that separates an Internet service's logical functionality from the architectural decisions made to support performance, scalability, and reliability. FLUXO achieves this separation through three mechanisms: 1) ...
Parallelization of multimedia applications on the multi-level computing architecture
The Multi-Level Computing Architecture MLCA is a novel parallel System-on-a-Chip architecture targeted for multimedia applications. It features a top level controller that automatically extracts task level parallelism using techniques similar to how ...
Source-Level Compiler Optimizations for High-Level Synthesis
SEEDA-CECNSM '16: Proceedings of the SouthEast European Design Automation, Computer Engineering, Computer Networks and Social Media ConferenceWith high-level synthesis becoming the preferred method for hardware design, tools that operate on high-level programming languages and optimize hardware output are crucial for successful synthesis. In high-level synthesis, conventional programming ...
Comments