SlideShare a Scribd company logo
AETN Digital Media | Confidential and Proprietary
TEMPLATE ABSTRACTION AND
AUTOMATED DEPLOYMENTS TO FASTLY
A Practical Walkthrough on Real Life Experiences
AETN Digital Media | Confidential and Proprietary
Then ☹
Manual UI Based Implementation
AETN Digital Media | Confidential and Proprietary
30m-1hr x Envs
Manual Process Back Then
• Caching
• Shielding
• Geographical
• Device Detection
• Backends
• Redirects
• Proxies
• Authorization
www.aetv.com
• Caching
• Shielding
• Geographical
• Device Detection
• Backends
• Redirects
• Proxies
• Authorization
www.mylifetime.com
• Caching
• Shielding
• Geographical
• Device Detection
• Backends
• Redirects
• Proxies
• Authorization
www.fyi.tv
• Caching
• Shielding
• Geographical
• Device Detection
• Backends
• Redirects
• Proxies
• Authorization
www.history.com
AETN Digital Media | Confidential and Proprietary
And then we have more sites!
30m-1hr x Env
30m-1hr x Env
30m-1hr x Env
AETN Digital Media | Confidential and Proprietary
Even more URLS added
30m-1hr x Env
30m-1hr x Env
30m-1hr x Env
30m-1hr x Env
30m-1hr x Env
30m-1hr x Env
AETN Digital Media | Confidential and Proprietary
Digging into Legacy Code!
AETN Digital Media | Confidential and Proprietary
Manual Process Back Then!
AETN Digital Media | Confidential and Proprietary
Update (100)
URLS
3 environments
Weeks of
work=
Manual Process Back Then!
AETN Digital Media | Confidential and Proprietary
DevOps Principals
• Collaboration
• Test everything
• Treat Infrastructure as code
• Breakdown the barriers
• Automate everything
• Measure & monitor everything
• Support business and IT agility
• Work as one team end to end
AETN Digital Media | Confidential and Proprietary
And Now ☺
Continuous
Integration
Fastly VCL
Templates APIs
Automated
Testing
EQUALS Awesome!
AETN Digital Media | Confidential and Proprietary
Continuous Integration
Selenium
Automated Process
CI Tool
AETN Digital Media | Confidential and Proprietary
GLOBALFASTLY BOILER PLATE
Sub vcl_recv
Sub vcl_fetch
Sub vcl_hit
Sub vcl_miss
Sub vcl_deliver
Sub vcl_error
Sub vcl_pass
SERVICES
Application URLS
Main.vcl
Backends.vcl
custom.vcl
default.vcl
Fastly Boiler Plate
Sub vcl_recv
call aetn_recv_shield
call aetn_recv_geo
call aetn_recv_cache
aetn.vcl
Template Abstraction
call aetn_recv_device
sub aetn_recv_shield
sub aetn_recv_geo
sub aetn_recv_cache
sub aetn_recv_device
AETN Digital Media | Confidential and Proprietary
Environment Agnostic Implementation
• Separate Service for each Env: {env}-abc.com
• Abstract Env Specific Backends in separate VCLs: {env}-backends.vcl
Backend dev_abc_com {
.first_byte_timeout = 3s;
.connect_timeout = 1s;
.dynamic = true;
.max_connections = 200;
.between_bytes_timeout = 3s;
.share_key = ”COMMONBACKEND";
.port = "443";
.host = ”dev.abc.com";
.probe = {
.url = "/aetn-heartbeat.html";
.interval = 30s;
.timeout = 3s;
.window = 5;
.threshold = 2;
}
}
• Use GITFlow guidelines
• CI Tool reads the config file to deploy to correct env
"environments" : {
"dev" : {
"ref" : "refs/heads",
"servers" : [
{
"id" : ”ABC567defgzThQ"
}
]
},
AETN Digital Media | Confidential and Proprietary
CIDataFlowforManagingEnvAgnostic
CI ToolGitHUB
Config File
(Env to Service Mapping)
Process
qa-backend.vcl
Process
dev-backend.vcl
Process all common files
Process
prod-backend.vcl
Event Payload
Notification to
CI Tool
Process Payload
and identify Event Type
Identify
ENV and
Service ID
QA
FASTLY
Deploy Files and Activate
DEV PROD
Commit VCL
AETN Digital Media | Confidential and Proprietary
DeploymentWorkFlowUsingFastlyAPI
List of Files Modified
Service/
Common
Retrieve the list of Services
Parse the list of services
Retrieve the service and
common files
Fastly Dev Version
(/service/search?name)
Clone New Version
(/service/service_id/version/number/clone)
Deploy Files
(/service/service_id/version/version/vcl/{main})
Activate
(/service/service_id/version/number/activate)
Create Dev Version
(/service/service_id/version/number/clone)
GITHUB
Deployment
Object
Common
Service
No
Yes
AETN Digital Media | Confidential and Proprietary
Update (100)
URLS
3 environments
Weeks of
work=
Automated Process Now!
From
To
Update (100)
URLS
3 environments a few Minutes
=
To
AETN Digital Media | Confidential and Proprietary
Workflow in Action
Update TTL for all sites
AETN Digital Media | Confidential and Proprietary
• Create a feature branch
• GIT Clone Repo
$ git clone https://USERNAME:TOKEN_OR_PASSWORD@github.com/aenetworks/
REPO_NAME.git fastly
Cloning into 'fastly'...
remote: Counting objects: 11441, done.
remote: Compressing objects: 100% (127/127), done.
remote: Total 11441 (delta 71), reused 0 (delta 0), pack-reused 11313
Receiving objects: 100% (11441/11441), 1.67 MiB | 1.17 MiB/s, done.
Resolving deltas: 100% (7939/7939), done.
Checking connectivity... done.
=================================================================================
====================================
WorkflowinAction
$ git checkout -b sd-increase-ttl
Switched to a new branch 'sd-increase-ttl'
=================================================================================
=====================================
if ((beresp.status == 200) && req.url ~ ".(aif|aiff|au|avi|bin|bmp|cab|carb|cct|
cdf|class|css|doc|dcr|dtd|eot|exe|flv|gcf|gff|gif|grv|html|hqx|ico|ini|jpeg|jpg|
js|json|mov|mp3|nc|otf|pct|png|ppc|pws|svg|swa|swf|ttf|txt|vbs|w32|wav|wbmp|wml|
wmlc|wmls|wmlsc|xsd|zip|webp|jxr|hdp|wdp)($|?)" ) {
set beresp.ttl = 36h;
}
=================================================================================
========================================
AETN Digital Media | Confidential and Proprietary
WorkflowinAction
if ((beresp.status == 200) && req.url ~ ".(aif|aiff|au|avi|bin|bmp|cab|carb|cct|
cdf|class|css|doc|dcr|dtd|eot|exe|flv|gcf|gff|gif|grv|html|hqx|ico|ini|jpeg|jpg|
js|json|mov|mp3|nc|otf|pct|png|ppc|pws|svg|swa|swf|ttf|txt|vbs|w32|wav|wbmp|wml|
wmlc|wmls|wmlsc|xsd|zip|webp|jxr|hdp|wdp)($|?)" ) {
set beresp.ttl = 36h;
}
• Modify TTL in any editor
• Dev:
• GIT Commit and Push to Feature Branch
$ git commit -m "Increased the TTL" -a
[sd-increase-ttl f5d4bff] Increased the TTL
1 file changed, 1 insertion(+), 1 deletion(-)
$ git push origin sd-increase-ttl
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 716 bytes | 0 bytes/s, done.
Total 6 (delta 2), reused 0 (delta 0)
To https://USERNAME:TOKEN_OR_PASSWORD@github.com/aenetworks/REPO_NAME.git
* [new branch] sd-increase-ttl -> sd-increase-ttl
wrap
Today at 4:16 PM • 2KB Plain Text snippet • Private snippet shared with you
shift+enter to add a new line
• QA and Prod
• Follow GIT Flow to Create Pull request and release to appropriate Env
AETN Digital Media | Confidential and Proprietary
Thanks!

