Cloud Programming James Larus Microsoft Research Mysore-Park Workshop on Cloud Computing Mysore India, January 13, 2010.

Slides:



Advertisements
Similar presentations
Towards a Practical Composition Language Oscar Nierstrasz Software Composition Group University of Bern.
Advertisements

© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Master/Slave Architecture Pattern Source: Pattern-Oriented Software Architecture, Vol. 1, Buschmann, et al.
Clouds C. Vuerli Contributed by Zsolt Nemeth. As it started.
Approaches to EJB Replication. Overview J2EE architecture –EJB, components, services Replication –Clustering, container, application Conclusions –Advantages.
Variability Oriented Programming – A programming abstraction for adaptive service orientation Prof. Umesh Bellur Dept. of Computer Science & Engg, IIT.
Software Engineering and Middleware: a Roadmap by Wolfgang Emmerich Ebru Dincel Sahitya Gupta.
Scripting Languages For Virtual Worlds. Outline Necessary Features Classes, Prototypes, and Mixins Static vs. Dynamic Typing Concurrency Versioning Distribution.
University of Kansas Construction & Integration of Distributed Systems Jerry James Oct. 30, 2000.
Lock Inference for Systems Software John Regehr Alastair Reid University of Utah March 17, 2003.
EEC-681/781 Distributed Computing Systems Lecture 3 Wenbing Zhao Department of Electrical and Computer Engineering Cleveland State University
1 New Architectures Need New Languages A triumph of optimism over experience! Ian Watson 3 rd July 2009.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Software Engineering and Middleware A Roadmap Author: Wolfgang Emmerich Presented by: Sam Malek.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Undergraduate Poster Presentation Match 31, 2015 Department of CSE, BUET, Dhaka, Bangladesh Wireless Sensor Network Integretion With Cloud Computing H.M.A.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Lecture 2 – MapReduce CPE 458 – Parallel Programming, Spring 2009 Except as otherwise noted, the content of this presentation is licensed under the Creative.
Private Cloud: Application Transformation Business Priorities Presentation.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 System and Software Engineering.
What is Concurrent Programming? Maram Bani Younes.
Cloud Computing Saneel Bidaye uni-slb2181. What is Cloud Computing? Cloud Computing refers to both the applications delivered as services over the Internet.
4.x Performance Technology drivers – Exascale systems will consist of complex configurations with a huge number of potentially heterogeneous components.
Virtual Machine Hosting for Networked Clusters: Building the Foundations for “Autonomic” Orchestration Based on paper by Laura Grit, David Irwin, Aydan.
What is Architecture  Architecture is a subjective thing, a shared understanding of a system’s design by the expert developers on a project  In the.
Virtualization Lab 3 – Virtualization Fall 2012 CSCI 6303 Principles of I.T.
International Workshop on Web Engineering ACM Hypertext 2004 Santa Cruz, August 9-13 An Engineering Perspective on Structural Computing: Developing Component-Based.
1 CS 456 Software Engineering. 2 Contents 3 Chapter 1: Introduction.
Cloud Computing 1. Outline  Introduction  Evolution  Cloud architecture  Map reduce operation  Platform 2.
CSE 303 – Software Design and Architecture
Assessing the Suitability of UML for Modeling Software Architectures Nenad Medvidovic Computer Science Department University of Southern California Los.
M.A.Doman Short video intro Model for enabling the delivery of computing as a SERVICE.
Programming Models & Runtime Systems Breakout Report MICS PI Meeting, June 27, 2002.
COMS E Cloud Computing and Data Center Networking Sambit Sahu
4.2.1 Programming Models Technology drivers – Node count, scale of parallelism within the node – Heterogeneity – Complex memory hierarchies – Failure rates.
1 Introduction to Middleware. 2 Outline What is middleware? Purpose and origin Why use it? What Middleware does? Technical details Middleware services.
Cloud Programming: From Doom and Gloom to BOOM and Bloom Peter Alvaro, Neil Conway Faculty Recs: Joseph M. Hellerstein, Rastislav Bodik Collaborators:
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Advanced Computer Networks Topic 2: Characterization of Distributed Systems.
Workshop on Future Learning Landscapes: Towards the Convergence of Pervasive and Contextual computing, Global Social Media and Semantic Web in Technology.
MIDORI The Post Windows Operating System Microsoft Research’s.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
Issues Autonomic operation (fault tolerance) Minimize interference to applications Hardware support for new operating systems Resource management (global.
Hadi Salimi Distributed Systems Lab, Computer Engineering School, Iran University of Schience and Technology, Tehran, Iran Winter 2011.
Distributed Computing Systems CSCI 4780/6780. Geographical Scalability Challenges Synchronous communication –Waiting for a reply does not scale well!!
Cloud Age Time to change the programming paradigm?
Fault-Tolerant Parallel and Distributed Computing for Software Engineering Undergraduates Ali Ebnenasir and Jean Mayo {aebnenas, Department.
Server to Server Communication Redis as an enabler Orion Free
FDT Foil no 1 On Methodology from Domain to System Descriptions by Rolv Bræk NTNU Workshop on Philosophy and Applicablitiy of Formal Languages Geneve 15.
CS 501: Software Engineering Fall 1999 Lecture 12 System Architecture III Distributed Objects.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
CSC480 Software Engineering Lecture 10 September 25, 2002.
Programmability Hiroshi Nakashima Thomas Sterling.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
6.894: Distributed Operating System Engineering Lecturers: Frans Kaashoek Robert Morris
What’s Ahead for Embedded Software? (Wed) Gilsoo Kim
Web Technologies Lecture 13 Introduction to cloud computing.
A Binary Agent Technology for COTS Software Integrity Anant Agarwal Richard Schooler InCert Software.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
The Post Windows Operating System
Threads vs. Events SEDA – An Event Model 5204 – Operating Systems.
Netscape Application Server
Self Healing and Dynamic Construction Framework:
Human Complexity of Software
Design pattern for cloud Application
Chapter 6: Architectural Design
From Use Cases to Implementation
Presentation transcript:

Cloud Programming James Larus Microsoft Research Mysore-Park Workshop on Cloud Computing Mysore India, January 13, 2010

What is Cloud Computing? More Than Amazon Web Services / Microsoft Azure / Google AppEngine Platform as a service – On-demand, internet computing resources hosted by someone else – Commodification of distributed computing More significant is software model enabled by platform Inherently distributed – Range of clients (single purpose -> rich) – Multiple computers in the cloud Ubiquitous access to information and computation

Cloud Computing

New Programming Model, New Problems (and some old, unsolved ones) Concurrency Parallelism Message passing Distribution High available Performance Application partitioning Defect detection High-level abstractions

Programming Languages / Compilers / Tools Research What can these research communities contribute to the adoption of cloud computing? Can new problems reinvigorate these areas?

Concurrency Inherently concurrent programming model Asynchrony in message-driven model Processing multiple streams of requests Long-standing divide between threads and events Threads offer familiar sequential programming model – But, state can change when thread is preempted (=> synchronization) – Cost of thread and context switch limits concurrency Handlers respond to events – Structure lost across sequences of event handlers – Code explicitly manipulates local state (no stack frames) Also, higher-level (state machine, Actor, …) models Lack of consensus inhibits research, development, reuse, interoperability Parallel programming, redux

Parallelism Computers are parallel Increased performance Increased power efficiency Computers will be heterogeneous Multiple, non-isomorphic functional units Data centers are vast message-passing clusters Availability and throughput Parallel programming is long-standing sore for computer science State of the art: threads and synchronization No consensus on shared memory semantics Low level and error prone (assembly language) Interesting new research on higher level models (not panaceas) Transactional memory Deterministic parallelism Radical proposal: abolish shared memory Message passing is inherent in distributed systems – Why 2 models Shared memory is more difficult and error prone

Message Passing Not only fundamental to distributed systems, but also a better parallel programming model Performance / correctness isolation Well-defined points of interaction Scalable model More difficult to use Little language support – Erlang integrates message with pattern matching – Sing# channel contracts – Sing# postbox semantics Message passing libraries – Fundamental mismatch: asynchronous strange in a synchronous world Open problems Control structures for asynchronous messages Communications contracts Integration of messages in type system and memory model

Distribution Distributed systems are rich source of difficult problems Replication Consistency Quorum Well studied field produced good solutions Outsider’s perspective: research is focused on fundamental problems and used in real systems How can these techniques be incorporated into programming model? Libraries Language integration New models

Availability Services must be highly available Blackberry outage gets national media attention Affect millions of people simultaneously Service can become part of national infrastructure High availability is challenge Starts with design and engineering Hard to eliminate all “single points of failure” Murphy’s law rules Antithetical to rapid software evolution Programming models provide little support of systematic error handling Disproportionate fraction of software defects in error handling code – Afterthought – Run in inconsistent state – Difficult to test Erlang has systematic philosophy of fail and notify (but is stateless) Could lightweight transactions simplify rollback for stateful languages?

Performance Performance is system-level concern Goes far beyond the code running on a machine Most performance tools focus on low-level details Automatic optimization (compilers) is very granular Current approach is wasteful and uncertain Build, observe, tweak, overprovision, pray Performance should be specified as part of behavior SLAs as well as pre-/post-conditions Need scalability Grow by adding machines, not rewriting software Architecture should be the starting point Model and simulate before building a system What is equivalent of Big-O notation for scalability? Adaptivity Systems need to be introspective and capable of adapting behavior to load e.g., simplify home page when load spikes, defer low-priority tasks, provision more machines, …

Application Partitioning Static partition of functionality between client and server Difficult to support range of clients with different architectures and capabilities Difficult to adapt to changing constraints (e.g., battery) Move computation to data, particularly when communications constrained Code mobility – Exists in data center (VMs), why not across data center boundary? Currently, client and server are two fundamentally different applications Evolution around interfaces Volta (Microsoft) – Single program model, compiled for server and client

Defect Detection Considerable progress in past decade on defect detection tools Tools focused on local properties (e.g., buffer overruns, test coverage, races, etc.) Little work on system-wide properties Modular checking Whole program analysis expensive and difficult Not practical for services Assertions and annotations at module boundaries Can check global properties locally e.g., Rajamani & Rehof’s Conformance Checking New domain of defects Message passing Code robustness Potential performance bottlenecks

High-Level Abstractions Map-reduce and dataflow abstractions simplify large-scale data analysis in data centers Convenient way to express problems Hide complex details (distribution, failure, restart) Allow optimization (speculation) Need more abstractions for wider range of problems Not appropriate for services

More, … Consistency models Persistence

Orleans 16 Orleans Runtime Azure (DC OS) OS VM HW Application Code Specs Verify Compile

Orleans Architecture 17 Azure Internet Application DC#Tools Orleans Runtime Geo-DistributionData Replication and Consistency Performance MonitoringAdaptive Control Distributed DebuggingRuntime (Correctness) Monitoring Deployment, Configuration, Maintenance

Channel Shared State Grain Silo Orleans Runtime (ORT) Data Center 1 Data Center 2 Client Orleans Programming Model 18

Data Model 19 Migration Persistence Directory Replication Mobility

Conclusion Cloud computing is more than VMs, data centers, web services, … New way of performing computation New opportunity to correct problems with existing computing models Cost, complexity, reliability, …