Skip to content

Latest commit

 

History

History
52 lines (43 loc) · 5.16 KB

README.md

File metadata and controls

52 lines (43 loc) · 5.16 KB

Cloud Computing Infrastructures

Abstract.

Cloud computing is a recent technology that enables massively distributed computation and storage. This new paradigm results from the merge of three technological advances: the virtualization of computing resources, the collapse of storage costs, and the ubiquitous availability of fast networks.

Typically supported by state-of-the-art data-centers containing ensembles of networked virtual machines, the Cloud delivers a myriad of remote digital services, including Infrastructure as a Service (IaaS), Platform as a Service (PaaS) and Software as a Service (SaaS). Using these services, enterprises may offload their computing infrastructure to right-size their expenditure and reduce the time-to-market of their products.

The Cloud brings several key benefits to mainstream computing. First, developers with innovative ideas for new Internet services no longer require large capital outlays in hardware to deploy their services, or human expense to operate them. The Cloud also frees information technologies companies from low-level tasks, such as setting up basic hardware and software infrastructures. Finally, by employing cloud services, companies can scale up and down on an as-needed basis, paying only for what they actually use. For all these benefits, cloud computing is of pivotal importance today in modern software applications, and as an economical area, it displays a double-digit growth rate per annum for a decade.

This course studies in detail the infrastructures that support the Cloud. We first examine the principles of resources virtualization and how to deploy and orchestrate clusters of virtual machines and containers. In a second part, we review some fundamentals of large-scale distributed systems. These ideas are then applied in a third part to the construction of modern distributed data stores. Such stores run on commodity servers and are able to deliver the massive performance needed by cloud services. We study key notions such as data consistency, data distribution, replication and indexing, and we learn how to think for scalability and fault-tolerance, two fundamentals requirements of modern distributed applications.

List of lectures.

  1. Introduction to cloud computing architectures
  2. Data dissemination
  3. Data distribution
  4. Shared objects & consistency
  5. Protocols for data replication
  6. Hardware virtualization (by Mathieu Bacou)
  7. Operating system-level virtualization (by Mathieu Bacou)
  8. Serverless computing (by Mathieu Bacou)
  9. Coordination kernels
  10. The Paxos protocol
  11. Distributed transactional systems
  12. Inverted Index (by Emmanuel Bernard)
  13. Replicated Data Consistency for Large Scale Distributed Systems (by Gérald Oster)

List of practicals.

  1. Basics of Kubernetes
  2. Scaling horizontally a web service
  3. A key-value store (almost) from scratch
  4. A single-writer multiple-readers register in message-passing
  5. Virtual machine management
  6. Simple container engine
  7. Basics of Apache OpenWhisk
  8. Scaling horizontally a web service, revisited
  9. Coordination in practice with Apache ZooKeeper
  10. A transactional banking system
  11. Traveling in the Big Apple