Cloud Computing Concepts, Part 1

Brought by: Coursera

Overview

Cloud computing systems today, whether open-source or used inside companies, are built using a common set of core techniques, algorithms, and design philosophies – all centered around distributed systems. Learn about such fundamental distributed computing "concepts" for cloud computing.

Some of these concepts include: clouds, MapReduce, key-value/NoSQL stores, classical distributed algorithms, widely-used distributed algorithms, scalability, trending areas, and much, much more!

Know how these systems work from the inside out. Get your hands dirty using these concepts with provided homework exercises. In the programming assignments, implement some of these concepts in template code (programs) provided in the C++ programming language. Prior experience with C++ is required.

The course also features interviews with leading researchers and managers, from both industry and academia.

Syllabus

  • Week 1: Orientation, Introduction to Clouds, MapReduce
    • This course is oriented towards learners with similar backgrounds as juniors and seniors in a CS undergraduate curriculum. Since learners come from various backgrounds, it is critical you view this lecture AND pass the prerequisite test. This will ensure you have many of the assumed prerequisite pieces of knowledge required to enjoy this course.
  • Week 2: Gossip, Membership, and Grids
    • Lesson 1: This module teaches how the multicast problem is solved by using epidemic/gossip protocols. It also teaches analysis of such protocols. Lesson 2: This module covers the design of failure detectors, a key component in any distributed system. Membership protocols, which use failure detectors as components, are also covered. Lesson 3: This module covers Grid computing, an important precursor to cloud computing.
  • Week 3: P2P Systems
    • P2P systems: This module teaches the detailed design of two classes of peer to peer systems: (a) popular ones including Napster, Gnutella, FastTrack, and BitTorrent; and (b) efficient ones including distributed hash tables (Chord, Pastry, and Kelips). Besides focusing on design, the module also analyzes these systems in detail.
  • Week 4: Key-Value Stores, Time, and Ordering
    • Lesson 1: This module motivates and teaches the design of key-value/NoSQL storage/database systems. We cover the design of two major industry systems: Apache Cassandra and HBase. We also cover the famous CAP theorem. Lesson 2: Distributed systems are asynchronous, which makes clocks at different machines hard to synchronize. This module first covers various clock synchronization algorithms, and then covers ways of tagging events with causal timestamps that avoid synchronizing clocks. These classical algorithms were invented decades ago, yet are used widely in today’s cloud systems.
  • Week 5: Classical Distributed Algorithms
    • Lesson 1: This module covers how to calculate a distributed snapshot, leveraging causality again to circumvent the synchronization problem. Lesson 2: This lecture teaches how to order multicasts in any distributed system. Algorithms for assigning timestamp tags to multicasts using various flavors of ordering – FIFO, Causal, and Total – are covered. The module also covers virtual synchrony, a paradigm that combines reliable multicasts with membership views. Lesson 3: Consensus is one of the most important problems in a distributed system, enabling multiple machines to agree. This module uses Paxos, one of the most popular consensus solutions used in the industry today. Paxos is not perfect because consensus cannot be solved completely – an optional lecture presents the famous FLP proof of impossibility of consensus.

Taught by

Indranil Gupta

Cloud Computing Concepts, Part 1
Go to course

Cloud Computing Concepts, Part 1

Brought by: Coursera

  • Coursera
  • Free
  • English
  • Certificate Available
  • Available at any time
  • beginner
  • Arabic, French, Portuguese, Italian, German, Russian, English, Spanish, Korean, Kazakh, Hindi, Swedish, Greek, Chinese, Thai, Ukrainian, Japanese, Indonesian, Polish, Dutch, Turkish
