This is a half-hr tech talk designed for developers to give a comprehensive, vendor-agnostic overview of cloud computing, primarily targeting educators in the higher education market but is open to any developer. This is followed by an introduction to products in Google Cloud, focusing on the serverless products. The talk ends with several inspirational examples of what can be built with Google Cloud.
Cloud computing overview & running your code on Google Cloud
1. Cloud computing overview &
Running code on Google Cloud
Wesley Chun
Developer Advocate, Google
Adjunct CS Faculty, Foothill College
G Suite Dev Show
goo.gl/JpBQ40
About the speaker
Developer Advocate, Google Cloud
● Mission: enable current and future
developers everywhere to be
successful using Google Cloud and
other Google developer tools & APIs
● Videos: host of the G Suite Dev Show
on YouTube
● Blogs: developers.googleblog.com &
gsuite-developers.googleblog.com
● Twitters: @wescpy, @GoogleDevs,
@GSuiteDevs
Previous experience / background
● Software engineer & architect for 20+ years
● One of the original Yahoo!Mail engineers
● Author of bestselling "Core Python" books
(corepython.com)
● Technical trainer, teacher, instructor since
1983 (Computer Science, C, Linux, Python)
● Fellow of the Python Software Foundation
● AB (Math/CS) & CMP (Music/Piano), UC
Berkeley and MSCS, UC Santa Barbara
● Adjunct Computer Science Faculty, Foothill
College (Silicon Valley)
2. Agenda and Why
● Not enough cloud computing in engineering curriculum
● Need to prep next-generation cloud-ready workforce
● Introduction to cloud computing
● Introduction to Google Cloud
● Run your code on Google Cloud serverless
● Build with all of Google Cloud (inspiration)
● Resources and summary
Introduction to cloud
computing
All you need to know about the cloud
1
4. Google Compute Engine, Google Cloud Storage
AWS EC2 & S3; Rackspace; Joyent
Cloud service levels/"pillars"
SaaS
Software as a Service
PaaS
Platform as a Service
IaaS
Infrastructure as a Service
Google BigQuery, Cloud SQL,
Cloud Datastore, NL, Vision, Pub/Sub
AWS Kinesis, RDS; Windows Azure SQL, Docker
Google Apps Script, App Maker
Salesforce1/force.com
G Suite (Google Apps)
Yahoo!Mail, Hotmail, Salesforce, Netsuite
Google App Engine, Cloud Functions
Heroku, Cloud Foundry, Engine Yard, AWS Lambda
Google Compute Engine, Google Cloud Storage
AWS EC2 & S3; Rackspace; Joyent
Outsourcing of apps (SaaS)
SaaS
Software as a Service
PaaS
Platform as a Service
IaaS
Infrastructure as a Service
Google BigQuery, Cloud SQL,
Cloud Datastore, NL, Vision, Pub/Sub
AWS Kinesis, RDS; Windows Azure SQL, Docker
Google Apps Script, App Maker
Salesforce1/force.com
Google App Engine, Cloud Functions
Heroku, Cloud Foundry, Engine Yard, AWS Lambda
G Suite (Google Apps)
Yahoo!Mail, Hotmail, Salesforce, Netsuite
5. Google Compute Engine, Google Cloud Storage
AWS EC2 & S3; Rackspace; Joyent
Outsourcing of hardware (IaaS)
SaaS
Software as a Service
PaaS
Platform as a Service
IaaS
Infrastructure as a Service
Google BigQuery, Cloud SQL,
Cloud Datastore, NL, Vision, Pub/Sub
AWS Kinesis, RDS; Windows Azure SQL, Docker
Google Apps Script, App Maker
Salesforce1/force.com
G Suite (Google Apps)
Yahoo!Mail, Hotmail, Salesforce, Netsuite
Google App Engine, Cloud Functions
Heroku, Cloud Foundry, Engine Yard, AWS Lambda
Google Compute Engine, Google Cloud Storage
AWS EC2 & S3; Rackspace; Joyent
Outsourcing of logic-hosting (PaaS)
SaaS
Software as a Service
PaaS
Platform as a Service
IaaS
Infrastructure as a Service
Google BigQuery, Cloud SQL,
Cloud Datastore, NL, Vision, Pub/Sub
AWS Kinesis, RDS; Windows Azure SQL, Docker
Google Apps Script, App Maker
Salesforce1/force.com
G Suite (Google Apps)
Yahoo!Mail, Hotmail, Salesforce, Netsuite
Google App Engine, Cloud Functions
Heroku, Cloud Foundry, Engine Yard, AWS Lambda
6. Google Compute Engine, Google Cloud Storage
AWS EC2 & S3; Rackspace; Joyent
IaaS/PaaS gray area (DataB/S/P-aaS?)
SaaS
Software as a Service
PaaS
Platform as a Service
IaaS
Infrastructure as a Service
Google Apps Script, App Maker
Salesforce1/force.com
G Suite (Google Apps)
Yahoo!Mail, Hotmail, Salesforce, Netsuite
Google App Engine, Cloud Functions
Heroku, Cloud Foundry, Engine Yard, AWS Lambda
Google BigQuery, Cloud SQL,
Cloud Datastore, NL, Vision, Pub/Sub
AWS Kinesis, RDS; Windows Azure SQL, Docker
Google Compute Engine, Google Cloud Storage
AWS EC2 & S3; Rackspace; Joyent
SaaS/PaaS gray area
SaaS
Software as a Service
PaaS
Platform as a Service
IaaS
Infrastructure as a Service
Google BigQuery, Cloud SQL,
Cloud Datastore, NL, Vision, Pub/Sub
AWS Kinesis, RDS; Windows Azure SQL, Docker
G Suite (Google Apps)
Yahoo!Mail, Hotmail, Salesforce, Netsuite
Google App Engine, Cloud Functions
Heroku, Cloud Foundry, Engine Yard, AWS Lambda
Google Apps Script, App Maker
Salesforce1/force.com
7. Summary of responsibility
SaaS
Software as a Service
Applications
Data
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
Applications
Data
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
IaaS
Infrastructure as a Service
Applications
Data
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
PaaS
Platform as a Service
Managed by YOU Managed by cloud vendor
Applications
Data
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
on-prem
all you, no cloud
Imagine you’re hosting a party...
Photo by Annie Spratt on Unsplash
8. On-Prem
(DIY)
IaaS
(Compute Engine)
PaaS
(App Engine)
SaaS
(Cloud Functions)
Pick theme
Plan party
Find space
Cook
On call
Pick theme
Plan party
Rent hall
Cook
On call
Pick theme
Plan party
Rent hall
Hire Caterer
Hire manager
Pick theme
Hire planner
Rent hall
Hire caterer
Hire manager
Theme -
Logistics -
Space -
Food -
Manage -
Spec/Reqs
Design app
Provision HW
Build & Serve app
Manage app
IaaS++
(Cloud Launcher)
Pick theme
Plan party
Rent hall
Hire Caterer
On call
2 Introduction to
Google Cloud
GCP and G Suite
9. Google Compute Engine, Google Cloud Storage
AWS EC2 & S3; Rackspace; Joyent
SaaS
Software as a Service
PaaS
Platform as a Service
IaaS
Infrastructure as a Service
Google Apps Script, App Maker
Salesforce1/force.com
G Suite (Google Apps)
Yahoo!Mail, Hotmail, Salesforce, Netsuite
Google App Engine, Cloud Functions
Heroku, Cloud Foundry, Engine Yard, AWS Lambda
Google BigQuery, Cloud SQL,
Cloud Datastore, NL, Vision, Pub/Sub
AWS Kinesis, RDS; Windows Azure SQL, Docker
Google Cloud Platform vs. G Suite
G Suite
APIs
GCP
APIs
10. REST API examples
Short Python code snippets using GCP & G Suite APIs
API key (public data) vs. OAuth2 access (private data)
Google APIs client
libraries for many
languages; demos in
developers.google.com/
api-client-library
11. List (first 100) files/folders in Google Drive
from __future__ import print_function
from apiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
Listing your files
goo.gl/ZIgf8k
Automate photo albums
OR
12. Import/Export: Customized reports, “database,” or both!
Try our Node.js customized reporting tool codelab:
g.co/codelabs/sheets
Migrate SQL data to a Sheet
# read SQL data then create new spreadsheet & add rows into it
FIELDS = ('ID', 'Customer Name', 'Product Code',
'Units Ordered', 'Unit Price', 'Status')
cxn = sqlite3.connect('db.sqlite')
cur = cxn.cursor()
rows = cur.execute('SELECT * FROM orders').fetchall()
cxn.close()
rows.insert(0, FIELDS)
DATA = {'properties': {'title': 'Customer orders'}}
SHEET_ID = SHEETS.spreadsheets().create(body=DATA,
fields='spreadsheetId').execute().get('spreadsheetId')
SHEETS.spreadsheets().values().update(spreadsheetId=SHEET_ID, range='A1',
body={'values': rows}, valueInputOption='RAW').execute()
Migrate SQL data
to Sheets
goo.gl/N1RPwC
13. BigQuery: querying Shakespeare words
TITLE = "The top 10 most common words in all of Shakespeare's works"
QUERY = '''
SELECT LOWER(word) AS word, sum(word_count) AS count
FROM [bigquery-public-data:samples.shakespeare]
GROUP BY word ORDER BY count DESC LIMIT 10
'''
rsp = BQ.query(body={'query': QUERY}, projectId=PROJ_ID).execute()
print('n*** Results for %r:n' % TITLE)
for col in rsp['schema']['fields']: # HEADERS
print(col['name'].upper(), end='t')
print()
for row in rsp['rows']: # DATA
for col in row['f']:
print(col['v'], end='t')
print()
Top 10 most common Shakespeare words
$ python bq_shake.py
*** Results for "The most common words in all of Shakespeare's works":
WORD COUNT
the 29801
and 27529
i 21029
to 20957
of 18514
a 15370
you 14010
my 12936
in 11722
that 11519
14. [simple API/API key sample]
Simple sentiment & classification analysis
data = {'type': 'PLAIN_TEXT', 'content': '''
Google, headquartered in Mountain View, unveiled the new Android
phone at the Consumer Electronics Show. Sundar Pichai said in
his keynote that users love their new Android phones.'''
sentiment = NL.documents().analyzeSentiment(
body={'document': data}).execute().get('documentSentiment')
print('TEXT:', text)
print('nSENTIMENT: score (%s), magnitude (%s)' % (
sentiment['score'], sentiment['magnitude']))
print('nCATEGORIES:')
categories = NL.documents().classifyText(
body={'document': data}).execute().get('categories')
for c in categories:
print ('* %s (%s)' % (c['name'][1:], c['confidence']))
PY
Sentiment & classification analysis output
$ python nl_sent_class.py
TEXT: Google, headquartered in Mountain View, unveiled the new Android
phone at the Consumer Electronics Show. Sundar Pichai said in
his keynote that users love their new Android phones.
SENTIMENT: score (0.3), magnitude (0.6)
CATEGORIES:
* Internet & Telecom (0.76)
* Computers & Electronics (0.64)
* News (0.56)
15. What about Google Classroom?
● Originally announced May 2014
● LMS integrated with G Suite (Google Docs, Sheets, Slides, etc.)
● Helps teachers manage coursework, create classes, distribute
assignments, grade & send feedback, manage students &
guardians, manage discussion forums, give & grade quizzes
● Suitable for higher ed; more likely to be used in K-12
○ Higher ed generally already using dedicated LMS
● Resources
○ edu.google.com/products/classroom
○ blog.google/outreach-initiatives/education/previewing-new-classroom
○ developers.google.com/classroom
○ developers.google.com/apps-script/advanced/classroom
What about Google Course Kit?
● Originally announced Jul 2018
● More suitable in higher ed due to dedicated LMS
● Integrate your LMS with G Suite (Google Docs, Sheets, Slides, etc.)
○ Blackboard, Canvas, Moodle, Sakai supported
○ Integrate w/your LMS at no cost
○ Compliant with Learning Tools Interoperability (LTI) standard
● Create assignments & manage coursework from within your LMS
● Built-in grading tool; manage feedback in one central place
● Resources
○ edu.google.com/products/course-kit
○ blog.google/outreach-initiatives/education/introducing-course-kit-
new-ways-collaborate-g-suite-your-lms-designed-higher-ed
○ support.google.com/edu/coursekit/answer/9069054
○ support.google.com/edu/coursekit/answer/9069147
16. 3
Run your code on
Google Cloud serverless
GCP: Google App Engine , Google Cloud Functions
G Suite: Google Apps Script , Google App Maker
Serverless: what & why
● What is serverless?
○ Misnomer: of course there's a server somewhere
○ You just don't have to worry about it!
○ Forbes (May 2018): Serverless... [helps] developers focus on writing code without having to
worry about infrastructure... servers (physical & virtual) completely abstracted away from the
user. [Developers] ... focused on solving business problems (e.g., faster app deployment)
● Why serverless?
○ Fastest growing segment of cloud... per 2 analysts*:
■ $1.9B (2016) and $4.25B (2018) ⇒ $7.7B (2021) and $14.93B (2023)
○ Unless focused on DevOps... VMs, networking, load balancing, web servers,
database servers, frontends/proxies, etc. less relevant for app-builders
○ What if you go viral? Autoscaling: your new best friend
○ What if you don't? Code not running? You're not paying. (No VMs to shutdown.)
* in USD; source: MarketsandMarkets™ & CB Insights (Aug 2018)
17. Google Compute Engine, Google Cloud Storage
AWS EC2 & S3; Rackspace; Joyent
SaaS
Software as a Service
PaaS
Platform as a Service
IaaS
Infrastructure as a Service
G Suite (Google Apps)
Yahoo!Mail, Hotmail, Salesforce, Netsuite
Google App Engine, Cloud Functions
Heroku, Cloud Foundry, Engine Yard, AWS Lambda
Google BigQuery, Cloud SQL,
Cloud Datastore, NL, Vision, Pub/Sub
AWS Kinesis, RDS; Windows Azure SQL, Docker
Serverless: PaaS-y compute/processing
Google Apps Script, App Maker
Salesforce1/force.com
Google App Engine
App-hosting in the cloud
19. Popular App Engine Use Cases
● Mobile/Tablet
○ App backends
○ Cloud persistence
● Social/Mobile Games
○ Speed, scale
○ API integrations
○ Personals/dating
● Consumer Web Apps
○ Unpredictable traffic
○ Scale
● Apps in Academia
○ Any course where students
build web or mobile apps
○ Research projects
○ IT/Operational apps
● Business Apps
○ Enterprise
○ Java runtime
○ Web or Mobile
Google Cloud Functions
Function-hosting in the cloud
20. Google Cloud Functions
Languages Supported
● Node.js 6, 8 (JavaScript)
● Python 3.7
● Go 1.11
Deploying Cloud Functions
● Create locally then deploy on cmd-line OR
● Edit and deploy from developer web console
Triggering Cloud Functions (response to events)
● HTTP — via HTTP request
● Cloud Storage — bucket object/metadata CRUD
● Cloud Pub/Sub — new message
● Firebase (DB, Storage, Analytics, Auth)
To create a function
Create function code locally then deploy on cmd-line
OR
1. Open GCP developer console @ console.cloud.google.com
2. Select a project (or create new one)
3. Choose Cloud Functions, then Create Function
4. Pick name, memory, trigger type, language, etc.
5. Write code in browser then click to deploy (and test)
21. "Hello World" Python (nearly-)MVP Cloud Function
main.py
def hello_world(request):
return 'Hello %s!' % request.args['value']
if hasattr(request, 'args') else 'World!'
Deploy:
$ gcloud functions deploy hello --runtime python37 --trigger-http
Access globally (curl):
curl -X POST https://[GCP_REGION]-[PROJECT_ID].cloudfunctions.net/hello
-H "Content-Type:application/json" --data '{"value": "Guido"}'
Access globally (browser):
https://[GCP_REGION]-[PROJECT_ID].cloudfunctions.net/hello?value=Guido
Google Apps Script (and App Maker)
Customized JS runtime for G Suite automation, extension, and integration
23. What can you do with this?
Accessing maps from
spreadsheets?!?
goo.gl/oAzBN9
This… with help from Google Maps & Gmail
function sendMap() {
var sheet = SpreadsheetApp.getActiveSheet();
var address = sheet.getRange("A2").getValue();
var map = Maps.newStaticMap().addMarker(address);
GmailApp.sendEmail('friend@example.com', 'Map',
'See below.', {attachments:[map]});
}
JS
24. ● Low-code assistive development
environment; Cloud SQL default
● Go from idea to app in minutes
● Drag-n-drop app building
● Many pre-made template apps
● Generates Apps Script code
● Requires at least G Suite Business
Google App Maker
developers.google.com/appmaker
25. 4 All of Cloud (inspiration)
Build with both GCP tools and G Suite
Custom intelligence in Gmail
Analyze G Suite data with GCP
26. Gmail message processing with GCP
Gmail
Cloud
Pub/Sub
Cloud
Functions
Cloud
Vision
G Suite GCP
Star
message
Message
notification
Trigger
function
Extract
images
Categorize
images
27. Inbox augmented with Cloud Function
Big data analysis to slide presentation
Access GCP tools from G Suite
32. Supercharge G Suite with GCP
G Suite GCP
BigQuery
Apps Script
Slides Sheets
Application
request
Big data
analytics
Online resources & summary
What's available for students & educators?5
33. Session Summary
● Why go cloud?
○ Cloud computing has taken the world by storm
○ You're behind if you're not already using it… it's not too late!
○ Help train the next generation cloud-ready workforce!
● Google Cloud and why serverless?
○ Many features: compute, storage, AI/ML, NW, data processing, etc.
○ Serverless lets users focus on just their logic (apps or functions)
○ Interesting possibilities using both platforms (GCP + G Suite)
References
● G Suite, Google Apps Script documentation & open source repos
○ developers.google.com/gsuite
○ developers.google.com/apps-script
○ github.com/gsuitedevs
● Google Cloud Platform (GCP) documentation & open source repos
○ cloud.google.com/gcp
○ cloud.google.com/docs
○ github.com/GoogleCloudPlatform/{python,nodejs}-docs-samples
○ Know AWS? Compare w/GCP at: cloud.google.com/docs/compare/aws
● Google APIs Client Libraries (G Suite & GCP) & Google Cloud SDK (GCP-only)
○ developers.google.com/api-client-library
○ cloud.google.com/sdk
34. More references
● Relevant videos
○ goo.gl/RbyTFD (new Google APIs project setup)
○ goo.gl/KMfbeK (common Python OAuth2 boilerplate code review)
○ goo.gl/ZIgf8k (APIs intro codelab [Drive API])
● Relevant codelabs
○ g.co/codelabs/gsuite-apis-intro (Drive API)
○ g.co/codelabs/apps-script-intro
○ codelabs.developers.google.com/codelabs/cloud-app-engine-python
● Inspirational apps
○ bit.ly/2OcptaG
○ cloud.google.com/blog/products/application-development/
adding-custom-intelligence-to-gmail-with-serverless-on-gcp
○ NEXT '19: cloud.withgoogle.com/next/sf/sessions?session=DEV212
Learning resources
● Codelabs: self-paced, hands-on tutorials
○ Google codelabs: need a Gmail account, always free
■ g.co/codelabs/cloud
○ Qwiklabs codelabs: don't need a Gmail acct; typically not free
■ bit.ly/ccscsw-qwiklabs (promo thru Mar 31) then google.qwiklabs.com
■ Individuals can request 200 more credits; 5000 credits for use in courses
● Official GCP docs: cloud.google.com/gcp/getting-started
○ Recommended: Getting Started, Cloud Console, Cloud Shell, Cloud SDK, GCP Free Tier
(need a credit card), Community
● YouTube video series: youtube.com/GoogleCloud
○ Recommended: Cloud Minute shorts & Cloud NEXT videos
○ G Suite Dev Show: goo.gl/JpBQ40
35. Resources for Higher Education
● Education grant program
○ Teaching grants (per-course basis)
■ $50USD for students
■ $100USD for faculty & TAs
■ You'll barely use any of it… KEY: no giving Google your credit card
○ Research grants
■ Larger amounts, granted for longer period of time
○ Turnaround time: 3-4 business days
● Teacher center
○ teachercenter.withgoogle.com/gcp
○ Apply here for education grants
○ Apply here for Qwiklabs credits
Career Readiness:
Associate Cloud
Engineer track
On-demand
Get free access to “Architecting
with Google Cloud Platform”
specialization on-demand on
Coursera.
(100% discount: 6 courses, 4 months access)
Self-paced labs
Get free access to “Cloud
Architecture Quest” & other
self-paced labs on Qwiklabs.
(100% discount: 10+ labs)
Google Cloud Certified
Prepare to take the exam and
earn your Associate Cloud
Engineer Certification.
(100% discount for faculty, 50% discount for
students per adherence to timelines and
other criteria)
Prepare your students for
careers in a cloud-first world.
Apply now.
See Career Readiness tab
under cloud.google.com/edu
36. Invite me (or my team) to
your campus... it's our job!
● Faculty & grad students
● Researchers
● Undergrads
● University IT staff/CIO/CTO
● University entrepreneurship
centers/capstone project leads
Thank you! Questions?
Wesley Chun
@wescpy