More Related Content

What's hot

Stupid Boot Tricks: using ipxe and chef to get to boot management bliss
Stupid Boot Tricks: using ipxe and chef to get to boot management blissStupid Boot Tricks: using ipxe and chef to get to boot management bliss
Stupid Boot Tricks: using ipxe and chef to get to boot management bliss
macslide
 
Altitude NY 2018: Programming the edge workshop
Altitude NY 2018: Programming the edge workshopAltitude NY 2018: Programming the edge workshop
Altitude NY 2018: Programming the edge workshop
Fastly
 
Securing Prometheus exporters using HashiCorp Vault
Securing Prometheus exporters using HashiCorp VaultSecuring Prometheus exporters using HashiCorp Vault
Securing Prometheus exporters using HashiCorp Vault
Bram Vogelaar
 
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, EverAltitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever
Fastly
 
Autoscaling with hashi_corp_nomad
Autoscaling with hashi_corp_nomadAutoscaling with hashi_corp_nomad
Autoscaling with hashi_corp_nomad
Bram Vogelaar
 
Ruby HTTP clients comparison
Ruby HTTP clients comparisonRuby HTTP clients comparison
Ruby HTTP clients comparisonHiroshi Nakamura
 
Gruntwork Executive Summary
Gruntwork Executive SummaryGruntwork Executive Summary
Gruntwork Executive Summary
Yevgeniy Brikman
 
