CMSC389L

Week 1

Introduction + Cloud Computing 101

January 26, 2018

What are STICs?

STICs: Student Initiated Courses

  • 7 STICs (including 389L) offered in Fall 2017; 12+ in S18
  • More info: sticsumd.com

Interested in teaching a STIC?

Come talk with me after class!

STICs: Feedback

Submit a feedback survey every week

This week: ter.ps/pccS18f1

We read every submission.

It's anonymous

Course Facilitators

Colin King

colink@umd.edu

Andrej Rasevic

arasevic@umd.edu

Isaac Lockwood

ialock@umd.edu

Faculty Advisor

Responsible for final grading decisions and resolving conflicts.

Dr. Neil Spring

nspring@cs.umd.edu

It all started with this...

Google's first production server rack

 

Pioneered the idea of using cheap commodity hardware to maximize availability

Scaling Hardware

Why this is hard to do:

  • Large up-front capital cost
  • Hardware fails often at scale
  • Need specialized knowledge for building + maintaining these servers
  • Ordering new product takes weeks
  • Deploying globally requires a global team
  • Success disasters

Scaling Exercise

1 Server = 20k Users

Can you accurately forecast how many servers to maintain?

  • Jan 2007: 1 user
  • Jan 2008: 10,000 users
  • Jan 2009: 30,000 users
  • Jan 2010: 50,000 users
  • Jan 2011: 200,000 users
  • Jan 2012: 180,000 users

Enter: AWS

Amazon faced this problem back in the early 2000s.

 

Their solution? Lease out extra compute capacity.

 

This reduces the scaling volatility for Amazon, and greatly simplifies the scaling process for other companies.

"Cloud Computing"

  • Cloud Computing: "is a ... paradigm that enables ubiquitous access to shared pools of configurable system resources and higher-level services that can be rapidly provisioned with minimal management effort, often over the Internet. " (Wikipedia)
    • In other words, it abstracts away all of those previous problems.
    • You work with higher-level primitives than servers/storage/power/etc.

Cloud Computing Primitives

  • Infrastructure-as-a-Service: servers, storage, networking, power/cooling/maintenance/etc.
  • Platform-as-a-Service: deployment tools that don't require infrastructure-level development
  • Software-as-a-Service: software available with little to no development required

Cloud Computing: Benefits

Okay, I'm a business. What benefits does this provide me?

 

  • It's cheaper
    • Providers have an economy-of-scale because they buy this hardware in bulk
  • It's globally available
    • F.e., Amazon runs datacenters across the globe
  • Pay-for-what you use
    • It's also metered to the minute/second
    • Enables experimentation + entrepreneurship
  • No hardware failures/upgrades/maintenance

Cloud Computing: Providers

Cloud Computing: Drawbacks

  • Vendor lock-in
    • Hard to switch GCP -> AWS or AWS -> Azure, etc.
  • Proprietary source code
    • Hard to debug
  • Commodity hardware
    • Must plan for frequent failures

Everything fails all the time.

Werner Vogels, CTO Amazon

Syllabus

Class Syllabus:

http://ter.ps/pccS18

Why should you learn AWS?

Almost every tech company runs on one of the cloud computing providers.

 

Very few new-grads have any experience with this. Most learn on the job.

 

Infrastructure / SRE / DevOps are another software engineering path worth exploring.

Wrapping Up

Review the syllabus: http://ter.ps/pccS18

 

Join Piazza (see the syllabus)

 

First codelab due Thursday midnight  (Python 101)

 

Feedback form: ter.ps/pccS18f1

CMSC389L S18: Week 1

By Colin King

CMSC389L S18: Week 1

  • 1,056