Slide 1

Slide 1 text

Cloud Platform End to End or “How we built Cloud Spin”

Slide 2

Slide 2 text

Mandy Waite Developer Advocate +MandyWaite @tekgrrl

Slide 3

Slide 3 text

Cloud Spin How we got all Matrix-y in the Cloud

Slide 4

Slide 4 text

#dfua, @tekgrrl, @googlecloud Resulting Image https://twitter.com/francesc/status/649405037303631873

Slide 5

Slide 5 text

#dfua, @tekgrrl, @googlecloud backdrop (16 ft x 14 ft) 2 ft 8 ft 8 ft 8 ft 19 x Nexus 6 Engineer’s View 10 Degrees Large Display

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

#dfua, @tekgrrl, @googlecloud Video of Cloud Spin https://www.youtube.com/watch?v=6oGWFiSrPBc

Slide 8

Slide 8 text

#dfua, @tekgrrl, @googlecloud Input Bucket Stitching Q Devices Extraction Q Notification Processor Extractor Stitcher Video Uploads Object Change Notifications Output Bucket Coordinator Backend Architecture

Slide 9

Slide 9 text

Video Uploads and Notifications

Slide 10

Slide 10 text

#dfua, @tekgrrl, @googlecloud Input Bucket Stitching Q Devices Extraction Q Notification Processor Extractor Stitcher Video Uploads Notification Output Bucket Coordinator Video Uploads and notifications

Slide 11

Slide 11 text

#dfua, @tekgrrl, @googlecloud ● Storage for large amounts of unstructured data ● Immediate access and strong consistency on reads ● Notifications fired for all newly arrived objects Requirements

Slide 12

Slide 12 text

#dfua, @tekgrrl, @googlecloud Object Store Change Notifications Store any amount of data, up to TBs per Object. Data encrypted at rest. Has full versioning, change notifications and resumable uploads and downloads 99.9% SLA through highly available, geo-redundant data-replication system. Strong read-after-write consistency for each object Reliable and Consistent Google Cloud Storage

Slide 13

Slide 13 text

#dfua, @tekgrrl, @googlecloud Standard Storage Durable Reduced Availability Storage speed availability durability cost Nearline Universal cloud storage suitable for any workload speed availability durability cost speed availability durability cost For use cases that don’t require high availability and high performance For long term storage of infrequently accessed content Cloud Storage Options

Slide 14

Slide 14 text

#dfua, @tekgrrl, @googlecloud Cloud Storage Bucket [myapp-input-bucket] $ gsutil notification watchbucket \ https://myapp.appspot.com gs://myapp-input-bucket Notification processing endpoint https://myapp.appspot.com Object Change Notifications

Slide 15

Slide 15 text

#dfua, @tekgrrl, @googlecloud Cloud Storage Bucket [myapp-input-bucket] Client Notification processing endpoint Add/update/remove object Object Change Notifications

Slide 16

Slide 16 text

#dfua, @tekgrrl, @googlecloud Cloud Storage Bucket [myapp-input-bucket] Notification processing endpoint Object Change Notification POST /ApplicationUrlPath Content-Length: 1097 Content-Type: application/json; charset="utf-8" Host: ApplicationUrlHost X-Goog-Resource-Uri: https://www.googleapis.com/storage/v1/b/BucketName/o? alt=json { "kind": "storage#object", "id": "BucketName/ObjectName", "selfLink": "https://www.googleapis.com/storage/v1/b/BucketName/o/ObjectName", "name": "ObjectName", "bucket": "BucketName", "generation": "1367014943964000", "metageneration": "1", "contentType": "binary/octet-stream", "updated": "2013-04-26T22:22:23.832Z", "size": "10", "md5Hash": "xHZY0QLVuYng2gnOQD90Yw==", } Object Change Notifications

Slide 17

Slide 17 text

#dfua, @tekgrrl, @googlecloud Edge Caching

Slide 18

Slide 18 text

#dfua, @tekgrrl, @googlecloud Input Bucket Stitching Q Devices Extraction Q Notification Processor Extractor Stitcher Video Uploads Object Change Notifications Output Bucket Coordinator Summary

Slide 19

Slide 19 text

