A Framework for Cloud Computing
Orleans is a project in the eXtreme Computing Group to simplify client + cloud programming.
Orleans is a software framework for building client + cloud applications. Orleans encourages use of simple concurrency patterns that are easy to understand and implement correctly, building on an actor-like model with declarative specification of persistence, replication, and consistency and using lightweight transactions to support the development of reliable and scalable client + cloud software.
For more information, take a look at our publications or video on Channel 9.
- Sergey Bykov, Alan Geller, Gabriel Kliot, James Larus, Ravi Pandya, and Jorgen Thelin, Orleans: Cloud Computing for Everyone, in ACM Symposium on Cloud Computing (SOCC 2011), ACM, October 2011
- Sergey Bykov, Alan Geller, Gabriel Kliot, James Larus, Ravi Pandya, and Jorgen Thelin, Orleans: A Framework for Cloud Computing, no. MSR-TR-2010-159, 30 November 2010
Client + cloud computing is a disruptive, new computing platform, combining diverse client devices – PCs, smartphones, sensors, and single-function and embedded devices – with the unlimited, on-demand computation and data storage offered by cloud computing services such as Amazon’s AWS or Microsoft’s Windows Azure. Advances in semiconductors again are driving a radical change, reducing the cost of computing and communications and enabling inexpensive, compact, personal, and mobile devices with powerful processors, wireless connectivity with good bandwidth and reach, and low power consumption. In the data center, low-cost, efficient, virtualized servers created a new business of selling inexpensive computation on demand. Together these advances make possible the vision of ubiquitous computing articulated by Mark Weiser two decades ago, where data and computation are no longer tied to a physical location or computing device, but instead become the fabric of our environment and part of all devices we interact with.
As with every advance in computing, programming is a fundamental challenge. Client + cloud computing combines many of the most difficult aspects of programming. These systems are inherently parallel and distributed, running computations across a large number of servers in multiple data centers and diverse clients. Individual computers and communication links are commodity components, with non-negligible failure rates and complex failure modes. Cloud computing runs as a service, offering economies of scale and efficiency by concurrently processing requests from many clients, but also facing challenging demands in handling varying and unpredictable loads and offering a highly available and reliable service in the face of hardware and software failures and evolution. These problems, of course, come in addition to the familiar challenges of constructing secure, reliable, and efficient software.
Orleans provides a well-designed and engineered environment with abstractions that support the development of scalable, reliable distributed systems, reducing the difficulty and cost of building new software infrastructure on unreliable hardware needed for the client + cloud computing. Orleans has three main components: (1) programming model, (2) programming language and tools, and (3) runtime system.
In Orleans, grains are atomic units of isolation, distribution, and durability. A service is constructed from grains running on servers in a data center. An external request, from a client of the service, is sent to a grain for processing. A grain can concurrently invoke the operations of other grains through asynchronous messages. Grains internally are not parallel; they process a request fully before handling the next one. Multiple instantiations of a grain, known as activations, process multiple independent requests to a service in parallel. Orleans creates multiple activations of a grain to handle simultaneous requests, increasing system throughput, reducing queuing latency, and improving system scalability.
Programming Language and Tools
Orleans provides direct support for the .NET programming model. We use standard .NET languages with custom attributes (currently C# is supported; we are working on F#). Developers declare important properties for cloud applications, such as persistence, replication and consistency, as attributes on grains.
The Orleans runtime provides functionally common to cloud applications. It is provides persistence, replication and consistency. The runtime also will support life cycle management (versioning and deployment) as well as a monitoring and debugging.