skip to main content
10.1145/1807128.1807147acmconferencesArticle/Chapter ViewAbstractPublication PagesmodConference Proceedingsconference-collections
research-article

Fluxo: a system for internet service programming by non-expert developers

Published:10 June 2010Publication History

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. A. V. Aho, M. Lam, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. J. Albahari and B. Albahari. LINQ Pocket Reference. O'Reilly Media, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. Amazon. Amazon elastic compute cloud (EC2). http://aws.amazon.com/ec2/.Google ScholarGoogle Scholar
  6. R. Bekin and S. Dawson. LinkedIn communication architecture. Presentation at JavaOne, 2008.Google ScholarGoogle Scholar
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. J. Brutlag. Speed matters for Google Web search. http://code.google.com/speed/files/delayexp.pdf, June 2009.Google ScholarGoogle Scholar
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. E. Christensen, F. Curbera, G. Meredith, and S. Weerawarana. WSDL: Web services description language. http://www.w3.org/TR/wsdl, Mar. 2001.Google ScholarGoogle Scholar
  11. 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 ScholarGoogle Scholar
  12. A. Darte, Y. Robert, and F. Vivien. Scheduling and Automatic Parallelization. Birkhauser Boston, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. J. Dean and S. Ghemawat. MapReduce: simplified data processing on large clusters. In Proceedings of OSDI, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Google. Google app engine. http://code.google.com/appengine/.Google ScholarGoogle Scholar
  15. Google. Google app engine (second look). http://dumpstuffhere.blogspot.com/2008/07/google-app-engine.html, 2008.Google ScholarGoogle Scholar
  16. R. Gupta, E. Mehofer, and Y. Zhang. Profile guided compiler optimizations. In The Compiler Design Handbook, pages 143--174, 2002.Google ScholarGoogle ScholarCross RefCross Ref
  17. J. Hamilton. On designing and deploying internet-scale services. In Proceedings of LISA, pages 1--12, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. C. Henderson. Flickr and PHP. Presentation to Vancouver PHP Users Group, Aug 2004.Google ScholarGoogle Scholar
  19. C. Henderson. Building Scalable Web Sites: Building, scaling, and optimizing the next generation of web applications. O'Reilly Media, Inc., 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. C. Henderson. Scalable Web Architectures: Common Patterns and Approaches, September 2008.Google ScholarGoogle Scholar
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. James. Google app engine followup. http://dumpstuffhere.blogspot.com/2008/07/google-app-engine-followup.html, 2008.Google ScholarGoogle Scholar
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. E. Kiciman, B. Livshits, and M. Musuvathi. Fluxo: A simple service compiler. In Proceedings of HotOS, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. G. Lapalme. Implementation of a "lisp comprehension" macro. SIGPLAN Lisp Pointers, IV(2):16--23, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. Livejournal. http://www.slideshare.net/miyagawa/how-we-build-vox, 2007.Google ScholarGoogle Scholar
  28. B. T. Loo, T. Condie, J. M. Hellerstein, P. Maniatis, T. Roscoe, and I. Stoica. Implementing declarative overlays. In Proceedings of SOSP, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Microsoft. Azure services platform. http://www.microsoft.com/azure/.Google ScholarGoogle Scholar
  30. Microsoft, http://www.popfly.com/, 2008.Google ScholarGoogle Scholar
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. T. O'Reilly. Database war stories #3: Flickr. O'Reilly Radar, Apr 2006.Google ScholarGoogle Scholar
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. Ruby on Rails. http://rubyonrails.org, 2009.Google ScholarGoogle Scholar
  35. Scala. http://www.scala-lang.org, 2009.Google ScholarGoogle Scholar
  36. 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 ScholarGoogle Scholar
  37. R. Slobojan. Dan Farino: About MySpace's architecture. InfoQ, Nov 2008.Google ScholarGoogle Scholar
  38. C. Stewart and K. Shen. Performance modeling and system management for multi-component online services. In Proceedings of NSDI, pages 71--84, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Sun Microsystems. Java enterprise edition (J2EE). http://java.sun.com/javaee/.Google ScholarGoogle Scholar
  40. The Hadoop Project. http://hadoop.apache.org, 2009.Google ScholarGoogle Scholar
  41. P. Thurrott. MSN: The inside story. http://www.winsupersite.com/showcase/msn_inside_03.asp, May 2005.Google ScholarGoogle Scholar
  42. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  43. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  44. W. White, A. Demers, C. Koch, J. Gehrke, and R. Rajagopalan. Scaling games to epic proportions. In Proceedings of SIGMOD, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Yahoo!, Inc. http://pipes.yahoo.com/pipes/, 2008.Google ScholarGoogle Scholar
  46. 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 ScholarGoogle Scholar

Index Terms

  1. Fluxo: a system for internet service programming by non-expert developers

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      SoCC '10: Proceedings of the 1st ACM symposium on Cloud computing
      June 2010
      264 pages
      ISBN:9781450300360
      DOI:10.1145/1807128

      Copyright © 2010 ACM

      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 ACM 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]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 10 June 2010

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate169of722submissions,23%
    • Article Metrics

      • Downloads (Last 12 months)1
      • Downloads (Last 6 weeks)0

      Other Metrics

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader