SlideShare una empresa de Scribd logo
1 de 82
Video Workshop Docs
GitHub Link:
https://bit.ly/alt2018-video
Optimizing Video Delivery
presents
How I Learned to Stop
Worrying and Love
VideoChris Buckley and Jim Hall | Sr. Solutions
Engineers
Who the hell are we?
Optimizing video delivery
Introductions
Log Streaming with
Sumo Logic
Visibility Performance
VOD
Live
Scaling
Shielding
CDN Stacking
Optimizing video delivery
Quick poll:
How would you categorize your comfort-
level with video delivery?
Optimizing video delivery
Introductions
Visibility
Optimizing Video Delivery
You need two things:
● Log analysis tool
● Logs
Optimizing video delivery
Visibility
Optimizing video delivery
Visibility - Configure log streaming
Log Analysis
STEPS
● Clone the service
● Add the Sumo Logic endpoint
● Add the custom VCL
● Upload the custom VCL
● Activate the updated version
Optimizing video delivery
Visibility - Configure log streaming
Workshop Setup
Optimizing Video Delivery
Download / clone the Git repo:
https://bit.ly/alt2018-video
Install JQ (or any JSON parser):
https://bit.ly/jq-json
Optimizing video delivery
GitHub, JSON, Environment Configuration
Export API token & Service ID:
Optimizing video delivery
GitHub, JSON, Environment Configuration
bash$ export API_TOKEN=<token>
bash$ export SERVICE_ID=<service id>
In the console, navigate to the repo's `workshop-1`
directory
Optimizing video delivery
GitHub, JSON, Environment Configuration
In GitHub, open the ReadMe.md and the Workshop-1
as two tabs
Optimizing video delivery
GitHub, JSON, Environment Configuration
curl to clone
curl -X PUT 
https://api.fastly.com/service/${SERVICE_ID}/version/1/clone 
-H "Fastly-Key: ${API_KEY}" | jq
Talk Title
api response
should look
something like this
{
"testing": false,
"locked": false,
"number": 2,
"active": false,
"service_id": "2KVPqlEPCh6tRCVQBxlUYk",
"staging": false,
"created_at": "2018-08-31T17:04:51Z",
"deleted_at": null,
"comment": "",
"updated_at": "2018-08-31T17:16:00Z",
"deployed": false
}
Talk Title
Configure the logging endpoint.
Optimizing video delivery
Visibility - Configure log streaming
Recommended logging variables for
video
Optimizing video delivery
Visibility - Logging Variables
Questions on logging variables?
Optimizing video delivery
Visibility - Logging Variables
client_ip=%{req.http.Fastly-Client-IP}V
client_as_number=%{client.as.number}V
client_country_code=%{client.geo.country_code3}V
client_city_code=%{client.geo.city}V
tls_version=%{tls.client.protocol}V
ua="%{req.http.User-Agent}V"
ref=%{req.http.Referer}V
host=%{req.http.host}V
url=%{req.url}V
http_status=%{resp.status}V
http_status_message=%{resp.response}V
origin_http_status=%{beresp.status}V
pop=%{server.datacenter}V
server_id=%{server.identity}V
hit_or_miss="%{resp.http.X-Cache}V"
fastly_state=%{fastly_info.state}V
client_ttfb=%{time.to_first_byte}V
response_time=%{time.elapsed}V
response_bytes=%{resp.bytes_written}V
...
Standard VCL
Log Format
Talk Title
JSON Log Format
{"client_ip":"%{req.http.Fastly-Client-IP}V",
"client_as_number":%{client.as.number}V,
"client_country_code":"%{client.geo.country_code3}V",
"client_city":"%{client.geo.city}V",
"tls_version:":"%{tls.client.protocol}V",
"host":"%{req.http.host}V",
"url":"%{cstr_escape(req.url)}V",
"http_status":%{resp.status}V,
"http_status_message":"%{resp.response}V",
"restarts":%{req.restarts}V,
"pop":"%{server.datacenter}V",
"cache_status":"%{resp.http.X-Cache}V",
"fastly_state":"%{fastly_info.state}V",
"client_ttfb":%{var.client_ttfb_msecs}V,
"response_time":%{time.elapsed.msec}V,
"response_bytes":%{resp.bytes_written}V,
...
}
Talk Title
api endpoint
parameters url-
encoded JSON
name=workshop1-
SumoLogic&message_type=blank&url=https://endpoint3.collection.us2.sumologic.
com/receiver/v1/http/ZaVnC4dhaV1z1AeZ1Y1MjfCQd5Ypwxi7jXvw0uY2hR3ycKg_lCVd77r
j5lgKm-8krz30nPgv-dBhWCqIl_et_Yez_BMeVUnv2S4d9iqYD1uWMqOZcgiT-
A==&format=%7B%22timestamp%22%3A%22%25%7Bbegin%3A%25Y-%25m-
%25d%20%25H%3A%25M%3A%25S%7Dt.%25%7Btime.start.usec_frac%7DV%22%2C%0A%20%22c
lient_ip%22%3A%22%25%7Breq.http.Fastly-Client-
IP%7DV%22%2C%0A%20%22client_as_number%22%3A%25%7Bclient.as.number%7DV%2C%0A%
20%22client_country_code%22%3A%22%25%7Bclient.geo.country_code3%7DV%22%2C%0A
%20%22client_city%22%3A%22%25%7Bclient.geo.city%7DV%22%2C%0A%20%22tls_versio
n%3A%22%3A%22%25%7Btls.client.protocol%7DV%22%2C%0A%22user_agent%22%3A%22%25
%7Bregsuball%28cstr_escape%28req.http.User-
Agent%29%2C%22%28%3F%3C%21%5C%5C%5C%5C%29%5C%5C%5C%5C%28%3F%21%5C%5C%5C%5C%2
9%22%2C%22%5C%5C%5C%5C%5C%5C%5C%5C%22%29%7DV%22%2C%0A%22referer%22%3A%22%25%
7Bregsuball%28cstr_escape%28req.http.Referer%29%2C%22%28%3F%3C%21%5C%5C%5C%5
C%29%5C%5C%5C%5C%28%3F%21%5C%5C%5C%5C%29%22%2C%22%5C%5C%5C%5C%5C%5C%5C%5C%22
%29%7DV%22%2C%0A%20%22host%22%3A%22%25%7Breq.http.host%7DV%22%2C%20%0A%20%22
url%22%3A%22%25%7Bcstr_escape%28req.url%29%7DV%22%2C%0A%20%22http_status%22%
3A%25%7Bresp.status%7DV%2C%0A%20%22http_status_message%22%3A%22%25%7Bresp.re
sponse%7DV%22%2C%0A%20%22origin_http_status%22%3A%22%25%7Bberesp.status%7DV%
22%2C%0A%20%22restarts%22%3A%25%7Breq.restarts%7DV%2C%0A%20%22pop%22%3A%22%2
5%7Bserver.datacenter%7DV%22%2C%0A%20%22cache_status%22%3A%22%25%7Bresp.http
.X-
Cache%7DV%22%2C%0A%20%22fastly_state%22%3A%22%25%7Bfastly_info.state%7DV%22%Talk Title
curl to set up
Sumo Logic
logging endpoint
curl -X POST 
https://api.fastly.com/service/${SERVICE_ID}/version/2/logging/sumologic 
-H "Fastly-Key: ${API_KEY}" 
-d@logging-log_format.txt | jq
Talk Title
api response
should look
something like this
{
"name": "workshop1-SumoLogic",
"message_type": "blank",
"format": "<redacted>",
"url":
"https://endpoint3.collection.us2.sumologic.com/receiver/v1/http/ZaVnC4dhaV1z1AeZ1
Y1MjfCQd5Ypwxi7jXvw0uY2hR3ycKg_lCVd77rj5lgKm-8krz30nPgv-
dBhWCqIl_et_Yez_BMeVUnv2S4d9iqYD1uWMqOZcgiT-A==",
"service_id": "2KVPqlEPCh6tRCVQBxlUYk",
"version": "1",
"placement": null,
"format_version": "2",
"response_condition": "",
"updated_at": "2018-09-08T09:12:09Z",
"deleted_at": null,
"created_at": "2018-09-08T09:12:09Z"
}
Talk Title
Modify the VCL…
Optimizing video delivery
Visibility - Configure log streaming
vcl_recv
Talk Title
vcl_fetch
Talk Title
vcl_miss
Talk Title
vcl_deliver
Talk Title
vcl_pass
Talk Title
vcl_log
Talk Title
Save the file as:
workshop1_v2.vcl
Optimizing video delivery
Visibility - Configure log streaming
Upload the custom VCL…
Optimizing video delivery
Visibility - Configure log streaming
curl to upload
custom VCL
curl -X POST 
https://api.fastly.com/service/${SERVICE_ID}/version/2/vcl 
-H "Fastly-Key:${API_KEY}" 
-H 'content-type: multipart/form-data' 
--data "name=workshop1&main=true" 
--data-urlencode "content@workshop1_v2.vcl" | jq
Talk Title
api response
should look
something like this
{
"name": "workshop1",
"main": true,
"service_id": "2KVPqlEPCh6tRCVQBxlUYk",
"version": 12,
"content": "",
"deleted_at": null,
"created_at": "2018-09-08T15:32:34Z",
"updated_at": "2018-09-08T15:32:34Z"
}
Talk Title
Activate the service…
Optimizing video delivery
Visibility - Configure log streaming
curl to activate the
service
curl -X PUT 
https://api.fastly.com/service/${SERVICE_ID}/version/2/activate 
-H "Fastly-Key: ${API_KEY}" | jq
Talk Title
…make a bunch of requests from around
the world using Catchpoint
Optimizing video delivery
Visibility - Configure log streaming
….annnnnnnnd behold!
Optimizing video delivery
Visibility - Sumologic
Walkthrough of the Sumo Logic
dashboard
Optimizing video delivery
Visibility - Sumologic
Questions?
Optimizing video delivery
Visibility - Sumologic
• Two main ways of delivering video
• Progressive download
• HTTP Streaming
Optimizing video delivery
Quick video overview
• Progressive Download
• Supported natively in all modern
browsers via the HTML5 <video> tag
• Usually for short videos ~30 secs
• VOD only
Optimizing video delivery
Quick video overview
• HTTP Streaming
• VOD and Live
• No special server software or license required
• Provides Adaptive Bit Rate (ABR)
• Video is packaged into discrete chunks or
segments
• Generally requires a player
Optimizing video delivery
Quick overview of video delivery via HTTP
• HTTP streaming comes in a variety of
flavors
• HLS (Apple)
• DASH (MPEG)
• HDS (Adobe)
• Smooth Streaming (Microsoft)
Optimizing video delivery
Quick overview of video delivery via HTTP
• HLS Components
• Manifests (.m3u8)
• Master
• Child or Media Playlist
• Segments
• Transportation Segments (.ts)
• Fragmented MP4 (.fmp4)
Optimizing video delivery
Quick overview of video delivery via HTTP
Questions?
Optimizing video delivery
Quick overview of video delivery via HTTP
Optimizing VOD
Delivery
Optimizing video delivery
1. Get familiar with the Fastly API
2. Understand video delivery challenges
3. Test, optimize, and confirm improvements for VOD delivery
Optimizing video delivery
Goals: Optimize VOD Delivery
A
CDN's
Role
● CDNs help scale & accelerate content
delivery
● Reduce origin load by serving cached
objects
● Works great for smaller objects
● Larger objects benefit from optimizations
Optimizing video delivery
A content delivery workflow
End user CDN Origin
Requests Object Fetches Object
Delivers Object Caches Object
Optimizing video delivery
Obstacles to Video Delivery
TCP Congestion Windows Fetching Entire Objects
What can we do about it?
Optimizing video delivery
HTTP & TCP Optimizations
Increase Congestion Window
Allows clients to better estimate
network bandwidth and thereby
select the ideal rendition and
bitrate for the best playback
quality.
Configure Streaming Miss
Reduces the time clients (players)
must wait to begin downloading
streams when Fastly's edge
servers must fetch content from
your origin.
Optimizing video delivery
Step 1: Testing download
alias curltest="curl -w 
'nLookup time:t%{time_namelookup} n
Connect time:t%{time_connect} n
App Con time:t%{time_appconnect} n
PreXfer time:t%{time_pretransfer} n
Redirect time:t%{time_redirect} n
StartXfer time:t%{time_starttransfer} nn
Total time:t%{time_total}n' 
-svo /dev/null -H 'Fastly-Debug: 1'"
Test Curl Command
Download Video File
time curltest  https://<num>-
videoworkshop.global.ssl.fastly.net/vod/tears_of_steel/720p.mp4
Optimizing video delivery
Step 1: Testing download cont….
Lookup time: 0.067303
Connect time: 0.081613
App Con time: 0.145351
PreXfer time: 0.145988
Redirect time: 0.000000
StartXfer time: 2.429937
Total time: 12.066361
real 0m12.087s
user 0m0.563s
sys 0m0.561s
Output
Clone service from version 2 to version 3
Optimizing video delivery
Step 2: Cloning new service
curl -sv -H "Fastly-Key: ${API_KEY}" -X PUT 
https://api.fastly.com/service/${SERVICE_ID}/version/2/clone 
| jq
Open main.vcl in your git repo, and add specific configuration optimizations.
In vcl_fetch add contents of vod-vcl_fetch.vcl:
Talk Title
Step 3: Add optimizations
############################################
# VIDEO WORKSHOP: INSERT vcl_fetch CODE HERE
############################################
# Set 1s ttl if origin response HTTP status code is anything other than 200 and 206
if (!http_status_matches(beresp.status, "200,206")) {
set beresp.ttl = 1s;
}
# Enable Streaming Miss only for video or audio objects.
# Below conditions checks for video or audio file extensions commonly used in
# HTTP Streaming formats.
if (req.url.ext ~ "m4s|mp4|ts|aac|fmp4") {
set beresp.do_stream = true;
}
# Configure caching for VOD content
if(req.http.X-Service == "vod") {
/* set stale_if_error and stale_while_revalidate (customize these values) */
set beresp.stale_if_error = 7d;
set beresp.stale_while_revalidate = 60s;
# Cache VOD content for 1 year
set beresp.ttl = 365d;
}
############################################
# END VIDEO WORKSHOP
############################################
Add final optimizations in vcl_deliver from the file vod-vcl_deliver.vcl
Talk Title
Step 3: Add optimizations cont...
############################################
# VIDEO WORKSHOP: INSERT vcl_deliver CODE HERE
############################################
# increase init cwnd
if (client.requests == 1) {
set client.socket.cwnd = 45;
}
############################################
# END VIDEO WORKSHOP
############################################
Save config, upload using the API, and activate the version in our service (version 3).
In order to upload VCL we must URL encode the file so that we can send it via cURL:
Talk Title
Step 4: Upload & activate version
curl -vs -H "Fastly-Key: ${API_KEY}" -X POST -H 
"Content-Type: application/x-www-form-urlencoded" 
--data "name=workshop2&main=true" 
--data-urlencode "content@workshop2_v3.vcl" 
https://api.fastly.com/service/${SERVICE_ID}/version/3/vcl 
| jq
Response:
Talk Title
Step 4: Upload & activate version
{
"name": "workshop2",
"main": true,
"content": "<lots of VCL>,
"service_id": "1OPpKYvOlWVx37twfGVsq0",
"version": 3,
"deleted_at": null,
"created_at": "2018-06-20T20:23:52+00:00",
"updated_at": "2018-06-20T20:23:52+00:00"
}
Now,we can activate the version we just uploaded
Talk Title
Step 4: Upload & activate version
curl -vs -H "Fastly-Key: ${API_KEY}" -X PUT 
https://api.fastly.com/service/${SERVICE_ID}/version/3/activate | jq
Purge our video content (updating host to your specific service):
Talk Title
Step 5: Purge URL & re-test
curl -X PURGE  https://<num>-
videoworkshop.global.ssl.fastly.net/vod/tears_of_steel/720p.mp4
Finally, test our video download again:
time curltest  https://<num>-
videoworkshop.global.ssl.fastly.net/vod/tears_of_steel/720p.mp4
Talk Title
Step 5: Purge URL & re-test cont...
Lookup time: 0.067303
Connect time: 0.081613
App Con time: 0.145351
PreXfer time: 0.145988
Redirect time: 0.000000
StartXfer time: 0.429937
Total time: 11.066361
real 0m12.087s
user 0m0.563s
sys 0m0.561s
Output
Optimizing Live
Video Delivery
Talk Title
1. Learn the differences between VOD and live video delivery
2. Deploy a new origin to deliver live video
3. Configure live streaming specific optimizations
4. Create a scalable live video configuration
Talk Title
Goals: Optimize Live Delivery
Why Live
is
Different
● Content is more dynamic
● Stale content not as important
● Thundering Herd issues
● Protecting origin more critical
Talk Title
A live delivery workflow
End user CDN Origin
Requests Object Fetches Object
Delivers Object Caches Object
Client wants fresh content
CDN doesn't need to
cache as long
How do we optimize?
Talk Title
Optimizations for Live
Keeping Manifests "Dynamic"
Reduces time in cache to allow for
frequent updates of video
segments.
"Right-sizing" TTLs for segments
Old segments have no need to be
cached, reducing storage
requirements and increasing CHR
for other content.
Talk Title
Step 1: Add New Origin Server
● Clone the active service to a new development version (this time cloning
version 3 to version 4):
curl -sv -H "Fastly-Key: ${API_KEY}" -X PUT 
https://api.fastly.com/service/${SERVICE_ID}/version/3/clone | jq
{
"testing": false,
"locked": false,
"number": 4,
....
}
● JSON response:
Talk Title
Step 1: Add New Origin Server Cont..
Now, lets add a new backend, our "live" service.
curl -sv -H "Fastly-Key: ${API_KEY}" -X POST -H 
"Content-Type: application/x-www-form-urlencoded" --data 
"ipv4=35.230.111.226&name=live" 
https://api.fastly.com/service/${SERVICE_ID}/version/4/backend
Talk Title
Step 2: Add live optimizations
● In your repo you will find a file live-vcl_recv.vcl.
● This contains VCL to send any requests on the live route (in this case /live) to the new created created origin
● Add this to workshop2.vcl in the workshop section. It should look something more like this, ready to upload:
###########################################
# VIDEO WORKSHOP - DO STUFF HERE
###########################################
if(req.url.path ~ "^/live") {
set req.backend = F_live;
set req.url = regsub(req.url, "/live", "/hls");
set req.http.X-Service = "live";
}
######## vcl_recv ###########
# Record number of retrans on the connection
set req.http.total_retrans = client.socket.tcpi_total_retrans;
###############################
Talk Title
Step 2: Add live optimizations cont..
● In your repo you will find a file live-vcl_fetch.vcl.
● This contains VCL to set specific caching behavior for manifests and segments
if(req.http.X-service == "live") {
# Set 1s ttls for video manifest and 3600s ttls for segments of HTTP Streaming formats.
# Microsoft Smooth Streaming format manifest and segments do not have file extensions.
# Look for the keywords "Manifest" and "QualityLevel" to identify manifest and segment requests.
if (req.url.ext ~ "m3u8|mpd" || req.url.path ~ "Manifest") {
set beresp.ttl = 1s;
} else {
if (req.url.ext ~ "m4s|mp4|ts|aac" || req.url.path ~ "QualityLevel") {
set beresp.ttl = 3600s;
}
}
}
Talk Title
Step 3: Upload and activate
Upload our new configuration:
curl -vs -H "Fastly-Key: ${API_KEY}" -X POST -H 
"Content-Type: application/x-www-form-urlencoded" 
--data "name=workshop3&main=true" --data-urlencode "content@workshop3_v4.vcl" 
https://api.fastly.com/service/${SERVICE_ID}/version/4/vcl | jq
Activate the draft version:
curl -vs -H "Fastly-Key: ${API_KEY}" -X PUT 
https://api.fastly.com/service/${SERVICE_ID}/version/4/activate | jq
Talk Title
Step 4: Play our live stream
● Open a media player (or Safari)
● https://<num>-
videoworkshop.global.ssl.fastly.net/live/stream.
m3u8
● Let the good times roll!
● We're not done just yet
The Thundering Herd
● Many services / POPs connecting to origin
● Higher egress
● Higher infrastructure costs (CPU, etc)
Talk Title
What's the Thundering Herd?
● Designating a PoP as your "shield" reduces requests to
origin
● Delivers content to edge PoPs requesting content
● Collapses multiple requests to 1 for new content
Talk Title
Origin Shielding
● Enabling shielding in Fastly helps mitigate this issue
● What about my other CDNs?
Talk Title
Shielding all the Things
Talk Title
Fastly Media Shield - A CDN for your CDNs
Misses from edge sent to Media Shield
Significant reduction in origin load
Request collapsing consolidates
multiple requests for same content
down to one request to origin
OriginMedia Shield
End User Edge POP
Thank you!
Talk Title