Testing your infrastructure with litmus
Testing your infrastructure with litmusTesting your infrastructure with litmus
Testing your infrastructure with litmus
Bram Vogelaar
 
Static Typing in Vault
Static Typing in VaultStatic Typing in Vault
Static Typing in Vault
GlynnForrest
 
Bootstrapping multidc observability stack
Bootstrapping multidc observability stackBootstrapping multidc observability stack
Bootstrapping multidc observability stack
Bram Vogelaar
 
bootstrapping containers with confd
bootstrapping containers with confdbootstrapping containers with confd
bootstrapping containers with confd
m_richardson
 
Observability with Consul Connect
Observability with Consul ConnectObservability with Consul Connect
Observability with Consul Connect
Bram Vogelaar
 
Node.js cluster
Node.js clusterNode.js cluster
Node.js cluster
Derek Willian Stavis
 
Altitude NY 2018: 132 websites, 1 service: Your local news runs on Fastly
Altitude NY 2018: 132 websites, 1 service: Your local news runs on FastlyAltitude NY 2018: 132 websites, 1 service: Your local news runs on Fastly
Altitude NY 2018: 132 websites, 1 service: Your local news runs on Fastly
Fastly
 
Creating Reusable Puppet Profiles
Creating Reusable Puppet ProfilesCreating Reusable Puppet Profiles
Creating Reusable Puppet Profiles
Bram Vogelaar
 
Composable and streamable Play apps
Composable and streamable Play appsComposable and streamable Play apps
Composable and streamable Play apps
Yevgeniy Brikman
 
Integrating icinga2 and the HashiCorp suite
Integrating icinga2 and the HashiCorp suiteIntegrating icinga2 and the HashiCorp suite
Integrating icinga2 and the HashiCorp suite
Bram Vogelaar
 
A complete guide to Node.js
A complete guide to Node.jsA complete guide to Node.js
A complete guide to Node.js
Prabin Silwal
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
Fabio Tiriticco
 

What's hot (20)

Stupid Boot Tricks: using ipxe and chef to get to boot management bliss
Stupid Boot Tricks: using ipxe and chef to get to boot management blissStupid Boot Tricks: using ipxe and chef to get to boot management bliss
Stupid Boot Tricks: using ipxe and chef to get to boot management bliss
 
Altitude NY 2018: Programming the edge workshop
Altitude NY 2018: Programming the edge workshopAltitude NY 2018: Programming the edge workshop
Altitude NY 2018: Programming the edge workshop
 
Securing Prometheus exporters using HashiCorp Vault
Securing Prometheus exporters using HashiCorp VaultSecuring Prometheus exporters using HashiCorp Vault
Securing Prometheus exporters using HashiCorp Vault
 
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, EverAltitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever
 