#dfua, @tekgrrl, @googlecloud Videos Uploaded https://www.youtube.com/watch?v=EtSc9lZ7g74

Slide 20

Slide 20 text

Notification processing

Slide 21

Slide 21 text

#dfua, @tekgrrl, @googlecloud Input Bucket Stitching Q Devices Extraction Q Notification Processor Extractor Stitcher Video Uploads Object Change Notifications Output Bucket Coordinator Notification Processing

Slide 22

Slide 22 text

#dfua, @tekgrrl, @googlecloud ● Handle HTTPS POST Requests ● Simple Authentication ● Process requests and push tasks on to a queue Requirements

Slide 23

Slide 23 text

#dfua, @tekgrrl, @googlecloud Choice of Runtimes - Java, Python, Go, PHP - NodeJS (Beta) - Custom (Containers) Easy to develop - Build and test locally - Focus on App Code - Versioning - Traffic Splitting Trivial to manage - Fully managed - No patches/updates - 24x7 operation by Google SREs - Autoscale Google App Engine

Slide 24

Slide 24 text

#dfua, @tekgrrl, @googlecloud Sandbox webserver user code sandbox runtime VM Container webserver user code optional packages standard/custom runtime Instances App Engine Hosting Environment VM-based Hosting Environment App Engine Hosting Environments

Slide 25

Slide 25 text

#dfua, @tekgrrl, @googlecloud Input Bucket Stitching Q Devices Extraction Q Go Application on Google App Engine Extractor Stitcher Video Uploads Object Change Notifications Output Bucket Coordinator + Summary

Slide 26

Slide 26 text

Messaging and Pipelines

Slide 27

Slide 27 text

#dfua, @tekgrrl, @googlecloud Input Bucket Stitching Q Devices Extraction Q Notification Processor Extractor Stitcher Video Uploads Object Change Notifications Output Bucket Coordinator Building Pipelines

Slide 28

Slide 28 text

#dfua, @tekgrrl, @googlecloud ● Asynchronous Messaging ● Pull Subscriptions Requirements

Slide 29

Slide 29 text

#dfua, @tekgrrl, @googlecloud Reliable and real-time messaging Designed for Fast Data Provides reliable, real-time, many-to-many, asynchronous messaging between applications Send data into processing pipelines and out to other apps, devices and Google Cloud Services Global by design and highly available. ‘fire-and-forget’ with minimal latency. Redundant forwarding paths Designed for Google scale Cloud Pub/Sub

Slide 30

Slide 30 text

#dfua, @tekgrrl, @googlecloud Pub/Sub Topic B Subscriber X Publisher B Topic A Publisher A Topic C Publisher C message 1 message 1 message 3 message 2 message 2 Subscriber Y message 3 Subscriber Z message 3 Subscription XA Subscription XB Subscription YC Subscription ZC Publishers and Subscribers

Slide 31

Slide 31 text

#dfua, @tekgrrl, @googlecloud Pub/Sub Topics Pull Subscriptions Push Subscriptions Google Cloud Platform apps 3rd Party network apps Desktop / command line apps Mobile apps Javascript / html5 clients Publisher and Subscriber Endpoints

Slide 32

Slide 32 text

#dfua, @tekgrrl, @googlecloud Extract Topic Pub/Sub Extractor Extractor Extractor Extractor Shared Subscription App Engine Extraction Tasks Use Case: Work Queue (Frame Extraction)

Slide 33

Slide 33 text

#dfua, @tekgrrl, @googlecloud Frames Extracted

Slide 34

Slide 34 text

#dfua, @tekgrrl, @googlecloud Stitch Topic Pub/Sub Stitcher Use Case: Work Queue (Stitching) Extractor Extractor Extractor Extractor Stitching Messages

Slide 35

Slide 35 text

#dfua, @tekgrrl, @googlecloud Frames Stitched

Slide 36

Slide 36 text

Pipeline Processing

Slide 37

Slide 37 text

#dfua, @tekgrrl, @googlecloud Input Bucket Stitching Q Devices Extraction Q Notification Processor Extractor Stitcher Video Uploads Object Change Notifications Output Bucket Coordinator Pipeline Processing