Más contenido relacionado

La actualidad más candente

CamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityCamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityKenneth Peeples
 
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloud
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloudMigrating from Pivotal tc Server on-prem to IBM Liberty in the cloud
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloudJohn Donaldson
 
AWS Webcast - On-Demand Video Streaming using Amazon CloudFront
AWS Webcast - On-Demand Video Streaming using Amazon CloudFront  AWS Webcast - On-Demand Video Streaming using Amazon CloudFront
AWS Webcast - On-Demand Video Streaming using Amazon CloudFront Amazon Web Services
 
PuppetConf 2016: Best Practices for Puppet in the Cloud – Randall Hunt, Amazo...
PuppetConf 2016: Best Practices for Puppet in the Cloud – Randall Hunt, Amazo...PuppetConf 2016: Best Practices for Puppet in the Cloud – Randall Hunt, Amazo...
PuppetConf 2016: Best Practices for Puppet in the Cloud – Randall Hunt, Amazo...Puppet
 
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...0xdaryl
 
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesik
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A GrzesikApache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesik
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesikmfrancis
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...Edward Burns
 
Introduction to Amazon Elastic Transcoder
 Introduction to Amazon Elastic Transcoder  Introduction to Amazon Elastic Transcoder
Introduction to Amazon Elastic Transcoder Amazon Web Services
 