Autoscaling with hashi_corp_nomad
Autoscaling with hashi_corp_nomadAutoscaling with hashi_corp_nomad
Autoscaling with hashi_corp_nomad
 
Ruby HTTP clients comparison
Ruby HTTP clients comparisonRuby HTTP clients comparison
Ruby HTTP clients comparison
 
Gruntwork Executive Summary
Gruntwork Executive SummaryGruntwork Executive Summary
Gruntwork Executive Summary
 
Testing your infrastructure with litmus
Testing your infrastructure with litmusTesting your infrastructure with litmus
Testing your infrastructure with litmus
 
Static Typing in Vault
Static Typing in VaultStatic Typing in Vault
Static Typing in Vault
 
About Node.js
About Node.jsAbout Node.js
About Node.js
 
Bootstrapping multidc observability stack
Bootstrapping multidc observability stackBootstrapping multidc observability stack
Bootstrapping multidc observability stack
 
bootstrapping containers with confd
bootstrapping containers with confdbootstrapping containers with confd
bootstrapping containers with confd
 
Observability with Consul Connect
Observability with Consul ConnectObservability with Consul Connect
Observability with Consul Connect
 
Node.js cluster
Node.js clusterNode.js cluster
Node.js cluster
 
Altitude NY 2018: 132 websites, 1 service: Your local news runs on Fastly
Altitude NY 2018: 132 websites, 1 service: Your local news runs on FastlyAltitude NY 2018: 132 websites, 1 service: Your local news runs on Fastly
Altitude NY 2018: 132 websites, 1 service: Your local news runs on Fastly
 
Creating Reusable Puppet Profiles
Creating Reusable Puppet ProfilesCreating Reusable Puppet Profiles
Creating Reusable Puppet Profiles
 
Composable and streamable Play apps
Composable and streamable Play appsComposable and streamable Play apps
Composable and streamable Play apps
 
Integrating icinga2 and the HashiCorp suite
Integrating icinga2 and the HashiCorp suiteIntegrating icinga2 and the HashiCorp suite
Integrating icinga2 and the HashiCorp suite
 
A complete guide to Node.js
A complete guide to Node.jsA complete guide to Node.js
A complete guide to Node.js
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
 

Viewers also liked

Abstraction
AbstractionAbstraction
Abstraction
adil raja
 
Design Patterns on Service Abstraction
Design Patterns on Service Abstraction Design Patterns on Service Abstraction
Design Patterns on Service Abstraction
Md. Shafiuzzaman Hira
 
Service design principles and patterns
Service design principles and patternsService design principles and patterns
Service design principles and patterns
Return on Intelligence
 
Making ops life easier
Making ops life easierMaking ops life easier
Making ops life easier
Fastly
 
Building Customer User Experiences from the Edge
Building Customer User Experiences from the EdgeBuilding Customer User Experiences from the Edge
Building Customer User Experiences from the Edge
Fastly
 
Know your resolvers
Know your resolversKnow your resolvers
Know your resolvers
Fastly
 
Next-gen API authentication
Next-gen API authenticationNext-gen API authentication
Next-gen API authentication
Fastly
 
Addressing IPv6
Addressing IPv6Addressing IPv6
Addressing IPv6
Fastly
 
The perfect support ticket
The perfect support ticketThe perfect support ticket
The perfect support ticket
Fastly
 
Progressive web apps
Progressive web appsProgressive web apps
Progressive web apps
Fastly
 
Services Oriented Infrastructure in a Web2.0 World
Services Oriented Infrastructure in a Web2.0 WorldServices Oriented Infrastructure in a Web2.0 World
Services Oriented Infrastructure in a Web2.0 World
Lexumo
 

Viewers also liked (11)

Abstraction
AbstractionAbstraction
Abstraction
 
Design Patterns on Service Abstraction
Design Patterns on Service Abstraction Design Patterns on Service Abstraction
Design Patterns on Service Abstraction
 
Service design principles and patterns
Service design principles and patternsService design principles and patterns
Service design principles and patterns
 
Making ops life easier
Making ops life easierMaking ops life easier
Making ops life easier
 
