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:
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,143