#JavaOne What's in an object?
#JavaOne What's in an object?#JavaOne What's in an object?
#JavaOne What's in an object?Charlie Gracie
 
Moving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryMoving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryJeff Potts
 
2019-06 - Goto Amsterdam - Microservices
2019-06 - Goto Amsterdam - Microservices2019-06 - Goto Amsterdam - Microservices
2019-06 - Goto Amsterdam - MicroservicesEamonn Boyle
 
ApacheCon EU 2014: Enterprise Development with Apache Karaf
ApacheCon EU 2014: Enterprise Development with Apache KarafApacheCon EU 2014: Enterprise Development with Apache Karaf
ApacheCon EU 2014: Enterprise Development with Apache KarafAchim Nierbeck
 
Asynchronous OSGi – Promises for the Masses - T Ward
Asynchronous OSGi – Promises for the Masses - T WardAsynchronous OSGi – Promises for the Masses - T Ward
Asynchronous OSGi – Promises for the Masses - T Wardmfrancis
 
The app server, web server and everything in between
The app server, web server and everything in betweenThe app server, web server and everything in between
The app server, web server and everything in betweenColdFusionConference
 
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten ZiegelerOSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegelermfrancis
 

La actualidad más candente (20)

CamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityCamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF Security
 
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloud
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloudMigrating from Pivotal tc Server on-prem to IBM Liberty in the cloud
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloud
 
AWS Webcast - On-Demand Video Streaming using Amazon CloudFront
AWS Webcast - On-Demand Video Streaming using Amazon CloudFront  AWS Webcast - On-Demand Video Streaming using Amazon CloudFront
AWS Webcast - On-Demand Video Streaming using Amazon CloudFront
 
PuppetConf 2016: Best Practices for Puppet in the Cloud – Randall Hunt, Amazo...
PuppetConf 2016: Best Practices for Puppet in the Cloud – Randall Hunt, Amazo...PuppetConf 2016: Best Practices for Puppet in the Cloud – Randall Hunt, Amazo...
PuppetConf 2016: Best Practices for Puppet in the Cloud – Randall Hunt, Amazo...
 
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
 
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesik
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A GrzesikApache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesik
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesik
 
Looking into HTML5 + CSS3
Looking into HTML5 + CSS3Looking into HTML5 + CSS3
Looking into HTML5 + CSS3
 
Fastest Servlets in the West
Fastest Servlets in the WestFastest Servlets in the West
Fastest Servlets in the West
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
 
Introduction to-osgi
Introduction to-osgiIntroduction to-osgi
Introduction to-osgi
 
Introduction to Amazon Elastic Transcoder
 Introduction to Amazon Elastic Transcoder  Introduction to Amazon Elastic Transcoder