Building Customer User Experiences from the Edge
Building Customer User Experiences from the EdgeBuilding Customer User Experiences from the Edge
Building Customer User Experiences from the Edge
 
Know your resolvers
Know your resolversKnow your resolvers
Know your resolvers
 
Next-gen API authentication
Next-gen API authenticationNext-gen API authentication
Next-gen API authentication
 
Addressing IPv6
Addressing IPv6Addressing IPv6
Addressing IPv6
 
The perfect support ticket
The perfect support ticketThe perfect support ticket
The perfect support ticket
 
Progressive web apps
Progressive web appsProgressive web apps
Progressive web apps
 
Services Oriented Infrastructure in a Web2.0 World
Services Oriented Infrastructure in a Web2.0 WorldServices Oriented Infrastructure in a Web2.0 World
Services Oriented Infrastructure in a Web2.0 World
 

Similar to VCL template abstraction model and automated deployments to Fastly

Cloud Native: Designing Change-tolerant Software
Cloud Native: Designing Change-tolerant SoftwareCloud Native: Designing Change-tolerant Software
Cloud Native: Designing Change-tolerant Software
cornelia davis
 
Cloud Native Architectures for Devops
Cloud Native Architectures for DevopsCloud Native Architectures for Devops
Cloud Native Architectures for Devops
cornelia davis
 
Cloud Native: Designing Change-tolerant Software
Cloud Native: Designing Change-tolerant SoftwareCloud Native: Designing Change-tolerant Software
Cloud Native: Designing Change-tolerant Software
cornelia davis
 
Streaming Dataflow with Apache Flink
Streaming Dataflow with Apache Flink Streaming Dataflow with Apache Flink
Streaming Dataflow with Apache Flink
huguk
 
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
Amazon Web Services
 
Developing Resilient Cloud Native Apps with Spring Cloud
Developing Resilient Cloud Native Apps with Spring CloudDeveloping Resilient Cloud Native Apps with Spring Cloud
Developing Resilient Cloud Native Apps with Spring Cloud
Dustin Ruehle
 
TIAD : Automating the modern datacenter
TIAD : Automating the modern datacenterTIAD : Automating the modern datacenter
TIAD : Automating the modern datacenter
The Incredible Automation Day
 
Atmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern DatacenterAtmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern Datacenter
PROIDEA
 
How do I run microservices in production using Docker.
How do I run microservices in production using Docker.How do I run microservices in production using Docker.
How do I run microservices in production using Docker.
Daniël van Gils
 
Performance tests - it's a trap
Performance tests - it's a trapPerformance tests - it's a trap
Performance tests - it's a trap
Andrzej Ludwikowski
 
Planning to Fail #phpne13
Planning to Fail #phpne13Planning to Fail #phpne13
Planning to Fail #phpne13
Dave Gardner
 
On-the-fly Visual Category Search in Web-scale Image Collections
On-the-fly Visual Category Search in Web-scale Image CollectionsOn-the-fly Visual Category Search in Web-scale Image Collections
On-the-fly Visual Category Search in Web-scale Image Collections
Ken Chatfield
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
Olve Hansen
 
Plane Spotting
Plane SpottingPlane Spotting
Plane Spotting
Ted Coyle
 
Sadeem cloud native السحابة الطبيعية
Sadeem cloud native السحابة الطبيعيةSadeem cloud native السحابة الطبيعية
Sadeem cloud native السحابة الطبيعية
Taher Boujrida
 
Scala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @CourseraScala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @Coursera
C4Media
 
How we use and deploy Varnish at Opera
How we use and deploy Varnish at OperaHow we use and deploy Varnish at Opera
How we use and deploy Varnish at Opera
Cosimo Streppone
 
How netflix manages petabyte scale apache cassandra in the cloud
How netflix manages petabyte scale apache cassandra in the cloudHow netflix manages petabyte scale apache cassandra in the cloud
How netflix manages petabyte scale apache cassandra in the cloud
Vinay Kumar Chella
 