Slide 38

Slide 38 text

#dfua, @tekgrrl, @googlecloud ● Long running service with on-demand scaling of workers based on queue depth ● Able to act as a secure pub/sub subscriber ● Simple to develop, deploy and manage Requirements

Slide 39

Slide 39 text

#dfua, @tekgrrl, @googlecloud Compute Resources - US, Europe and Asia zones - Fast SDN-Based virtual networking Innovative - Live Migration - Preemptible VMs - SSD + Local SSD Cost Effective - Sub-Hour Billing - No IOPS charges PD - Sustained Usage Discounts (with no upfront charges) Google Compute Engine

Slide 40

Slide 40 text

#dfua, @tekgrrl, @googlecloud 1 2 4 8 (Shared) 16 32 Compute Engine VMs: ● Debian, CentOS, SUSE, RHEL, Ubuntu, Windows ● shared core or 1 - 32 cores ● Up to 208 GB of RAM VM Instances to suit diverse workloads

Slide 41

Slide 41 text

#dfua, @tekgrrl, @googlecloud create/ destroy VMs Instance Group Manager Instance Template Instance Template Managed Instance Group VM VM VM Instance Groups ● Grouping of identical VM instances ● Provisioned and monitored by Instance Group Manager ● Instance Templates separate configuration from provisioning Managed Instance Group

Slide 42

Slide 42 text

#dfua, @tekgrrl, @googlecloud Managed Instance Group create/ destroy VMs Instance Group Manager actuator monitor Autoscaler Cloud Monitoring utilisation VM VM VM Pub/Sub Topic Compute Engine Autoscaler

Slide 43

Slide 43 text

#dfua, @tekgrrl, @googlecloud Extractor Workers create/ destroy VMs Instance Group Manager actuator monitor Autoscaler Cloud Monitoring utilisation VM VM Container VM Extract Topic Containerization

Slide 44

Slide 44 text

#dfua, @tekgrrl, @googlecloud Input Bucket Stitching Q Devices Extraction Q Notification Processor Extractor Stitcher Video Uploads Object Change Notifications Output Bucket Coordinator Summary

Slide 45

Slide 45 text

Coordination

Slide 46

Slide 46 text

#dfua, @tekgrrl, @googlecloud Extract Q Temp Store Extractor Stitch Q Extractor Extractors READY Stitcher Online DB All READY? Retrieve Images Coordination

Slide 47

Slide 47 text

#dfua, @tekgrrl, @googlecloud ● Cloud based Data Storage ● No Server Side Coding ● Updates pushed to Clients in Real Time Requirements

Slide 48

Slide 48 text

#dfua, @tekgrrl, @googlecloud ● NoSQL, JSON database ● Pushes updates in milliseconds when things change ● Security model allows direct access from client devices ● Maps each piece of data to a URL The Firebase Realtime Database

Slide 49

Slide 49 text

Demo Time

Slide 50

Slide 50 text

#dfua, @tekgrrl, @googlecloud Uses Kubernetes to deploy, run and manage Docker containers Spin up clusters of VMs purpose-built for containers Any Docker file can be installed across the cluster in one command Deploy a container as easily as you can install a mobile app Future: Container Engine

Slide 51

Slide 51 text

Wrap-up

Slide 52

Slide 52 text

#dfua, @tekgrrl, @googlecloud Summary and Hex Test

Slide 53

Slide 53 text

#dfua, @tekgrrl, @googlecloud ● Bret McGowen ● Francesc Campoy ● Kathy Kam ● Ray Tsang Demo Builders

Slide 54

Slide 54 text

#dfua, @tekgrrl, @googlecloud If You Only Remember Three Things… Full Platform Complete set of services for building, hosting, and managing apps and services Leading Infrastructure Industry-leading hardware and services unavailable on-prem or other clouds Innovation Platform Be faster to market, respond rapidly to change, and focus on what matters to you.

Slide 55

Slide 55 text

Thanks! @googlecloudspin

Slide 56

Slide 56 text

#dfua, @tekgrrl, @googlecloud Subscriber Subscriber Pub/Sub Pub/Sub Push Subscription Pull Subscription msg ack msg ack RPC Send RPC Return