Introduction to Amazon Elastic Transcoder
 
#JavaOne What's in an object?
#JavaOne What's in an object?#JavaOne What's in an object?
#JavaOne What's in an object?
 
Moving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryMoving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco Repository
 
OSGi & Blueprint
OSGi & BlueprintOSGi & Blueprint
OSGi & Blueprint
 
2019-06 - Goto Amsterdam - Microservices
2019-06 - Goto Amsterdam - Microservices2019-06 - Goto Amsterdam - Microservices
2019-06 - Goto Amsterdam - Microservices
 
ApacheCon EU 2014: Enterprise Development with Apache Karaf
ApacheCon EU 2014: Enterprise Development with Apache KarafApacheCon EU 2014: Enterprise Development with Apache Karaf
ApacheCon EU 2014: Enterprise Development with Apache Karaf
 
Asynchronous OSGi – Promises for the Masses - T Ward
Asynchronous OSGi – Promises for the Masses - T WardAsynchronous OSGi – Promises for the Masses - T Ward
Asynchronous OSGi – Promises for the Masses - T Ward
 
The app server, web server and everything in between
The app server, web server and everything in betweenThe app server, web server and everything in between
The app server, web server and everything in between
 
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten ZiegelerOSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
 
Restful API's with ColdFusion
Restful API's with ColdFusionRestful API's with ColdFusion
Restful API's with ColdFusion
 

Similar a Altitude San Francisco 2018: Video Workshop Docs

이제는 말할 수 있다: KBS, beNX의 AWS 활용법 – 선영진 KBS 부장, 강진우 beNX 팀장, 강호성 beNX 엔지니어:: AW...
이제는 말할 수 있다: KBS, beNX의 AWS 활용법 – 선영진 KBS 부장, 강진우 beNX 팀장, 강호성 beNX 엔지니어:: AW...이제는 말할 수 있다: KBS, beNX의 AWS 활용법 – 선영진 KBS 부장, 강진우 beNX 팀장, 강호성 beNX 엔지니어:: AW...
이제는 말할 수 있다: KBS, beNX의 AWS 활용법 – 선영진 KBS 부장, 강진우 beNX 팀장, 강호성 beNX 엔지니어:: AW...Amazon Web Services Korea
 
Office365 Video - Learn it - Love it - Use it | Collab365
Office365 Video - Learn it - Love it - Use it | Collab365Office365 Video - Learn it - Love it - Use it | Collab365
Office365 Video - Learn it - Love it - Use it | Collab365Drew Madelung
 
JS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat VideosJS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat VideosGreg Schechter
 
Orchestrating the execution of workflows for media streaming service and even...
Orchestrating the execution of workflows for media streaming service and even...Orchestrating the execution of workflows for media streaming service and even...
Orchestrating the execution of workflows for media streaming service and even...Shuen-Huei Guan
 
[Vietnam Mobile Day 2013] - How to build video streaming server in 15 minutes
[Vietnam Mobile Day 2013] - How to build video streaming server in 15 minutes[Vietnam Mobile Day 2013] - How to build video streaming server in 15 minutes
[Vietnam Mobile Day 2013] - How to build video streaming server in 15 minutesAiTi Education
 
Vietnam Mobile Day 2013: How to build video streaming server in 15 mins
Vietnam Mobile Day 2013: How to build video streaming server in 15 minsVietnam Mobile Day 2013: How to build video streaming server in 15 mins
Vietnam Mobile Day 2013: How to build video streaming server in 15 minsGameLandVN
 
Fishbowl Solutions' Oracle ECM 11g Upgrade, Migration & Solutions
Fishbowl Solutions' Oracle ECM 11g Upgrade,  Migration & SolutionsFishbowl Solutions' Oracle ECM 11g Upgrade,  Migration & Solutions
Fishbowl Solutions' Oracle ECM 11g Upgrade, Migration & SolutionsBilly Cripe
 
Arm html5 presentation
Arm html5 presentationArm html5 presentation
Arm html5 presentationIan Renyard
 
GDD HTML5, Flash, and the Battle for Faster Cat Videos
GDD HTML5, Flash, and the Battle for Faster Cat VideosGDD HTML5, Flash, and the Battle for Faster Cat Videos
GDD HTML5, Flash, and the Battle for Faster Cat VideosGreg Schechter
 
초보 개발자도 바로 따라할 수 있는 AWS 미디어 서비스를 이용한 Live/VOD 서비스 구축 – 현륜식 AWS 솔루션즈 아키텍트:: A...
초보 개발자도 바로 따라할 수 있는 AWS 미디어 서비스를 이용한 Live/VOD 서비스 구축 – 현륜식 AWS  솔루션즈 아키텍트:: A...초보 개발자도 바로 따라할 수 있는 AWS 미디어 서비스를 이용한 Live/VOD 서비스 구축 – 현륜식 AWS  솔루션즈 아키텍트:: A...
초보 개발자도 바로 따라할 수 있는 AWS 미디어 서비스를 이용한 Live/VOD 서비스 구축 – 현륜식 AWS 솔루션즈 아키텍트:: A...Amazon Web Services Korea
 
NTC/326 ENTIRE CLASS UOP TUTORIALS
NTC/326 ENTIRE CLASS UOP TUTORIALSNTC/326 ENTIRE CLASS UOP TUTORIALS
NTC/326 ENTIRE CLASS UOP TUTORIALSSharon Reynolds
 
Unleash the Power of Video Communication - Office 365 Video vs. Azure Media S...
Unleash the Power of Video Communication - Office 365 Video vs. Azure Media S...Unleash the Power of Video Communication - Office 365 Video vs. Azure Media S...
Unleash the Power of Video Communication - Office 365 Video vs. Azure Media S...Gina Montgomery, V-TSP
 
HTML5, Flash, and the Battle For Faster Cat Videos
HTML5, Flash, and the Battle For Faster Cat VideosHTML5, Flash, and the Battle For Faster Cat Videos
HTML5, Flash, and the Battle For Faster Cat VideosGreg Schechter
 
EQR Reporting: Rails + Amazon EC2
EQR Reporting:  Rails + Amazon EC2EQR Reporting:  Rails + Amazon EC2
EQR Reporting: Rails + Amazon EC2jeperkins4
 
Azure Media Services Step-by-Step Tutorial Docs Series - Part 3
Azure Media Services   Step-by-Step Tutorial Docs Series - Part 3Azure Media Services   Step-by-Step Tutorial Docs Series - Part 3
Azure Media Services Step-by-Step Tutorial Docs Series - Part 3Shige Fukushima
 
Simplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudSimplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudLiz Warner
 
from ai.backend import python @ pycontw2018
from ai.backend import python @ pycontw2018from ai.backend import python @ pycontw2018
from ai.backend import python @ pycontw2018Chun-Yu Tseng
 

Similar a Altitude San Francisco 2018: Video Workshop Docs (20)

이제는 말할 수 있다: KBS, beNX의 AWS 활용법 – 선영진 KBS 부장, 강진우 beNX 팀장, 강호성 beNX 엔지니어:: AW...
이제는 말할 수 있다: KBS, beNX의 AWS 활용법 – 선영진 KBS 부장, 강진우 beNX 팀장, 강호성 beNX 엔지니어:: AW...이제는 말할 수 있다: KBS, beNX의 AWS 활용법 – 선영진 KBS 부장, 강진우 beNX 팀장, 강호성 beNX 엔지니어:: AW...
이제는 말할 수 있다: KBS, beNX의 AWS 활용법 – 선영진 KBS 부장, 강진우 beNX 팀장, 강호성 beNX 엔지니어:: AW...
 
Office365 Video - Learn it - Love it - Use it | Collab365
Office365 Video - Learn it - Love it - Use it | Collab365Office365 Video - Learn it - Love it - Use it | Collab365
Office365 Video - Learn it - Love it - Use it | Collab365
 
JS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat VideosJS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat Videos
 
Orchestrating the execution of workflows for media streaming service and even...
Orchestrating the execution of workflows for media streaming service and even...Orchestrating the execution of workflows for media streaming service and even...
Orchestrating the execution of workflows for media streaming service and even...
 
[Vietnam Mobile Day 2013] - How to build video streaming server in 15 minutes
[Vietnam Mobile Day 2013] - How to build video streaming server in 15 minutes[Vietnam Mobile Day 2013] - How to build video streaming server in 15 minutes
[Vietnam Mobile Day 2013] - How to build video streaming server in 15 minutes
 
