1 of 21

Cloud Computing

2 of 21

Welcome to the end!

  • One more assignment (due Sunday, May 4)
  • Exam coming up
    • Released Friday, May 9 @ 12:00 AM EDT
    • Due Wednesday, May 14 @ 11:59 PM EDT
    • Provide detailed (but concise!) answers that convey a real understanding of the topic and its nuances and trade-offs
    • Review session to be scheduled (watch the "Sections" portion of the website)
      • Check out Josh's review notes if you'd like
    • For questions during the exam, email Doug (lloyd@cs50.harvard.edu).

3 of 21

What is the Cloud?

other people's computers*

* Not a great answer for the assignment

4 of 21

Why cloud computing?

  • Buy what you need when you need it
    • Hardware
    • Storage
    • Services
  • Don't pay for it when you don't need it
  • Someone else handles upgrades, maintenance, hardware issues
  • Redundancy
    • Servers/files/etc. can be in multiple geographic locations
  • (Potentially) reduced costs

5 of 21

Scalability and elasticity

Everything's going great!

Server

6 of 21

Scalability and elasticity - vertical

A bigger server could�handle more traffic.

But you can only get�so big before running�out of resources

Server

7 of 21

Scalability and elasticity - horizontal

You could expand �horizontally instead

Server

Server

8 of 21

Scalability and elasticity - horizontal

Load balancing creates�a single "entry point"

Server

Server

Load Balancer

just another server �with a special job

9 of 21

Scalability and elasticity - horizontal

Grow more if needed

Server

Server

Load Balancer

Server

10 of 21

Scalability and elasticity - horizontal

Shrink when traffic isn't as heavy

Server

Server

Load Balancer

11 of 21

Single Point of Failure

Weak point in the system

Server

Server

Load Balancer

Server

12 of 21

Single Point of Failure

"Heartbeat" - signal that all is ok

Solutions may get a bit complex

Server

Server

Load Balancer

Server

Load Balancer

13 of 21

Databases

Yet more options!

  • Replication
  • Sharding

Server

Server

Load Balancer

Server

Load Balancer

Primary DB

Read DB

Read DB

also just another server �with a special job (and �lots of storage space)

14 of 21

Read replication

15 of 21

Horizontal sharding

16 of 21

Vertical sharding

17 of 21

_____ as a Service

Software as a Service

Platform as a Service

Infrastructure as a Service

18 of 21

IaaS and VMs

  • All the servers, load balancers, etc. can be physical hardware OR we can create virtual versions using software
  • Full Virtualization: guest OS "sees" hypervisor as hardware
  • OS-level Virtualization (containerization) allows use of common OS

19 of 21

PaaS

  • What if I don't want to deal with choosing and configuring (virtual) hardware?
  • With PaaS, you worry about the software
  • Servers, load balancers, scaling, etc. is handled for you
  • Downside: less control, transparency

20 of 21

SaaS

  • Applications you can use without worrying about how they're implemented
  • Google Docs/Sheets/Slides, Microsoft Office 365
  • Pretty much any online software (often with a subscription cost!)

21 of 21

What's next in CS?

  • The full CS50 experience (extension school, EdX)
    • C, Python, SQL, HTML, CSS, JavaScript
  • CS50P
    • Similar concepts, just Python
  • MIT OpenCourseware intro courses
    • Uses Python
  • Plan to use programming for stats and data science? Look into learning R on EdX or test out the new CS50R.
  • More of a front-end person? Learn JavaScript.

Any other questions, reach out and I'll be happy to help as best as I can!� josh@cs50.harvard.edu