Cloud computing is changing our perception of computing: The Internet is becoming both the computer and the software:
- Vast data centers and computing power are available via the Internet (infrastructure as a service)
- Software is available via the Internet as a service, often in a multi-tenant mode (software as a service)
Building on the promise of unlimited processing/storage power, today’s applications process big amounts of data scattered over the cloud and react to events happening across the cloud. Software services must be both standard components to pay off for their provider and highly configurable and customizable to serve the competitive needs of multiple tenants. Developing such applications is challenging using current programming technology. First, existing abstractions are laid out to process individual data/events. Making the complexity of applications processing big data/events manageable requires abstractions to intentionally express high-level correlations between data/events, freeing the programmer from the task of tracking the data and keeping tabs on relevant events across a cloud. Second, existing abstractions fail to reconcile software reuse and extensibility at the level of large-scale software services.
PACE will deliver first-class linguistic abstractions for expressing sophisticated correlations between data/events to be used and composed as primitives to express high-level functionality. Armed with them, programmers will be relieved from micromanaging data/events and can turn their attention to what the cloud has to offer. Applications become easier to understand, maintain, evolve and more amenable to automated reasoning and sophisticated optimizations. PACE will also deliver language concepts for large-scale modularity, extensibility, and adaptability for capturing highly polymorphic software services.