Vietnam Mobile Day 2013: How to build video streaming server in 15 mins
Vietnam Mobile Day 2013: How to build video streaming server in 15 minsVietnam Mobile Day 2013: How to build video streaming server in 15 mins
Vietnam Mobile Day 2013: How to build video streaming server in 15 mins
 
Fishbowl Solutions' Oracle ECM 11g Upgrade, Migration & Solutions
Fishbowl Solutions' Oracle ECM 11g Upgrade,  Migration & SolutionsFishbowl Solutions' Oracle ECM 11g Upgrade,  Migration & Solutions
Fishbowl Solutions' Oracle ECM 11g Upgrade, Migration & Solutions
 
Html 5
Html 5Html 5
Html 5
 
Arm html5 presentation
Arm html5 presentationArm html5 presentation
Arm html5 presentation
 
Into The Box 2018 Ortus Keynote
Into The Box 2018 Ortus KeynoteInto The Box 2018 Ortus Keynote
Into The Box 2018 Ortus Keynote
 
SDAccel Design Contest: Vivado HLS
SDAccel Design Contest: Vivado HLSSDAccel Design Contest: Vivado HLS
SDAccel Design Contest: Vivado HLS
 
GDD HTML5, Flash, and the Battle for Faster Cat Videos
GDD HTML5, Flash, and the Battle for Faster Cat VideosGDD HTML5, Flash, and the Battle for Faster Cat Videos
GDD HTML5, Flash, and the Battle for Faster Cat Videos
 
초보 개발자도 바로 따라할 수 있는 AWS 미디어 서비스를 이용한 Live/VOD 서비스 구축 – 현륜식 AWS 솔루션즈 아키텍트:: A...
초보 개발자도 바로 따라할 수 있는 AWS 미디어 서비스를 이용한 Live/VOD 서비스 구축 – 현륜식 AWS  솔루션즈 아키텍트:: A...초보 개발자도 바로 따라할 수 있는 AWS 미디어 서비스를 이용한 Live/VOD 서비스 구축 – 현륜식 AWS  솔루션즈 아키텍트:: A...
초보 개발자도 바로 따라할 수 있는 AWS 미디어 서비스를 이용한 Live/VOD 서비스 구축 – 현륜식 AWS 솔루션즈 아키텍트:: A...
 
NTC/326 ENTIRE CLASS UOP TUTORIALS
NTC/326 ENTIRE CLASS UOP TUTORIALSNTC/326 ENTIRE CLASS UOP TUTORIALS
NTC/326 ENTIRE CLASS UOP TUTORIALS
 
Unleash the Power of Video Communication - Office 365 Video vs. Azure Media S...
Unleash the Power of Video Communication - Office 365 Video vs. Azure Media S...Unleash the Power of Video Communication - Office 365 Video vs. Azure Media S...
Unleash the Power of Video Communication - Office 365 Video vs. Azure Media S...
 
HTML5, Flash, and the Battle For Faster Cat Videos
HTML5, Flash, and the Battle For Faster Cat VideosHTML5, Flash, and the Battle For Faster Cat Videos
HTML5, Flash, and the Battle For Faster Cat Videos
 
EQR Reporting: Rails + Amazon EC2
EQR Reporting:  Rails + Amazon EC2EQR Reporting:  Rails + Amazon EC2
EQR Reporting: Rails + Amazon EC2
 
Azure Media Services Step-by-Step Tutorial Docs Series - Part 3
Azure Media Services   Step-by-Step Tutorial Docs Series - Part 3Azure Media Services   Step-by-Step Tutorial Docs Series - Part 3
Azure Media Services Step-by-Step Tutorial Docs Series - Part 3
 
Simplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudSimplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual Cloud
 
from ai.backend import python @ pycontw2018
from ai.backend import python @ pycontw2018from ai.backend import python @ pycontw2018
from ai.backend import python @ pycontw2018
 

Más de Fastly

Revisiting HTTP/2
Revisiting HTTP/2Revisiting HTTP/2
Revisiting HTTP/2Fastly
 
Altitude San Francisco 2018: Preparing for Video Streaming Events at Scale
Altitude San Francisco 2018: Preparing for Video Streaming Events at ScaleAltitude San Francisco 2018: Preparing for Video Streaming Events at Scale
Altitude San Francisco 2018: Preparing for Video Streaming Events at ScaleFastly
 
Altitude San Francisco 2018: Building the Souther Hemisphere of the Internet
Altitude San Francisco 2018: Building the Souther Hemisphere of the InternetAltitude San Francisco 2018: Building the Souther Hemisphere of the Internet
Altitude San Francisco 2018: Building the Souther Hemisphere of the InternetFastly
 
Altitude San Francisco 2018: The World Cup Stream
Altitude San Francisco 2018: The World Cup StreamAltitude San Francisco 2018: The World Cup Stream
Altitude San Francisco 2018: The World Cup StreamFastly
 
Altitude San Francisco 2018: We Own Our Destiny
Altitude San Francisco 2018: We Own Our DestinyAltitude San Francisco 2018: We Own Our Destiny
Altitude San Francisco 2018: We Own Our DestinyFastly
 
Altitude San Francisco 2018: Scale and Stability at the Edge with 1.4 Billion...
Altitude San Francisco 2018: Scale and Stability at the Edge with 1.4 Billion...Altitude San Francisco 2018: Scale and Stability at the Edge with 1.4 Billion...
Altitude San Francisco 2018: Scale and Stability at the Edge with 1.4 Billion...Fastly
 
Altitude San Francisco 2018: Moving Off the Monolith: A Seamless Migration
Altitude San Francisco 2018: Moving Off the Monolith: A Seamless MigrationAltitude San Francisco 2018: Moving Off the Monolith: A Seamless Migration
Altitude San Francisco 2018: Moving Off the Monolith: A Seamless MigrationFastly
 
Altitude San Francisco 2018: Bringing TLS to GitHub Pages
Altitude San Francisco 2018: Bringing TLS to GitHub PagesAltitude San Francisco 2018: Bringing TLS to GitHub Pages
Altitude San Francisco 2018: Bringing TLS to GitHub PagesFastly
 
Altitude San Francisco 2018: HTTP Invalidation Workshop
Altitude San Francisco 2018: HTTP Invalidation WorkshopAltitude San Francisco 2018: HTTP Invalidation Workshop
Altitude San Francisco 2018: HTTP Invalidation WorkshopFastly
 
Altitude San Francisco 2018: HTTP/2 Tales: Discovery and Woe
Altitude San Francisco 2018: HTTP/2 Tales: Discovery and WoeAltitude San Francisco 2018: HTTP/2 Tales: Discovery and Woe
Altitude San Francisco 2018: HTTP/2 Tales: Discovery and WoeFastly
 
Altitude San Francisco 2018: How Magento moved to the cloud while maintaining...
Altitude San Francisco 2018: How Magento moved to the cloud while maintaining...Altitude San Francisco 2018: How Magento moved to the cloud while maintaining...
Altitude San Francisco 2018: How Magento moved to the cloud while maintaining...Fastly
 
Altitude San Francisco 2018: Scaling Ethereum to 10B requests per day
Altitude San Francisco 2018: Scaling Ethereum to 10B requests per dayAltitude San Francisco 2018: Scaling Ethereum to 10B requests per day
Altitude San Francisco 2018: Scaling Ethereum to 10B requests per dayFastly
 
Altitude San Francisco 2018: Authentication at the Edge
Altitude San Francisco 2018: Authentication at the EdgeAltitude San Francisco 2018: Authentication at the Edge
Altitude San Francisco 2018: Authentication at the EdgeFastly
 
Altitude San Francisco 2018: WebAssembly Tools & Applications
Altitude San Francisco 2018: WebAssembly Tools & ApplicationsAltitude San Francisco 2018: WebAssembly Tools & Applications
Altitude San Francisco 2018: WebAssembly Tools & ApplicationsFastly
 
Altitude San Francisco 2018: Testing with Fastly Workshop
Altitude San Francisco 2018: Testing with Fastly WorkshopAltitude San Francisco 2018: Testing with Fastly Workshop
Altitude San Francisco 2018: Testing with Fastly WorkshopFastly
 