Chicago DevOps Meetup Nov2019
Chicago DevOps Meetup Nov2019Chicago DevOps Meetup Nov2019
Chicago DevOps Meetup Nov2019
Mike Villiger
 
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8sShipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
Andreas Grabner
 

Similar to VCL template abstraction model and automated deployments to Fastly (20)

Cloud Native: Designing Change-tolerant Software
Cloud Native: Designing Change-tolerant SoftwareCloud Native: Designing Change-tolerant Software
Cloud Native: Designing Change-tolerant Software
 
Cloud Native Architectures for Devops
Cloud Native Architectures for DevopsCloud Native Architectures for Devops
Cloud Native Architectures for Devops
 
Cloud Native: Designing Change-tolerant Software
Cloud Native: Designing Change-tolerant SoftwareCloud Native: Designing Change-tolerant Software
Cloud Native: Designing Change-tolerant Software
 
Streaming Dataflow with Apache Flink
Streaming Dataflow with Apache Flink Streaming Dataflow with Apache Flink
Streaming Dataflow with Apache Flink
 
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
 
Developing Resilient Cloud Native Apps with Spring Cloud
Developing Resilient Cloud Native Apps with Spring CloudDeveloping Resilient Cloud Native Apps with Spring Cloud
Developing Resilient Cloud Native Apps with Spring Cloud
 
TIAD : Automating the modern datacenter
TIAD : Automating the modern datacenterTIAD : Automating the modern datacenter
TIAD : Automating the modern datacenter
 
Atmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern DatacenterAtmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern Datacenter
 
How do I run microservices in production using Docker.
How do I run microservices in production using Docker.How do I run microservices in production using Docker.
How do I run microservices in production using Docker.
 
Performance tests - it's a trap
Performance tests - it's a trapPerformance tests - it's a trap
Performance tests - it's a trap
 
Planning to Fail #phpne13
Planning to Fail #phpne13Planning to Fail #phpne13
Planning to Fail #phpne13
 
On-the-fly Visual Category Search in Web-scale Image Collections
On-the-fly Visual Category Search in Web-scale Image CollectionsOn-the-fly Visual Category Search in Web-scale Image Collections
On-the-fly Visual Category Search in Web-scale Image Collections
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
 
Plane Spotting
Plane SpottingPlane Spotting
Plane Spotting
 
Sadeem cloud native السحابة الطبيعية
Sadeem cloud native السحابة الطبيعيةSadeem cloud native السحابة الطبيعية
Sadeem cloud native السحابة الطبيعية
 
Scala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @CourseraScala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @Coursera
 
How we use and deploy Varnish at Opera
How we use and deploy Varnish at OperaHow we use and deploy Varnish at Opera
How we use and deploy Varnish at Opera
 
How netflix manages petabyte scale apache cassandra in the cloud
How netflix manages petabyte scale apache cassandra in the cloudHow netflix manages petabyte scale apache cassandra in the cloud
How netflix manages petabyte scale apache cassandra in the cloud
 
Chicago DevOps Meetup Nov2019
Chicago DevOps Meetup Nov2019Chicago DevOps Meetup Nov2019
Chicago DevOps Meetup Nov2019
 
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8sShipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
 

More from Fastly

Revisiting HTTP/2
Revisiting HTTP/2Revisiting HTTP/2
Revisiting HTTP/2
Fastly
 
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
Fastly
 
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
Fastly
 
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
Fastly
 
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
Fastly
 
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 Migration
Fastly
 
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
Fastly
 
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
Fastly
 
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
Fastly
 
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 day
Fastly
 
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
Fastly
 
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
Fastly
 
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
Fastly
 
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
Fastly
 
Altitude San Francisco 2018: WAF Workshop
Altitude San Francisco 2018: WAF WorkshopAltitude San Francisco 2018: WAF Workshop
Altitude San Francisco 2018: WAF Workshop
Fastly
 
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: Video Workshop Docs
Altitude San Francisco 2018: Video Workshop DocsAltitude San Francisco 2018: Video Workshop Docs
Altitude San Francisco 2018: Video Workshop Docs
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 Edge
Fastly
 