8.1.2PHP Version263msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (165ms)
    • Application (97.22ms)
    • 1 x Booting (62.74%)
      164.83ms
      1 x Application (37%)
      97.22ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed4.57ms
      • select * from `courses` where `slug_en` = 'cloud-computing-concepts,-part-1' limit 1
        2.33ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. cloud-computing-concepts,-part-1
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-02-03 18:07:06' where `id` = 24
        550μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-02-03 18:07:06
        • 1. 24
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (10)
        340μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        300μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (15) and `institutions`.`deleted_at` is null
        310μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (2) and `providers`.`deleted_at` is null
        270μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 24 limit 1
        470μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 24
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        uCcOzEX2GHzmDEe8CuZId3SyAiKJmxeZ7ej9uPDr
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/cloud-computing-concepts,-part-1" ]
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/cloud-computing-concepts,-part-1
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "priority" => array:1 [ 0 => "u=0, i" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "cf-connecting-ip" => array:1 [ 0 => "3.139.89.178" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-ipcountry" => array:1 [ 0 => "US" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "x-forwarded-for" => array:1 [ 0 => "3.139.89.178" ] "cf-ray" => array:1 [ 0 => "90c45bcfeec3ced0-ORD" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_PRIORITY" => "u=0, i" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_CF_CONNECTING_IP" => "3.139.89.178" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_X_FORWARDED_FOR" => "3.139.89.178" "HTTP_CF_RAY" => "90c45bcfeec3ced0-ORD" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "53424" "REMOTE_ADDR" => "172.69.17.137" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/cloud-computing-concepts,-part-1" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1738606026.4817 "REQUEST_TIME" => 1738606026 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Mon, 03 Feb 2025 18:07:06 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InFMU2Nwc1VzekNnWjJ5NXQxdDlqRmc9PSIsInZhbHVlIjoibXdUZE9CaUVEdmpNREJ5TkhlQWpOMlNTSmF2dGNJWTZmaUZERFpHZy9mMERMVlRWTFBnVTZrVG42S1VxblpFcEJjTXdrT3Jlcy9DNi92YVBVOXlsTE5xM2QzMW9VZ28zRjJQVXJKSjVWOW9Qai92YWhzMjMvc29zWnBaTlNIbkgiLCJtYWMiOiI2YjJmZWM1YWVkMGIyMTY1YmQ5NTk5NDY4MzMxNjk1MTg2YzJlMDMxMTk4ZTkyMzgyYjY3YmVmODk2MjhjN2UxIiwidGFnIjoiIn0%3D; expires=Mon, 03 Feb 2025 20:07:06 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6InFMU2Nwc1VzekNnWjJ5NXQxdDlqRmc9PSIsInZhbHVlIjoibXdUZE9CaUVEdmpNREJ5TkhlQWpOMlNTSmF2dGNJWTZmaUZERFpHZy9mMERMVlRWTFBnVTZrVG42S1VxblpFcEJjTXdrT" 1 => "laravel_session=eyJpdiI6Ii9yVmFXZmx1bWt4T1VPOUlQcXYvemc9PSIsInZhbHVlIjoiMWU3dU5FaTRPbTQyUW90V2xPRlRTZFpaVVA4aHlYeUJOSHZHVWpmM1FYc04yYzJTcklCYmR4Z1hoejMxVTZUdHQ5NENEbG1qSnFiVmdRcStMTHJ4Um5QQ2dINkR6RUprejBYSGJZR1FWejRPaWsvVFJrbjVWOGhFZ0lMempaaDgiLCJtYWMiOiI4MzM0OGRlYzc5NjFhMmY0YzQ1NjJmMDcyOWM5NzhjY2ZhODZiMzRmZGU1MjAzZGJjNzUyNzEyMWIyOTNkM2M5IiwidGFnIjoiIn0%3D; expires=Mon, 03 Feb 2025 20:07:06 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Ii9yVmFXZmx1bWt4T1VPOUlQcXYvemc9PSIsInZhbHVlIjoiMWU3dU5FaTRPbTQyUW90V2xPRlRTZFpaVVA4aHlYeUJOSHZHVWpmM1FYc04yYzJTcklCYmR4Z1hoejMxVTZUdHQ5" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InFMU2Nwc1VzekNnWjJ5NXQxdDlqRmc9PSIsInZhbHVlIjoibXdUZE9CaUVEdmpNREJ5TkhlQWpOMlNTSmF2dGNJWTZmaUZERFpHZy9mMERMVlRWTFBnVTZrVG42S1VxblpFcEJjTXdrT3Jlcy9DNi92YVBVOXlsTE5xM2QzMW9VZ28zRjJQVXJKSjVWOW9Qai92YWhzMjMvc29zWnBaTlNIbkgiLCJtYWMiOiI2YjJmZWM1YWVkMGIyMTY1YmQ5NTk5NDY4MzMxNjk1MTg2YzJlMDMxMTk4ZTkyMzgyYjY3YmVmODk2MjhjN2UxIiwidGFnIjoiIn0%3D; expires=Mon, 03-Feb-2025 20:07:06 GMT; path=/XSRF-TOKEN=eyJpdiI6InFMU2Nwc1VzekNnWjJ5NXQxdDlqRmc9PSIsInZhbHVlIjoibXdUZE9CaUVEdmpNREJ5TkhlQWpOMlNTSmF2dGNJWTZmaUZERFpHZy9mMERMVlRWTFBnVTZrVG42S1VxblpFcEJjTXdrT" 1 => "laravel_session=eyJpdiI6Ii9yVmFXZmx1bWt4T1VPOUlQcXYvemc9PSIsInZhbHVlIjoiMWU3dU5FaTRPbTQyUW90V2xPRlRTZFpaVVA4aHlYeUJOSHZHVWpmM1FYc04yYzJTcklCYmR4Z1hoejMxVTZUdHQ5NENEbG1qSnFiVmdRcStMTHJ4Um5QQ2dINkR6RUprejBYSGJZR1FWejRPaWsvVFJrbjVWOGhFZ0lMempaaDgiLCJtYWMiOiI4MzM0OGRlYzc5NjFhMmY0YzQ1NjJmMDcyOWM5NzhjY2ZhODZiMzRmZGU1MjAzZGJjNzUyNzEyMWIyOTNkM2M5IiwidGFnIjoiIn0%3D; expires=Mon, 03-Feb-2025 20:07:06 GMT; path=/; httponlylaravel_session=eyJpdiI6Ii9yVmFXZmx1bWt4T1VPOUlQcXYvemc9PSIsInZhbHVlIjoiMWU3dU5FaTRPbTQyUW90V2xPRlRTZFpaVVA4aHlYeUJOSHZHVWpmM1FYc04yYzJTcklCYmR4Z1hoejMxVTZUdHQ5" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "uCcOzEX2GHzmDEe8CuZId3SyAiKJmxeZ7ej9uPDr" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/cloud-computing-concepts,-part-1" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]