Altitude San Francisco 2018: Fastly Purge Control at the USA TODAY NETWORK
Altitude San Francisco 2018: Fastly Purge Control at the USA TODAY NETWORKAltitude San Francisco 2018: Fastly Purge Control at the USA TODAY NETWORK
Altitude San Francisco 2018: Fastly Purge Control at the USA TODAY NETWORKFastly
 
Altitude San Francisco 2018: WAF Workshop
Altitude San Francisco 2018: WAF WorkshopAltitude San Francisco 2018: WAF Workshop
Altitude San Francisco 2018: WAF WorkshopFastly
 
Altitude San Francisco 2018: Logging at the Edge
Altitude San Francisco 2018: Logging at the Edge Altitude San Francisco 2018: Logging at the Edge
Altitude San Francisco 2018: Logging at the Edge Fastly
 
Altitude San Francisco 2018: Programming the Edge
Altitude San Francisco 2018: Programming the EdgeAltitude San Francisco 2018: Programming the Edge
Altitude San Francisco 2018: Programming the EdgeFastly
 
Enabling lightning fast content delivery for Spotify
Enabling lightning fast content delivery for SpotifyEnabling lightning fast content delivery for Spotify
Enabling lightning fast content delivery for SpotifyFastly
 

Más de Fastly (20)

Revisiting HTTP/2
Revisiting HTTP/2Revisiting HTTP/2
Revisiting HTTP/2
 
Altitude San Francisco 2018: Preparing for Video Streaming Events at Scale
Altitude San Francisco 2018: Preparing for Video Streaming Events at ScaleAltitude San Francisco 2018: Preparing for Video Streaming Events at Scale
Altitude San Francisco 2018: Preparing for Video Streaming Events at Scale
 
Altitude San Francisco 2018: Building the Souther Hemisphere of the Internet
Altitude San Francisco 2018: Building the Souther Hemisphere of the InternetAltitude San Francisco 2018: Building the Souther Hemisphere of the Internet
Altitude San Francisco 2018: Building the Souther Hemisphere of the Internet
 
Altitude San Francisco 2018: The World Cup Stream
Altitude San Francisco 2018: The World Cup StreamAltitude San Francisco 2018: The World Cup Stream
Altitude San Francisco 2018: The World Cup Stream
 
Altitude San Francisco 2018: We Own Our Destiny
Altitude San Francisco 2018: We Own Our DestinyAltitude San Francisco 2018: We Own Our Destiny
Altitude San Francisco 2018: We Own Our Destiny
 
Altitude San Francisco 2018: Scale and Stability at the Edge with 1.4 Billion...
Altitude San Francisco 2018: Scale and Stability at the Edge with 1.4 Billion...Altitude San Francisco 2018: Scale and Stability at the Edge with 1.4 Billion...
Altitude San Francisco 2018: Scale and Stability at the Edge with 1.4 Billion...
 
Altitude San Francisco 2018: Moving Off the Monolith: A Seamless Migration
Altitude San Francisco 2018: Moving Off the Monolith: A Seamless MigrationAltitude San Francisco 2018: Moving Off the Monolith: A Seamless Migration
Altitude San Francisco 2018: Moving Off the Monolith: A Seamless Migration
 
Altitude San Francisco 2018: Bringing TLS to GitHub Pages
Altitude San Francisco 2018: Bringing TLS to GitHub PagesAltitude San Francisco 2018: Bringing TLS to GitHub Pages
Altitude San Francisco 2018: Bringing TLS to GitHub Pages
 
Altitude San Francisco 2018: HTTP Invalidation Workshop
Altitude San Francisco 2018: HTTP Invalidation WorkshopAltitude San Francisco 2018: HTTP Invalidation Workshop
Altitude San Francisco 2018: HTTP Invalidation Workshop
 
Altitude San Francisco 2018: HTTP/2 Tales: Discovery and Woe
Altitude San Francisco 2018: HTTP/2 Tales: Discovery and WoeAltitude San Francisco 2018: HTTP/2 Tales: Discovery and Woe
Altitude San Francisco 2018: HTTP/2 Tales: Discovery and Woe
 
Altitude San Francisco 2018: How Magento moved to the cloud while maintaining...
Altitude San Francisco 2018: How Magento moved to the cloud while maintaining...Altitude San Francisco 2018: How Magento moved to the cloud while maintaining...
Altitude San Francisco 2018: How Magento moved to the cloud while maintaining...
 
Altitude San Francisco 2018: Scaling Ethereum to 10B requests per day
Altitude San Francisco 2018: Scaling Ethereum to 10B requests per dayAltitude San Francisco 2018: Scaling Ethereum to 10B requests per day
Altitude San Francisco 2018: Scaling Ethereum to 10B requests per day
 
Altitude San Francisco 2018: Authentication at the Edge
Altitude San Francisco 2018: Authentication at the EdgeAltitude San Francisco 2018: Authentication at the Edge
Altitude San Francisco 2018: Authentication at the Edge
 
Altitude San Francisco 2018: WebAssembly Tools & Applications
Altitude San Francisco 2018: WebAssembly Tools & ApplicationsAltitude San Francisco 2018: WebAssembly Tools & Applications
Altitude San Francisco 2018: WebAssembly Tools & Applications
 
Altitude San Francisco 2018: Testing with Fastly Workshop
Altitude San Francisco 2018: Testing with Fastly WorkshopAltitude San Francisco 2018: Testing with Fastly Workshop
Altitude San Francisco 2018: Testing with Fastly Workshop
 
Altitude San Francisco 2018: Fastly Purge Control at the USA TODAY NETWORK
Altitude San Francisco 2018: Fastly Purge Control at the USA TODAY NETWORKAltitude San Francisco 2018: Fastly Purge Control at the USA TODAY NETWORK
Altitude San Francisco 2018: Fastly Purge Control at the USA TODAY NETWORK
 
Altitude San Francisco 2018: WAF Workshop
Altitude San Francisco 2018: WAF WorkshopAltitude San Francisco 2018: WAF Workshop
Altitude San Francisco 2018: WAF Workshop
 
Altitude San Francisco 2018: Logging at the Edge
Altitude San Francisco 2018: Logging at the Edge Altitude San Francisco 2018: Logging at the Edge
Altitude San Francisco 2018: Logging at the Edge
 
Altitude San Francisco 2018: Programming the Edge
Altitude San Francisco 2018: Programming the EdgeAltitude San Francisco 2018: Programming the Edge
Altitude San Francisco 2018: Programming the Edge
 
Enabling lightning fast content delivery for Spotify
Enabling lightning fast content delivery for SpotifyEnabling lightning fast content delivery for Spotify
Enabling lightning fast content delivery for Spotify
 

Último

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 

Último (20)

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 