More from 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: Video Workshop Docs
Altitude San Francisco 2018: Video Workshop DocsAltitude San Francisco 2018: Video Workshop Docs
Altitude San Francisco 2018: Video Workshop Docs
 
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
 

Recently uploaded

DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 

Recently uploaded (20)

DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 

VCL template abstraction model and automated deployments to Fastly

  • 1. AETN Digital Media | Confidential and Proprietary TEMPLATE ABSTRACTION AND AUTOMATED DEPLOYMENTS TO FASTLY A Practical Walkthrough on Real Life Experiences
  • 2. AETN Digital Media | Confidential and Proprietary Then ☹ Manual UI Based Implementation
  • 3. AETN Digital Media | Confidential and Proprietary 30m-1hr x Envs Manual Process Back Then • Caching • Shielding • Geographical • Device Detection • Backends • Redirects • Proxies • Authorization www.aetv.com • Caching • Shielding • Geographical • Device Detection • Backends • Redirects • Proxies • Authorization www.mylifetime.com • Caching • Shielding • Geographical • Device Detection • Backends • Redirects • Proxies • Authorization www.fyi.tv • Caching • Shielding • Geographical • Device Detection • Backends • Redirects • Proxies • Authorization www.history.com
  • 4. AETN Digital Media | Confidential and Proprietary And then we have more sites! 30m-1hr x Env 30m-1hr x Env 30m-1hr x Env
  • 5. AETN Digital Media | Confidential and Proprietary Even more URLS added 30m-1hr x Env 30m-1hr x Env 30m-1hr x Env 30m-1hr x Env 30m-1hr x Env 30m-1hr x Env
  • 6. AETN Digital Media | Confidential and Proprietary Digging into Legacy Code!
  • 7. AETN Digital Media | Confidential and Proprietary Manual Process Back Then!
  • 8. AETN Digital Media | Confidential and Proprietary Update (100) URLS 3 environments Weeks of work= Manual Process Back Then!
  • 9. AETN Digital Media | Confidential and Proprietary DevOps Principals • Collaboration • Test everything • Treat Infrastructure as code • Breakdown the barriers • Automate everything • Measure & monitor everything • Support business and IT agility • Work as one team end to end
  • 10. AETN Digital Media | Confidential and Proprietary And Now ☺ Continuous Integration Fastly VCL Templates APIs Automated Testing EQUALS Awesome!
  • 11. AETN Digital Media | Confidential and Proprietary Continuous Integration Selenium Automated Process CI Tool
  • 12. AETN Digital Media | Confidential and Proprietary GLOBALFASTLY BOILER PLATE Sub vcl_recv Sub vcl_fetch Sub vcl_hit Sub vcl_miss Sub vcl_deliver Sub vcl_error Sub vcl_pass SERVICES Application URLS Main.vcl Backends.vcl custom.vcl default.vcl Fastly Boiler Plate Sub vcl_recv call aetn_recv_shield call aetn_recv_geo call aetn_recv_cache aetn.vcl Template Abstraction call aetn_recv_device sub aetn_recv_shield sub aetn_recv_geo sub aetn_recv_cache sub aetn_recv_device
  • 13. AETN Digital Media | Confidential and Proprietary Environment Agnostic Implementation • Separate Service for each Env: {env}-abc.com • Abstract Env Specific Backends in separate VCLs: {env}-backends.vcl Backend dev_abc_com { .first_byte_timeout = 3s; .connect_timeout = 1s; .dynamic = true; .max_connections = 200; .between_bytes_timeout = 3s; .share_key = ”COMMONBACKEND"; .port = "443"; .host = ”dev.abc.com"; .probe = { .url = "/aetn-heartbeat.html"; .interval = 30s; .timeout = 3s; .window = 5; .threshold = 2; } } • Use GITFlow guidelines • CI Tool reads the config file to deploy to correct env "environments" : { "dev" : { "ref" : "refs/heads", "servers" : [ { "id" : ”ABC567defgzThQ" } ] },
  • 14. AETN Digital Media | Confidential and Proprietary CIDataFlowforManagingEnvAgnostic CI ToolGitHUB Config File (Env to Service Mapping) Process qa-backend.vcl Process dev-backend.vcl Process all common files Process prod-backend.vcl Event Payload Notification to CI Tool Process Payload and identify Event Type Identify ENV and Service ID QA FASTLY Deploy Files and Activate DEV PROD Commit VCL
  • 15. AETN Digital Media | Confidential and Proprietary DeploymentWorkFlowUsingFastlyAPI List of Files Modified Service/ Common Retrieve the list of Services Parse the list of services Retrieve the service and common files Fastly Dev Version (/service/search?name) Clone New Version (/service/service_id/version/number/clone) Deploy Files (/service/service_id/version/version/vcl/{main}) Activate (/service/service_id/version/number/activate) Create Dev Version (/service/service_id/version/number/clone) GITHUB Deployment Object Common Service No Yes
  • 16. AETN Digital Media | Confidential and Proprietary Update (100) URLS 3 environments Weeks of work= Automated Process Now! From To Update (100) URLS 3 environments a few Minutes = To
  • 17. AETN Digital Media | Confidential and Proprietary Workflow in Action Update TTL for all sites
  • 18. AETN Digital Media | Confidential and Proprietary • Create a feature branch • GIT Clone Repo $ git clone https://USERNAME:TOKEN_OR_PASSWORD@github.com/aenetworks/ REPO_NAME.git fastly Cloning into 'fastly'... remote: Counting objects: 11441, done. remote: Compressing objects: 100% (127/127), done. remote: Total 11441 (delta 71), reused 0 (delta 0), pack-reused 11313 Receiving objects: 100% (11441/11441), 1.67 MiB | 1.17 MiB/s, done. Resolving deltas: 100% (7939/7939), done. Checking connectivity... done. ================================================================================= ==================================== WorkflowinAction $ git checkout -b sd-increase-ttl Switched to a new branch 'sd-increase-ttl' ================================================================================= ===================================== if ((beresp.status == 200) && req.url ~ ".(aif|aiff|au|avi|bin|bmp|cab|carb|cct| cdf|class|css|doc|dcr|dtd|eot|exe|flv|gcf|gff|gif|grv|html|hqx|ico|ini|jpeg|jpg| js|json|mov|mp3|nc|otf|pct|png|ppc|pws|svg|swa|swf|ttf|txt|vbs|w32|wav|wbmp|wml| wmlc|wmls|wmlsc|xsd|zip|webp|jxr|hdp|wdp)($|?)" ) { set beresp.ttl = 36h; } ================================================================================= ========================================
  • 19. AETN Digital Media | Confidential and Proprietary WorkflowinAction if ((beresp.status == 200) && req.url ~ ".(aif|aiff|au|avi|bin|bmp|cab|carb|cct| cdf|class|css|doc|dcr|dtd|eot|exe|flv|gcf|gff|gif|grv|html|hqx|ico|ini|jpeg|jpg| js|json|mov|mp3|nc|otf|pct|png|ppc|pws|svg|swa|swf|ttf|txt|vbs|w32|wav|wbmp|wml| wmlc|wmls|wmlsc|xsd|zip|webp|jxr|hdp|wdp)($|?)" ) { set beresp.ttl = 36h; } • Modify TTL in any editor • Dev: • GIT Commit and Push to Feature Branch $ git commit -m "Increased the TTL" -a [sd-increase-ttl f5d4bff] Increased the TTL 1 file changed, 1 insertion(+), 1 deletion(-) $ git push origin sd-increase-ttl Counting objects: 6, done. Delta compression using up to 4 threads. Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 716 bytes | 0 bytes/s, done. Total 6 (delta 2), reused 0 (delta 0) To https://USERNAME:TOKEN_OR_PASSWORD@github.com/aenetworks/REPO_NAME.git * [new branch] sd-increase-ttl -> sd-increase-ttl wrap Today at 4:16 PM • 2KB Plain Text snippet • Private snippet shared with you shift+enter to add a new line • QA and Prod • Follow GIT Flow to Create Pull request and release to appropriate Env
  • 20. AETN Digital Media | Confidential and Proprietary Thanks!