Altitude San Francisco 2018: Video Workshop Docs

  • 1. Video Workshop Docs GitHub Link: https://bit.ly/alt2018-video Optimizing Video Delivery
  • 2. presents How I Learned to Stop Worrying and Love VideoChris Buckley and Jim Hall | Sr. Solutions Engineers
  • 3. Who the hell are we? Optimizing video delivery Introductions
  • 4. Log Streaming with Sumo Logic Visibility Performance VOD Live Scaling Shielding CDN Stacking Optimizing video delivery
  • 5. Quick poll: How would you categorize your comfort- level with video delivery? Optimizing video delivery Introductions
  • 7. You need two things: ● Log analysis tool ● Logs Optimizing video delivery Visibility
  • 8. Optimizing video delivery Visibility - Configure log streaming Log Analysis
  • 9. STEPS ● Clone the service ● Add the Sumo Logic endpoint ● Add the custom VCL ● Upload the custom VCL ● Activate the updated version Optimizing video delivery Visibility - Configure log streaming
  • 11. Download / clone the Git repo: https://bit.ly/alt2018-video Install JQ (or any JSON parser): https://bit.ly/jq-json Optimizing video delivery GitHub, JSON, Environment Configuration
  • 12. Export API token & Service ID: Optimizing video delivery GitHub, JSON, Environment Configuration bash$ export API_TOKEN=<token> bash$ export SERVICE_ID=<service id>
  • 13. In the console, navigate to the repo's `workshop-1` directory Optimizing video delivery GitHub, JSON, Environment Configuration
  • 14. In GitHub, open the ReadMe.md and the Workshop-1 as two tabs Optimizing video delivery GitHub, JSON, Environment Configuration
  • 15. curl to clone curl -X PUT https://api.fastly.com/service/${SERVICE_ID}/version/1/clone -H "Fastly-Key: ${API_KEY}" | jq Talk Title
  • 16. api response should look something like this { "testing": false, "locked": false, "number": 2, "active": false, "service_id": "2KVPqlEPCh6tRCVQBxlUYk", "staging": false, "created_at": "2018-08-31T17:04:51Z", "deleted_at": null, "comment": "", "updated_at": "2018-08-31T17:16:00Z", "deployed": false } Talk Title
  • 17. Configure the logging endpoint. Optimizing video delivery Visibility - Configure log streaming
  • 18. Recommended logging variables for video Optimizing video delivery Visibility - Logging Variables
  • 19. Questions on logging variables? Optimizing video delivery Visibility - Logging Variables
  • 22. api endpoint parameters url- encoded JSON name=workshop1- SumoLogic&message_type=blank&url=https://endpoint3.collection.us2.sumologic. com/receiver/v1/http/ZaVnC4dhaV1z1AeZ1Y1MjfCQd5Ypwxi7jXvw0uY2hR3ycKg_lCVd77r j5lgKm-8krz30nPgv-dBhWCqIl_et_Yez_BMeVUnv2S4d9iqYD1uWMqOZcgiT- A==&format=%7B%22timestamp%22%3A%22%25%7Bbegin%3A%25Y-%25m- %25d%20%25H%3A%25M%3A%25S%7Dt.%25%7Btime.start.usec_frac%7DV%22%2C%0A%20%22c lient_ip%22%3A%22%25%7Breq.http.Fastly-Client- IP%7DV%22%2C%0A%20%22client_as_number%22%3A%25%7Bclient.as.number%7DV%2C%0A% 20%22client_country_code%22%3A%22%25%7Bclient.geo.country_code3%7DV%22%2C%0A %20%22client_city%22%3A%22%25%7Bclient.geo.city%7DV%22%2C%0A%20%22tls_versio n%3A%22%3A%22%25%7Btls.client.protocol%7DV%22%2C%0A%22user_agent%22%3A%22%25 %7Bregsuball%28cstr_escape%28req.http.User- Agent%29%2C%22%28%3F%3C%21%5C%5C%5C%5C%29%5C%5C%5C%5C%28%3F%21%5C%5C%5C%5C%2 9%22%2C%22%5C%5C%5C%5C%5C%5C%5C%5C%22%29%7DV%22%2C%0A%22referer%22%3A%22%25% 7Bregsuball%28cstr_escape%28req.http.Referer%29%2C%22%28%3F%3C%21%5C%5C%5C%5 C%29%5C%5C%5C%5C%28%3F%21%5C%5C%5C%5C%29%22%2C%22%5C%5C%5C%5C%5C%5C%5C%5C%22 %29%7DV%22%2C%0A%20%22host%22%3A%22%25%7Breq.http.host%7DV%22%2C%20%0A%20%22 url%22%3A%22%25%7Bcstr_escape%28req.url%29%7DV%22%2C%0A%20%22http_status%22% 3A%25%7Bresp.status%7DV%2C%0A%20%22http_status_message%22%3A%22%25%7Bresp.re sponse%7DV%22%2C%0A%20%22origin_http_status%22%3A%22%25%7Bberesp.status%7DV% 22%2C%0A%20%22restarts%22%3A%25%7Breq.restarts%7DV%2C%0A%20%22pop%22%3A%22%2 5%7Bserver.datacenter%7DV%22%2C%0A%20%22cache_status%22%3A%22%25%7Bresp.http .X- Cache%7DV%22%2C%0A%20%22fastly_state%22%3A%22%25%7Bfastly_info.state%7DV%22%Talk Title
  • 23. curl to set up Sumo Logic logging endpoint curl -X POST https://api.fastly.com/service/${SERVICE_ID}/version/2/logging/sumologic -H "Fastly-Key: ${API_KEY}" -d@logging-log_format.txt | jq Talk Title
  • 24. api response should look something like this { "name": "workshop1-SumoLogic", "message_type": "blank", "format": "<redacted>", "url": "https://endpoint3.collection.us2.sumologic.com/receiver/v1/http/ZaVnC4dhaV1z1AeZ1 Y1MjfCQd5Ypwxi7jXvw0uY2hR3ycKg_lCVd77rj5lgKm-8krz30nPgv- dBhWCqIl_et_Yez_BMeVUnv2S4d9iqYD1uWMqOZcgiT-A==", "service_id": "2KVPqlEPCh6tRCVQBxlUYk", "version": "1", "placement": null, "format_version": "2", "response_condition": "", "updated_at": "2018-09-08T09:12:09Z", "deleted_at": null, "created_at": "2018-09-08T09:12:09Z" } Talk Title
  • 25. Modify the VCL… Optimizing video delivery Visibility - Configure log streaming
  • 32. Save the file as: workshop1_v2.vcl Optimizing video delivery Visibility - Configure log streaming
  • 33. Upload the custom VCL… Optimizing video delivery Visibility - Configure log streaming
  • 34. curl to upload custom VCL curl -X POST https://api.fastly.com/service/${SERVICE_ID}/version/2/vcl -H "Fastly-Key:${API_KEY}" -H 'content-type: multipart/form-data' --data "name=workshop1&main=true" --data-urlencode "content@workshop1_v2.vcl" | jq Talk Title
  • 35. api response should look something like this { "name": "workshop1", "main": true, "service_id": "2KVPqlEPCh6tRCVQBxlUYk", "version": 12, "content": "", "deleted_at": null, "created_at": "2018-09-08T15:32:34Z", "updated_at": "2018-09-08T15:32:34Z" } Talk Title
  • 36. Activate the service… Optimizing video delivery Visibility - Configure log streaming
  • 37. curl to activate the service curl -X PUT https://api.fastly.com/service/${SERVICE_ID}/version/2/activate -H "Fastly-Key: ${API_KEY}" | jq Talk Title
  • 38. …make a bunch of requests from around the world using Catchpoint Optimizing video delivery Visibility - Configure log streaming
  • 39. ….annnnnnnnd behold! Optimizing video delivery Visibility - Sumologic
  • 40. Walkthrough of the Sumo Logic dashboard Optimizing video delivery Visibility - Sumologic
  • 42. • Two main ways of delivering video • Progressive download • HTTP Streaming Optimizing video delivery Quick video overview
  • 43. • Progressive Download • Supported natively in all modern browsers via the HTML5 <video> tag • Usually for short videos ~30 secs • VOD only Optimizing video delivery Quick video overview
  • 44. • HTTP Streaming • VOD and Live • No special server software or license required • Provides Adaptive Bit Rate (ABR) • Video is packaged into discrete chunks or segments • Generally requires a player Optimizing video delivery Quick overview of video delivery via HTTP
  • 45. • HTTP streaming comes in a variety of flavors • HLS (Apple) • DASH (MPEG) • HDS (Adobe) • Smooth Streaming (Microsoft) Optimizing video delivery Quick overview of video delivery via HTTP
  • 46. • HLS Components • Manifests (.m3u8) • Master • Child or Media Playlist • Segments • Transportation Segments (.ts) • Fragmented MP4 (.fmp4) Optimizing video delivery Quick overview of video delivery via HTTP
  • 47. Questions? Optimizing video delivery Quick overview of video delivery via HTTP
  • 49. 1. Get familiar with the Fastly API 2. Understand video delivery challenges 3. Test, optimize, and confirm improvements for VOD delivery Optimizing video delivery Goals: Optimize VOD Delivery
  • 50. A CDN's Role ● CDNs help scale & accelerate content delivery ● Reduce origin load by serving cached objects ● Works great for smaller objects ● Larger objects benefit from optimizations
  • 51. Optimizing video delivery A content delivery workflow End user CDN Origin Requests Object Fetches Object Delivers Object Caches Object
  • 52. Optimizing video delivery Obstacles to Video Delivery TCP Congestion Windows Fetching Entire Objects
  • 53. What can we do about it?
  • 54. Optimizing video delivery HTTP & TCP Optimizations Increase Congestion Window Allows clients to better estimate network bandwidth and thereby select the ideal rendition and bitrate for the best playback quality. Configure Streaming Miss Reduces the time clients (players) must wait to begin downloading streams when Fastly's edge servers must fetch content from your origin.
  • 55. Optimizing video delivery Step 1: Testing download alias curltest="curl -w 'nLookup time:t%{time_namelookup} n Connect time:t%{time_connect} n App Con time:t%{time_appconnect} n PreXfer time:t%{time_pretransfer} n Redirect time:t%{time_redirect} n StartXfer time:t%{time_starttransfer} nn Total time:t%{time_total}n' -svo /dev/null -H 'Fastly-Debug: 1'" Test Curl Command Download Video File time curltest https://<num>- videoworkshop.global.ssl.fastly.net/vod/tears_of_steel/720p.mp4
  • 56. Optimizing video delivery Step 1: Testing download cont…. Lookup time: 0.067303 Connect time: 0.081613 App Con time: 0.145351 PreXfer time: 0.145988 Redirect time: 0.000000 StartXfer time: 2.429937 Total time: 12.066361 real 0m12.087s user 0m0.563s sys 0m0.561s Output
  • 57. Clone service from version 2 to version 3 Optimizing video delivery Step 2: Cloning new service curl -sv -H "Fastly-Key: ${API_KEY}" -X PUT https://api.fastly.com/service/${SERVICE_ID}/version/2/clone | jq
  • 58. Open main.vcl in your git repo, and add specific configuration optimizations. In vcl_fetch add contents of vod-vcl_fetch.vcl: Talk Title Step 3: Add optimizations ############################################ # VIDEO WORKSHOP: INSERT vcl_fetch CODE HERE ############################################ # Set 1s ttl if origin response HTTP status code is anything other than 200 and 206 if (!http_status_matches(beresp.status, "200,206")) { set beresp.ttl = 1s; } # Enable Streaming Miss only for video or audio objects. # Below conditions checks for video or audio file extensions commonly used in # HTTP Streaming formats. if (req.url.ext ~ "m4s|mp4|ts|aac|fmp4") { set beresp.do_stream = true; } # Configure caching for VOD content if(req.http.X-Service == "vod") { /* set stale_if_error and stale_while_revalidate (customize these values) */ set beresp.stale_if_error = 7d; set beresp.stale_while_revalidate = 60s; # Cache VOD content for 1 year set beresp.ttl = 365d; } ############################################ # END VIDEO WORKSHOP ############################################
  • 59. Add final optimizations in vcl_deliver from the file vod-vcl_deliver.vcl Talk Title Step 3: Add optimizations cont... ############################################ # VIDEO WORKSHOP: INSERT vcl_deliver CODE HERE ############################################ # increase init cwnd if (client.requests == 1) { set client.socket.cwnd = 45; } ############################################ # END VIDEO WORKSHOP ############################################
  • 60. Save config, upload using the API, and activate the version in our service (version 3). In order to upload VCL we must URL encode the file so that we can send it via cURL: Talk Title Step 4: Upload & activate version curl -vs -H "Fastly-Key: ${API_KEY}" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "name=workshop2&main=true" --data-urlencode "content@workshop2_v3.vcl" https://api.fastly.com/service/${SERVICE_ID}/version/3/vcl | jq
  • 61. Response: Talk Title Step 4: Upload & activate version { "name": "workshop2", "main": true, "content": "<lots of VCL>, "service_id": "1OPpKYvOlWVx37twfGVsq0", "version": 3, "deleted_at": null, "created_at": "2018-06-20T20:23:52+00:00", "updated_at": "2018-06-20T20:23:52+00:00" }
  • 62. Now,we can activate the version we just uploaded Talk Title Step 4: Upload & activate version curl -vs -H "Fastly-Key: ${API_KEY}" -X PUT https://api.fastly.com/service/${SERVICE_ID}/version/3/activate | jq
  • 63. Purge our video content (updating host to your specific service): Talk Title Step 5: Purge URL & re-test curl -X PURGE https://<num>- videoworkshop.global.ssl.fastly.net/vod/tears_of_steel/720p.mp4 Finally, test our video download again: time curltest https://<num>- videoworkshop.global.ssl.fastly.net/vod/tears_of_steel/720p.mp4
  • 64. Talk Title Step 5: Purge URL & re-test cont... Lookup time: 0.067303 Connect time: 0.081613 App Con time: 0.145351 PreXfer time: 0.145988 Redirect time: 0.000000 StartXfer time: 0.429937 Total time: 11.066361 real 0m12.087s user 0m0.563s sys 0m0.561s Output
  • 66. 1. Learn the differences between VOD and live video delivery 2. Deploy a new origin to deliver live video 3. Configure live streaming specific optimizations 4. Create a scalable live video configuration Talk Title Goals: Optimize Live Delivery
  • 67. Why Live is Different ● Content is more dynamic ● Stale content not as important ● Thundering Herd issues ● Protecting origin more critical
  • 68. Talk Title A live delivery workflow End user CDN Origin Requests Object Fetches Object Delivers Object Caches Object Client wants fresh content CDN doesn't need to cache as long
  • 69. How do we optimize?
  • 70. Talk Title Optimizations for Live Keeping Manifests "Dynamic" Reduces time in cache to allow for frequent updates of video segments. "Right-sizing" TTLs for segments Old segments have no need to be cached, reducing storage requirements and increasing CHR for other content.
  • 71. Talk Title Step 1: Add New Origin Server ● Clone the active service to a new development version (this time cloning version 3 to version 4): curl -sv -H "Fastly-Key: ${API_KEY}" -X PUT https://api.fastly.com/service/${SERVICE_ID}/version/3/clone | jq { "testing": false, "locked": false, "number": 4, .... } ● JSON response:
  • 72. Talk Title Step 1: Add New Origin Server Cont.. Now, lets add a new backend, our "live" service. curl -sv -H "Fastly-Key: ${API_KEY}" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "ipv4=35.230.111.226&name=live" https://api.fastly.com/service/${SERVICE_ID}/version/4/backend
  • 73. Talk Title Step 2: Add live optimizations ● In your repo you will find a file live-vcl_recv.vcl. ● This contains VCL to send any requests on the live route (in this case /live) to the new created created origin ● Add this to workshop2.vcl in the workshop section. It should look something more like this, ready to upload: ########################################### # VIDEO WORKSHOP - DO STUFF HERE ########################################### if(req.url.path ~ "^/live") { set req.backend = F_live; set req.url = regsub(req.url, "/live", "/hls"); set req.http.X-Service = "live"; } ######## vcl_recv ########### # Record number of retrans on the connection set req.http.total_retrans = client.socket.tcpi_total_retrans; ###############################
  • 74. Talk Title Step 2: Add live optimizations cont.. ● In your repo you will find a file live-vcl_fetch.vcl. ● This contains VCL to set specific caching behavior for manifests and segments if(req.http.X-service == "live") { # Set 1s ttls for video manifest and 3600s ttls for segments of HTTP Streaming formats. # Microsoft Smooth Streaming format manifest and segments do not have file extensions. # Look for the keywords "Manifest" and "QualityLevel" to identify manifest and segment requests. if (req.url.ext ~ "m3u8|mpd" || req.url.path ~ "Manifest") { set beresp.ttl = 1s; } else { if (req.url.ext ~ "m4s|mp4|ts|aac" || req.url.path ~ "QualityLevel") { set beresp.ttl = 3600s; } } }
  • 75. Talk Title Step 3: Upload and activate Upload our new configuration: curl -vs -H "Fastly-Key: ${API_KEY}" -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "name=workshop3&main=true" --data-urlencode "content@workshop3_v4.vcl" https://api.fastly.com/service/${SERVICE_ID}/version/4/vcl | jq Activate the draft version: curl -vs -H "Fastly-Key: ${API_KEY}" -X PUT https://api.fastly.com/service/${SERVICE_ID}/version/4/activate | jq
  • 76. Talk Title Step 4: Play our live stream ● Open a media player (or Safari) ● https://<num>- videoworkshop.global.ssl.fastly.net/live/stream. m3u8 ● Let the good times roll! ● We're not done just yet
  • 78. ● Many services / POPs connecting to origin ● Higher egress ● Higher infrastructure costs (CPU, etc) Talk Title What's the Thundering Herd?
  • 79. ● Designating a PoP as your "shield" reduces requests to origin ● Delivers content to edge PoPs requesting content ● Collapses multiple requests to 1 for new content Talk Title Origin Shielding
  • 80. ● Enabling shielding in Fastly helps mitigate this issue ● What about my other CDNs? Talk Title Shielding all the Things
  • 81. Talk Title Fastly Media Shield - A CDN for your CDNs Misses from edge sent to Media Shield Significant reduction in origin load Request collapsing consolidates multiple requests for same content down to one request to origin OriginMedia Shield End User Edge POP