SlideShare a Scribd company logo
1 of 107
Download to read offline
BUILD YOUR
OWN CDN


WITH


VARNISH
BY THIJS FERYN
Slow websites
SUCK
WEB PERFORMANCE IS AN
ESSENTIAL PART OF THE
USER EXPERIENCE
SLOW~DOWN
THROWING


SERVERS


ATTHEPROBLEM
MO' MONEY


MO' SERVERS


MO' PROBLEMS
IDENTIFY SLOWEST PARTS
OPTIMIZE
AFTER A WHILE YOU HIT THE LIMITS
CACHE
HI, I'M THIJS
I'M THE TECH
EVANGELIST
AT
9,000,000 WEBSITES


21% OF THE TOP 10K WEBSITES
I'M @THIJSFERYN
CONTENTDELIVERYCHALLENGES
FAST
GLOBAL


AVAILABILITY
STABLE
MORE THAN JUST WEB PAGES
REDUCE TIME TO GENERATE


THE RESPONSE
REDUCE THE SIZE OF THE RESPONSE
REDUCE THE DISTANCE BETWEEN
CLIENT & SERVER
OPTIMIZE BROWSER RENDERING
OPTIMIZE BROWSER RENDERING
HIGHER
THROUGHPUT
LOWER LATENCY
NORMALLY
USER SERVER
WITH VARNISH
USER VARNISH SERVER
WHY IS VARNISH


SO POWERFUL?
WHY IS VARNISH SO POWERFUL?
✓ EXTREMELY LOW RESOURCE CONSUMPTION


✓ EXTREMELY STABLE


✓ NO DISK ACCESS AT RUNTIME


✓ 500 GBPS PER SERVER*


✓ CONTENT STREAMING


✓ REAL-TIME CONTENT INVALIDATION


✓ REQUEST COALESCING


✓ VARNISH CONFIGURATION LANGUAGE


✓ VARNISH MODULES (VMODS)


✓ COMPLIES TO HTTP BEST PRACTICES
ORIGIN
VARNISH
REQUEST


COALESCING
QUEUED
CONNECTIONS
SINGLE BACKEND
FETCH
CONTROLLING THE CACHE WITH HTTP
Expires: Wed, 26 Feb 2020 23:30:00 GMT


Cache-control: public, max-age=3600, s-maxage=86400


Cache-control: private, no-cache, no-store


Vary: Accept-Language
GRACE MODE
Cache-control:public, max-age=3600,


stale-while-revalidate=200
ORIGIN
VARNISH
GRACE
SERVE STALE
OBJECT
BACKGROUND
FETCH
CONDITIONAL REVALIDATION
GET / HTTP/1.1


Host: example.com


HTTP/1.1 200 OK


Cache-control: max-age=3600


Etag: 87719aa72fb32c718001e747c75a93fd


Hello world
CONDITIONAL REVALIDATION
GET / HTTP/1.1


Host: example.com


If-None-Match: 87719aa72fb32c718001e747c75a93fd


HTTP/1.1 304 Not Modified


Cache-control: max-age=3600


Etag: 87719aa72fb32c718001e747c75a93fd
VARNISH CONFIGURATION LANGUAGE
VARNISH CONFIGURATION LANGUAGE
✓ DOMAIN-SPECIFIC LANGUAGE (DSL)


✓ CURLY BRACES (LIKE C, JAVA, ...)


✓ EXTENDS STANDARD BEHAVIOR


✓ PRE-DEFINED SUBROUTINES


✓ REFLECTS FINITE STATE MACHINE


✓ TRANSLATED INTO C-CODE WHEN VARNISH STARTS
VCL CAPABILITIES
✓ REQUEST HANDLING


✓ REQUEST ROUTING


✓ RESPONSE MANIPULATION


✓ BACKEND SELECTION


✓ CONTROLLING THE CACHE


✓ DECISION-MAKING "ON THE EDGE"
vcl 4.1;


backend default {


.host = "backend.example.com";


.port = "80";


}


sub vcl_recv {


if(req.url ~ "^/admin(/.*)?") {


return(pass);


}


}
WE'VE JUST LOWERED THE


TIME TO FIRST BYTE
ORIGIN SHIELD
USER VARNISH SERVER
USER VARNISH SERVER
USER VARNISH SERVER
ORIGIN DATACENTER
USER VARNISH SERVER
SOMEWHERE CONNECTED


TO THE INTERNET
REDUCE THE SIZE OVER THE WIRE
COMPRESSION
COMPRESSION
✓ GZIP COMPRESSION FOR TEXT-BASED CONTENT


✓ OPTIONAL BROTLI COMPRESSION (VARNISH ENTERPRISE)


✓ REDUCE THE SIZE OF THE IMAGES (VARNISH ENTERPRISE)
vcl 4.1;


backend default {


.host = "backend.example.com";


.port = "80";


}


sub vcl_backend_response {


if(beresp.http.Content-Type ~ "^(text|application)/" ||


beresp.http.Content-Type == "image/svg+xml") {


set beresp.do_gzip = true;


}


}
vcl 4.1;


import brotli;


backend default {


.host = "backend.example.com";


.port = "80";


}


sub vcl_init {


brotli.init(BOTH, transcode = true);


}


sub vcl_backend_response {


if(beresp.http.Content-Type ~ "^(text|application)/" ||


beresp.http.Content-Type == "image/svg+xml") {


brotli.compress();


}


}
vcl 4.1;


import image;


import headerplus;


backend default {


.host = "backend.example.com";


.port = "80";


}


sub vcl_backend_response {


headerplus.init(beresp);


if (beresp.http.content-type ~ "^image/(jpeg|png)$") {


if (bereq.http.Accept ~ "image/webp") {


image.webp();


}


headerplus.attr_set("Vary", "Accept");


}


headerplus.write();


}
REDUCE THE DISTANCE BETWEEN
CLIENT & SERVER
NETWORK


LIMITATIONS
NETWORK LIMITATIONS
✓ NETWORK LATENCY BECAUSE OF DISTANCE


✓ REDUCED THROUGHPUT BECAUSE OF NETWORK
SATURATION
USER VARNISH SERVER
ONE VARNISH SERVER


IS NO LONGER ENOUGH
EU
LATAM
US
APAC
WHY NOT


USE A CDN


PRODUCT?
VARNISH IS CDN SOFTWARE!
VARNISH AS A PRIVATE CDN
✓ SERVERS & RESOURCES AREN'T SHARED


✓ MORE CONTROL OVER CONTENT DELIVERY FLOW


✓ FOR SELECTED LOCALIZED POPS


✓ IF YOU ALREADY HAVE THE INFRASTRUCTURE


✓ REDUCE COST


✓ HYBRID: INCREASE COVERAGE LOCATIONS OF YOUR CDN


✓ HYBRID: PROTECT YOUR ORIGIN FROM CDN REVALIDATION
WHY VARNISH?
WHY VARNISH?
✓ PERFORMANCE & THROUGHPUT


✓ REQUEST COALESCING


✓ BACKEND REQUEST ROUTING


✓ HORIZONTAL SCALABILITY


✓ CONTROL


✓ TRANSPARENCY
REQUEST ROUTER
✓ ENTRYPOINT


✓ LOCATES "BEST" POINT OF PRESENCE


✓ NO SINGLE POINT OF FAILURE


✓ DISTRIBUTED


✓ OFTEN DNS-BASED WITH GEOLOCATION
CAPABILITIES
launch=geoip


geoip-database-files=/usr/share/GeoIP/GeoIP.dat,/usr/share/GeoIP/
GeoIPv6.dat


geoip-zones-file=/etc/powerdns/zone
POWERDNS
CONFIGURATION
FILE
domains:


- domain: example.com


- ttl: 300


- records:


example.com:


- soa: ns1.example.com hostmaster.example.com 2014090125 7200 3600
1209600 3600


- ns: ns1.example.com


- a: 192.168.0.1


eu.www.example.com:


- a: 192.0.0.2


na.www.example.com:


- a: 192.0.0.3


as.www.example.com:


- a: 192.0.0.4


af.www.example.com:


- a: 192.0.0.5


sa.www.example.com:


- a: 192.0.0.6


- services:


www.example.com: ['%cn.www.example.com', 'eu.www.example.com']%
ZONE FILE
domains:


- domain: example.com


- ttl: 300


- records:


example.com:


- soa: ns1.example.com hostmaster.example.com 2014090125 7200 3600
1209600 3600


- ns: ns1.example.com


- a: 192.168.0.1


eu.www.example.com:


- a: 192.0.0.2


na.www.example.com:


- a: 192.0.0.3


as.www.example.com:


- a: 192.0.0.4


af.www.example.com:


- a: 192.0.0.5


sa.www.example.com:


- a: 192.0.0.6


- services:


www.example.com: ['%cn.www.example.com', 'eu.www.example.com']%
%%: literal
 
%
%co: With legacy GeoIP database: three letter country name, MMDB & others: ISO3166 country code


%cc: ISO3166 country code.
%cn: ISO3166 continent code.
%af: v4 or v6.
%re: Region code
%na: AS organization name (spaces are converted to _)
%as: AS number
%ci: City name
%loc: LOC record style expansion of location
%lat: Decimal degree latitude
%lon: Decimal degree longitude
EDGE TIER
✓ DIRECT INTERFACE WITH CLIENTS


✓ HANDLE TLS


✓ AUTHENTICATION, RATE LIMITING, THROTTLING


✓ STORES "HOT" DATA IN MEMORY


✓ CONNECTS TO THE STORAGE TIER VIA SHARDING
SHARDING
✓ MAKE REQUESTS GO TO THE SAME BACKEND NODE


✓ USES CONSISTENT HASHING


✓ URL AS THE HASHING KEY


✓ SCALE STORAGE HORIZONTALLY
vcl 4.1;


import directors;


backend storage1 {


.host = "storage1.example.com";


.port = "80";


}


backend storage2 {


.host = "storage2.example.com";


.port = "80";


}


backend storage3 {


.host = "storage3.example.com";


.port = "80";


}


sub vcl_init {


new storage_tier = directors.shard();


storage_tier.add_backend(storage1, rampup=5m);


storage_tier.add_backend(storage2, rampup=5m);


storage_tier.add_backend(storage3, rampup=5m);


storage_tier.reconfigure();


}


sub vcl_recv {


set req.backend_hint = storage_tier.backend(URL);


}


SHARDING
vcl 4.1;


import directors;


backend storage1 {


.host = "storage1.example.com";


.port = "80";


}


backend storage2 {


.host = "storage2.example.com";


.port = "80";


}


backend storage3 {


.host = "storage3.example.com";


.port = "80";


}


sub vcl_init {


new storage_tier = directors.shard();


storage_tier.add_backend(storage1, rampup=5m);


storage_tier.add_backend(storage2, rampup=5m);


storage_tier.add_backend(storage3, rampup=5m);


storage_tier.reconfigure();


}


sub vcl_recv {


set req.backend_hint = storage_tier.backend(URL);


}
STORAGE TIER
✓ STORE AS MUCH CONTENT AS POSSIBLE


✓ SERVE AS SECONDARY ORIGIN


✓ LONGER TTLS


✓ STORE OBJECT IN MEMORY WITH VARNISH CACHE


✓ DON'T USE THE "FILE" STORAGE ENGINE


✓ MASSIVE STORAGE ENGINE WITH VARNISH ENTERPRISE
MASSIVE STORAGE ENGINE
✓ VARNISH ENTERPRISE STORAGE ENGINE


✓ MIX BETWEEN MEMORY & DISK STORAGE


✓ CACHE MASSIVE AMOUNTS OF DATA ON DISK


✓ CUSTOM PAGE CACHE MECHANISM


✓ DISK PERSISTENCE


✓ EXTREMELY FAST & EFFICIENT
MASSIVE STORAGE ENGINE
✓ AUTOMATIC MEMORY MANAGEMENT


✓ MULTIPLE STORAGE LOCATIONS (BOOKS & STORES)


✓ VCL INTERFACE THROUGH "VMOD_MSE"


✓ HIGHLY CONFIGURABLE
env: {


id = "mse";


memcache_size = "auto";


books = ( {


id = "book";


directory = "/var/lib/mse/book";


stores = ( {


id = "store1";


filename = "/var/lib/mse/store1.dat";


size = "500G";


tags = ( "small", "ssd" );


},{


id = "store2";


filename = "/var/lib/mse/store2.dat";


size = "10T";


tags = ( "big", "sata" );


} );


} );


};
env: {


id = "mse";


memcache_size = "auto";


books = ( {


id = "book";


directory = "/var/lib/mse/book";


stores = ( {


id = "store1";


filename = "/var/lib/mse/store1.dat";


size = "500G";


tags = ( "small", "ssd" );


},{


id = "store2";


filename = "/var/lib/mse/store2.dat";


size = "10T";


tags = ( "big", "sata" );


} );


} );


};
env: {


id = "mse";


memcache_size = "auto";


books = ( {


id = "book";


directory = "/var/lib/mse/book";


stores = ( {


id = "store1";


filename = "/var/lib/mse/store1.dat";


size = "500G";


tags = ( "small", "ssd" );


},{


id = "store2";


filename = "/var/lib/mse/store2.dat";


size = "10T";


tags = ( "big", "sata" );


} );


} );


};
env: {


id = "mse";


memcache_size = "auto";


books = ( {


id = "book";


directory = "/var/lib/mse/book";


stores = ( {


id = "store1";


filename = "/var/lib/mse/store1.dat";


size = "500G";


tags = ( "small", "ssd" );


},{


id = "store2";


filename = "/var/lib/mse/store2.dat";


size = "10T";


tags = ( "big", "sata" );


} );


} );


};
env: {


id = "mse";


memcache_size = "auto";


books = ( {


id = "book";


directory = "/var/lib/mse/book";


stores = ( {


id = "store1";


filename = "/var/lib/mse/store1.dat";


size = "500G";


tags = ( "small", "ssd" );


},{


id = "store2";


filename = "/var/lib/mse/store2.dat";


size = "10T";


tags = ( "big", "sata" );


} );


} );


};
vcl 4.1;


import mse;


import std;


sub vcl_backend_response {


if (beresp.ttl < 120s) {


mse.set_stores("none");


} else {


if (beresp.http.Transfer-Encoding ~ "chunked" ||


std.integer(beresp.http.Content-Length,0) > std.bytes("100M")) {


mse.set_stores("sata");


} else {


mse.set_stores("ssd");


}


}


}
vcl 4.1;


import mse;


import std;


sub vcl_backend_response {


if (beresp.ttl < 120s) {


mse.set_stores("none");


} else {


if (beresp.http.Transfer-Encoding ~ "chunked" ||


std.integer(beresp.http.Content-Length,0) > std.bytes("100M")) {


mse.set_stores("sata");


} else {


mse.set_stores("ssd");


}


}


}
ORIGIN SHIELD TIER
✓ TRADITIONAL VARNISH USE CASE


✓ PROTECT THE ORIGIN


✓ COULD BE INTEGRATED IN THE STORAGE TIER


✓ CONTAINS THE CACHING RULES


✓ HAS MOST OF THE SECURITY-RELATED FEATURES


✓ STALE-IF-ERROR LOGIC
ORIGIN SHIELD IN A
HYBRID CDN SETUP
"IT'S NOT ABOUT THE CACHE
HITS, IT'S ABOUT HOW GOOD
YOUR MISSES ARE"
OFFICIAL MACHINE IMAGES ON CLOUD MARKETPLACES
HTTPS://FERYN.EU


HTTPS://TWITTER.COM/THIJSFERYN


HTTPS://INSTAGRAM.COM/THIJSFERYN

More Related Content

What's hot

High Availability Content Caching with NGINX
High Availability Content Caching with NGINXHigh Availability Content Caching with NGINX
High Availability Content Caching with NGINXNGINX, Inc.
 
Introduction to Vault
Introduction to VaultIntroduction to Vault
Introduction to VaultKnoldus Inc.
 
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...Amazon Web Services
 
Amazon Relational Database Service (Amazon RDS)
Amazon Relational Database Service (Amazon RDS)Amazon Relational Database Service (Amazon RDS)
Amazon Relational Database Service (Amazon RDS)Amazon Web Services
 
Introduction to ansible
Introduction to ansibleIntroduction to ansible
Introduction to ansibleOmid Vahdaty
 
Connecting Kafka Across Multiple AWS VPCs
Connecting Kafka Across Multiple AWS VPCs Connecting Kafka Across Multiple AWS VPCs
Connecting Kafka Across Multiple AWS VPCs confluent
 
Amazon Virtual Private Cloud (VPC) - Networking Fundamentals and Connectivity...
Amazon Virtual Private Cloud (VPC) - Networking Fundamentals and Connectivity...Amazon Virtual Private Cloud (VPC) - Networking Fundamentals and Connectivity...
Amazon Virtual Private Cloud (VPC) - Networking Fundamentals and Connectivity...Amazon Web Services
 
Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...Claus Ibsen
 
OpenStack Architecture
OpenStack ArchitectureOpenStack Architecture
OpenStack ArchitectureMirantis
 
Kafka Tutorial: Kafka Security
Kafka Tutorial: Kafka SecurityKafka Tutorial: Kafka Security
Kafka Tutorial: Kafka SecurityJean-Paul Azar
 
Containers: The What, Why, and How
Containers: The What, Why, and HowContainers: The What, Why, and How
Containers: The What, Why, and HowSneha Inguva
 
Deep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingDeep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingSreenivas Makam
 
ProxySQL on Kubernetes
ProxySQL on KubernetesProxySQL on Kubernetes
ProxySQL on KubernetesRené Cannaò
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction Robert Reiz
 
Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Chris Aniszczyk
 
Kubernetes a comprehensive overview
Kubernetes   a comprehensive overviewKubernetes   a comprehensive overview
Kubernetes a comprehensive overviewGabriel Carro
 

What's hot (20)

Nginx
NginxNginx
Nginx
 
High Availability Content Caching with NGINX
High Availability Content Caching with NGINXHigh Availability Content Caching with NGINX
High Availability Content Caching with NGINX
 
Introduction to Vault
Introduction to VaultIntroduction to Vault
Introduction to Vault
 
Advanced Terraform
Advanced TerraformAdvanced Terraform
Advanced Terraform
 
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
 
Amazon Relational Database Service (Amazon RDS)
Amazon Relational Database Service (Amazon RDS)Amazon Relational Database Service (Amazon RDS)
Amazon Relational Database Service (Amazon RDS)
 
Introduction to ansible
Introduction to ansibleIntroduction to ansible
Introduction to ansible
 
Connecting Kafka Across Multiple AWS VPCs
Connecting Kafka Across Multiple AWS VPCs Connecting Kafka Across Multiple AWS VPCs
Connecting Kafka Across Multiple AWS VPCs
 
Amazon Virtual Private Cloud (VPC) - Networking Fundamentals and Connectivity...
Amazon Virtual Private Cloud (VPC) - Networking Fundamentals and Connectivity...Amazon Virtual Private Cloud (VPC) - Networking Fundamentals and Connectivity...
Amazon Virtual Private Cloud (VPC) - Networking Fundamentals and Connectivity...
 
Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...
 
OpenStack Architecture
OpenStack ArchitectureOpenStack Architecture
OpenStack Architecture
 
Introduction to Amazon EKS
Introduction to Amazon EKSIntroduction to Amazon EKS
Introduction to Amazon EKS
 
Kafka Tutorial: Kafka Security
Kafka Tutorial: Kafka SecurityKafka Tutorial: Kafka Security
Kafka Tutorial: Kafka Security
 
Containers: The What, Why, and How
Containers: The What, Why, and HowContainers: The What, Why, and How
Containers: The What, Why, and How
 
Deep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingDeep dive into Kubernetes Networking
Deep dive into Kubernetes Networking
 
ProxySQL on Kubernetes
ProxySQL on KubernetesProxySQL on Kubernetes
ProxySQL on Kubernetes
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
 
Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)
 
Ceph issue 해결 사례
Ceph issue 해결 사례Ceph issue 해결 사례
Ceph issue 해결 사례
 
Kubernetes a comprehensive overview
Kubernetes   a comprehensive overviewKubernetes   a comprehensive overview
Kubernetes a comprehensive overview
 

Similar to Build your own CDN with Varnish - Confoo 2022

Cassandra's Sweet Spot - an introduction to Apache Cassandra
Cassandra's Sweet Spot - an introduction to Apache CassandraCassandra's Sweet Spot - an introduction to Apache Cassandra
Cassandra's Sweet Spot - an introduction to Apache CassandraDave Gardner
 
Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?Amazon Web Services
 
How to scale up, out or down in Windows Azure - Webinar
How to scale up, out or down in Windows Azure - WebinarHow to scale up, out or down in Windows Azure - Webinar
How to scale up, out or down in Windows Azure - WebinarCommon Sense
 
GPSTEC319-Build Once Deploy Many Architecting and Building Automated Reusable...
GPSTEC319-Build Once Deploy Many Architecting and Building Automated Reusable...GPSTEC319-Build Once Deploy Many Architecting and Building Automated Reusable...
GPSTEC319-Build Once Deploy Many Architecting and Building Automated Reusable...Amazon Web Services
 
2nd AMIMOTO: WordPress + Amazon Web Services Singapore
2nd AMIMOTO: WordPress + Amazon Web Services Singapore2nd AMIMOTO: WordPress + Amazon Web Services Singapore
2nd AMIMOTO: WordPress + Amazon Web Services SingaporeKel
 
Quick trip around the Cosmos - Things every astronaut supposed to know
Quick trip around the Cosmos - Things every astronaut supposed to knowQuick trip around the Cosmos - Things every astronaut supposed to know
Quick trip around the Cosmos - Things every astronaut supposed to knowRafał Hryniewski
 
Cache Rules Everything Around Me
Cache Rules Everything Around MeCache Rules Everything Around Me
Cache Rules Everything Around MeRussell Heimlich
 
Born in the Cloud, Built like a Startup
Born in the Cloud, Built like a StartupBorn in the Cloud, Built like a Startup
Born in the Cloud, Built like a StartupAmazon Web Services
 
SRV312_Taking Serverless to the Edge
SRV312_Taking Serverless to the EdgeSRV312_Taking Serverless to the Edge
SRV312_Taking Serverless to the EdgeAmazon Web Services
 
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac DawsonCODE BLUE
 
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine YardHow I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine YardSV Ruby on Rails Meetup
 
3. v sphere big data extensions
3. v sphere big data extensions3. v sphere big data extensions
3. v sphere big data extensionsChiou-Nan Chen
 
109. Arquitecturas Escalables con GX
109. Arquitecturas Escalables con GX109. Arquitecturas Escalables con GX
109. Arquitecturas Escalables con GXGeneXus
 
2014 Import.io Data Summit - Including Hadoop/Impala Getting Started Demo
2014 Import.io Data Summit - Including Hadoop/Impala Getting Started Demo2014 Import.io Data Summit - Including Hadoop/Impala Getting Started Demo
2014 Import.io Data Summit - Including Hadoop/Impala Getting Started DemoIan Massingham
 
Become a Serverless Black Belt: Optimizing Your Serverless Applications - SRV...
Become a Serverless Black Belt: Optimizing Your Serverless Applications - SRV...Become a Serverless Black Belt: Optimizing Your Serverless Applications - SRV...
Become a Serverless Black Belt: Optimizing Your Serverless Applications - SRV...Amazon Web Services
 
Zend Con 2008 Slides
Zend Con 2008 SlidesZend Con 2008 Slides
Zend Con 2008 Slidesmkherlakian
 

Similar to Build your own CDN with Varnish - Confoo 2022 (20)

Cassandra's Sweet Spot - an introduction to Apache Cassandra
Cassandra's Sweet Spot - an introduction to Apache CassandraCassandra's Sweet Spot - an introduction to Apache Cassandra
Cassandra's Sweet Spot - an introduction to Apache Cassandra
 
Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?
 
How to scale up, out or down in Windows Azure - Webinar
How to scale up, out or down in Windows Azure - WebinarHow to scale up, out or down in Windows Azure - Webinar
How to scale up, out or down in Windows Azure - Webinar
 
GPSTEC319-Build Once Deploy Many Architecting and Building Automated Reusable...
GPSTEC319-Build Once Deploy Many Architecting and Building Automated Reusable...GPSTEC319-Build Once Deploy Many Architecting and Building Automated Reusable...
GPSTEC319-Build Once Deploy Many Architecting and Building Automated Reusable...
 
Workshop 17: EmberJS parte II
Workshop 17: EmberJS parte IIWorkshop 17: EmberJS parte II
Workshop 17: EmberJS parte II
 
2nd AMIMOTO: WordPress + Amazon Web Services Singapore
2nd AMIMOTO: WordPress + Amazon Web Services Singapore2nd AMIMOTO: WordPress + Amazon Web Services Singapore
2nd AMIMOTO: WordPress + Amazon Web Services Singapore
 
Quick trip around the Cosmos - Things every astronaut supposed to know
Quick trip around the Cosmos - Things every astronaut supposed to knowQuick trip around the Cosmos - Things every astronaut supposed to know
Quick trip around the Cosmos - Things every astronaut supposed to know
 
Cache Rules Everything Around Me
Cache Rules Everything Around MeCache Rules Everything Around Me
Cache Rules Everything Around Me
 
Born in the Cloud, Built like a Startup
Born in the Cloud, Built like a StartupBorn in the Cloud, Built like a Startup
Born in the Cloud, Built like a Startup
 
SRV312_Taking Serverless to the Edge
SRV312_Taking Serverless to the EdgeSRV312_Taking Serverless to the Edge
SRV312_Taking Serverless to the Edge
 
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
[CB16] 80時間でWebを一周:クロムミウムオートメーションによるスケーラブルなフィンガープリント by Isaac Dawson
 
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine YardHow I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
 
3. v sphere big data extensions
3. v sphere big data extensions3. v sphere big data extensions
3. v sphere big data extensions
 
109. Arquitecturas Escalables con GX
109. Arquitecturas Escalables con GX109. Arquitecturas Escalables con GX
109. Arquitecturas Escalables con GX
 
GPSTEC325-Enterprise Storage
GPSTEC325-Enterprise StorageGPSTEC325-Enterprise Storage
GPSTEC325-Enterprise Storage
 
2014 Import.io Data Summit - Including Hadoop/Impala Getting Started Demo
2014 Import.io Data Summit - Including Hadoop/Impala Getting Started Demo2014 Import.io Data Summit - Including Hadoop/Impala Getting Started Demo
2014 Import.io Data Summit - Including Hadoop/Impala Getting Started Demo
 
Become a Serverless Black Belt: Optimizing Your Serverless Applications - SRV...
Become a Serverless Black Belt: Optimizing Your Serverless Applications - SRV...Become a Serverless Black Belt: Optimizing Your Serverless Applications - SRV...
Become a Serverless Black Belt: Optimizing Your Serverless Applications - SRV...
 
MongoDB 3.4 webinar
MongoDB 3.4 webinarMongoDB 3.4 webinar
MongoDB 3.4 webinar
 
Zend Con 2008 Slides
Zend Con 2008 SlidesZend Con 2008 Slides
Zend Con 2008 Slides
 
Loading Data into Redshift
Loading Data into RedshiftLoading Data into Redshift
Loading Data into Redshift
 

More from Thijs Feryn

10 things that helped me advance my career - PHP UK Conference 2024
10 things that helped me advance my career - PHP UK Conference 202410 things that helped me advance my career - PHP UK Conference 2024
10 things that helped me advance my career - PHP UK Conference 2024Thijs Feryn
 
Distributed load testing with K6 - NDC London 2024
Distributed load testing with K6 - NDC London 2024Distributed load testing with K6 - NDC London 2024
Distributed load testing with K6 - NDC London 2024Thijs Feryn
 
HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023Thijs Feryn
 
Living on the edge - EBU Horizons 2023
Living on the edge - EBU Horizons 2023Living on the edge - EBU Horizons 2023
Living on the edge - EBU Horizons 2023Thijs Feryn
 
Distributed Load Testing with k6 - DevOps Barcelona
Distributed Load Testing with k6 - DevOps BarcelonaDistributed Load Testing with k6 - DevOps Barcelona
Distributed Load Testing with k6 - DevOps BarcelonaThijs Feryn
 
Core web vitals meten om je site sneller te maken - Combell Partner Day 2023
Core web vitals meten om je site sneller te maken - Combell Partner Day 2023Core web vitals meten om je site sneller te maken - Combell Partner Day 2023
Core web vitals meten om je site sneller te maken - Combell Partner Day 2023Thijs Feryn
 
HTTP headers that make your website go faster
HTTP headers that make your website go fasterHTTP headers that make your website go faster
HTTP headers that make your website go fasterThijs Feryn
 
HTTP headers that will make your website go faster
HTTP headers that will make your website go fasterHTTP headers that will make your website go faster
HTTP headers that will make your website go fasterThijs Feryn
 
Distributed load testing with k6
Distributed load testing with k6Distributed load testing with k6
Distributed load testing with k6Thijs Feryn
 
HTTP logging met Varnishlog - PHPWVL 2022
HTTP logging met Varnishlog - PHPWVL 2022HTTP logging met Varnishlog - PHPWVL 2022
HTTP logging met Varnishlog - PHPWVL 2022Thijs Feryn
 
Taking Laravel to the edge with HTTP caching and Varnish
Taking Laravel to the edge with HTTP caching and VarnishTaking Laravel to the edge with HTTP caching and Varnish
Taking Laravel to the edge with HTTP caching and VarnishThijs Feryn
 
Caching the uncacheable with Varnish - DevDays 2021
Caching the uncacheable with Varnish - DevDays 2021Caching the uncacheable with Varnish - DevDays 2021
Caching the uncacheable with Varnish - DevDays 2021Thijs Feryn
 
Developing cacheable backend applications - Appdevcon 2019
Developing cacheable backend applications - Appdevcon 2019Developing cacheable backend applications - Appdevcon 2019
Developing cacheable backend applications - Appdevcon 2019Thijs Feryn
 
How Cloud addresses the needs of todays internet - Korazon 2018
How Cloud addresses the needs of todays internet - Korazon 2018How Cloud addresses the needs of todays internet - Korazon 2018
How Cloud addresses the needs of todays internet - Korazon 2018Thijs Feryn
 
Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Thijs Feryn
 
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Thijs Feryn
 
Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Thijs Feryn
 

More from Thijs Feryn (17)

10 things that helped me advance my career - PHP UK Conference 2024
10 things that helped me advance my career - PHP UK Conference 202410 things that helped me advance my career - PHP UK Conference 2024
10 things that helped me advance my career - PHP UK Conference 2024
 
Distributed load testing with K6 - NDC London 2024
Distributed load testing with K6 - NDC London 2024Distributed load testing with K6 - NDC London 2024
Distributed load testing with K6 - NDC London 2024
 
HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023
 
Living on the edge - EBU Horizons 2023
Living on the edge - EBU Horizons 2023Living on the edge - EBU Horizons 2023
Living on the edge - EBU Horizons 2023
 
Distributed Load Testing with k6 - DevOps Barcelona
Distributed Load Testing with k6 - DevOps BarcelonaDistributed Load Testing with k6 - DevOps Barcelona
Distributed Load Testing with k6 - DevOps Barcelona
 
Core web vitals meten om je site sneller te maken - Combell Partner Day 2023
Core web vitals meten om je site sneller te maken - Combell Partner Day 2023Core web vitals meten om je site sneller te maken - Combell Partner Day 2023
Core web vitals meten om je site sneller te maken - Combell Partner Day 2023
 
HTTP headers that make your website go faster
HTTP headers that make your website go fasterHTTP headers that make your website go faster
HTTP headers that make your website go faster
 
HTTP headers that will make your website go faster
HTTP headers that will make your website go fasterHTTP headers that will make your website go faster
HTTP headers that will make your website go faster
 
Distributed load testing with k6
Distributed load testing with k6Distributed load testing with k6
Distributed load testing with k6
 
HTTP logging met Varnishlog - PHPWVL 2022
HTTP logging met Varnishlog - PHPWVL 2022HTTP logging met Varnishlog - PHPWVL 2022
HTTP logging met Varnishlog - PHPWVL 2022
 
Taking Laravel to the edge with HTTP caching and Varnish
Taking Laravel to the edge with HTTP caching and VarnishTaking Laravel to the edge with HTTP caching and Varnish
Taking Laravel to the edge with HTTP caching and Varnish
 
Caching the uncacheable with Varnish - DevDays 2021
Caching the uncacheable with Varnish - DevDays 2021Caching the uncacheable with Varnish - DevDays 2021
Caching the uncacheable with Varnish - DevDays 2021
 
Developing cacheable backend applications - Appdevcon 2019
Developing cacheable backend applications - Appdevcon 2019Developing cacheable backend applications - Appdevcon 2019
Developing cacheable backend applications - Appdevcon 2019
 
How Cloud addresses the needs of todays internet - Korazon 2018
How Cloud addresses the needs of todays internet - Korazon 2018How Cloud addresses the needs of todays internet - Korazon 2018
How Cloud addresses the needs of todays internet - Korazon 2018
 
Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018
 
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
 
Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018
 

Recently uploaded

The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Patrick Viafore
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...FIDO Alliance
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...FIDO Alliance
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty SecureFemke de Vroome
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfFIDO Alliance
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsLeah Henrickson
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsStefano
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandIES VE
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireExakis Nelite
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfFIDO Alliance
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...FIDO Alliance
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024Lorenzo Miniero
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfFIDO Alliance
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfUK Journal
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfFIDO Alliance
 
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptxBT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptxNeo4j
 

Recently uploaded (20)

The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptxBT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
 

Build your own CDN with Varnish - Confoo 2022

  • 3. WEB PERFORMANCE IS AN ESSENTIAL PART OF THE USER EXPERIENCE
  • 5.
  • 6.
  • 7.
  • 12. AFTER A WHILE YOU HIT THE LIMITS
  • 13. CACHE
  • 16.
  • 17.
  • 18. 9,000,000 WEBSITES 21% OF THE TOP 10K WEBSITES
  • 20.
  • 21.
  • 23. FAST
  • 26. MORE THAN JUST WEB PAGES
  • 27.
  • 28. REDUCE TIME TO GENERATE THE RESPONSE
  • 29. REDUCE THE SIZE OF THE RESPONSE
  • 30. REDUCE THE DISTANCE BETWEEN CLIENT & SERVER
  • 35.
  • 36.
  • 37.
  • 40. WHY IS VARNISH SO POWERFUL?
  • 41. WHY IS VARNISH SO POWERFUL? ✓ EXTREMELY LOW RESOURCE CONSUMPTION ✓ EXTREMELY STABLE ✓ NO DISK ACCESS AT RUNTIME ✓ 500 GBPS PER SERVER* ✓ CONTENT STREAMING ✓ REAL-TIME CONTENT INVALIDATION ✓ REQUEST COALESCING ✓ VARNISH CONFIGURATION LANGUAGE ✓ VARNISH MODULES (VMODS) ✓ COMPLIES TO HTTP BEST PRACTICES
  • 43. CONTROLLING THE CACHE WITH HTTP Expires: Wed, 26 Feb 2020 23:30:00 GMT Cache-control: public, max-age=3600, s-maxage=86400 Cache-control: private, no-cache, no-store Vary: Accept-Language
  • 46. CONDITIONAL REVALIDATION GET / HTTP/1.1 Host: example.com HTTP/1.1 200 OK Cache-control: max-age=3600 Etag: 87719aa72fb32c718001e747c75a93fd Hello world
  • 47. CONDITIONAL REVALIDATION GET / HTTP/1.1 Host: example.com If-None-Match: 87719aa72fb32c718001e747c75a93fd HTTP/1.1 304 Not Modified Cache-control: max-age=3600 Etag: 87719aa72fb32c718001e747c75a93fd
  • 49. VARNISH CONFIGURATION LANGUAGE ✓ DOMAIN-SPECIFIC LANGUAGE (DSL) ✓ CURLY BRACES (LIKE C, JAVA, ...) ✓ EXTENDS STANDARD BEHAVIOR ✓ PRE-DEFINED SUBROUTINES ✓ REFLECTS FINITE STATE MACHINE ✓ TRANSLATED INTO C-CODE WHEN VARNISH STARTS
  • 50. VCL CAPABILITIES ✓ REQUEST HANDLING ✓ REQUEST ROUTING ✓ RESPONSE MANIPULATION ✓ BACKEND SELECTION ✓ CONTROLLING THE CACHE ✓ DECISION-MAKING "ON THE EDGE"
  • 51.
  • 52. vcl 4.1; backend default { .host = "backend.example.com"; .port = "80"; } sub vcl_recv { if(req.url ~ "^/admin(/.*)?") { return(pass); } }
  • 53. WE'VE JUST LOWERED THE TIME TO FIRST BYTE
  • 58. USER VARNISH SERVER SOMEWHERE CONNECTED TO THE INTERNET
  • 59. REDUCE THE SIZE OVER THE WIRE
  • 61. COMPRESSION ✓ GZIP COMPRESSION FOR TEXT-BASED CONTENT ✓ OPTIONAL BROTLI COMPRESSION (VARNISH ENTERPRISE) ✓ REDUCE THE SIZE OF THE IMAGES (VARNISH ENTERPRISE)
  • 62. vcl 4.1; backend default { .host = "backend.example.com"; .port = "80"; } sub vcl_backend_response { if(beresp.http.Content-Type ~ "^(text|application)/" || beresp.http.Content-Type == "image/svg+xml") { set beresp.do_gzip = true; } }
  • 63. vcl 4.1; import brotli; backend default { .host = "backend.example.com"; .port = "80"; } sub vcl_init { brotli.init(BOTH, transcode = true); } sub vcl_backend_response { if(beresp.http.Content-Type ~ "^(text|application)/" || beresp.http.Content-Type == "image/svg+xml") { brotli.compress(); } }
  • 64. vcl 4.1; import image; import headerplus; backend default { .host = "backend.example.com"; .port = "80"; } sub vcl_backend_response { headerplus.init(beresp); if (beresp.http.content-type ~ "^image/(jpeg|png)$") { if (bereq.http.Accept ~ "image/webp") { image.webp(); } headerplus.attr_set("Vary", "Accept"); } headerplus.write(); }
  • 65. REDUCE THE DISTANCE BETWEEN CLIENT & SERVER
  • 67. NETWORK LIMITATIONS ✓ NETWORK LATENCY BECAUSE OF DISTANCE ✓ REDUCED THROUGHPUT BECAUSE OF NETWORK SATURATION
  • 68. USER VARNISH SERVER ONE VARNISH SERVER IS NO LONGER ENOUGH
  • 70. WHY NOT USE A CDN PRODUCT?
  • 71. VARNISH IS CDN SOFTWARE!
  • 72. VARNISH AS A PRIVATE CDN ✓ SERVERS & RESOURCES AREN'T SHARED ✓ MORE CONTROL OVER CONTENT DELIVERY FLOW ✓ FOR SELECTED LOCALIZED POPS ✓ IF YOU ALREADY HAVE THE INFRASTRUCTURE ✓ REDUCE COST ✓ HYBRID: INCREASE COVERAGE LOCATIONS OF YOUR CDN ✓ HYBRID: PROTECT YOUR ORIGIN FROM CDN REVALIDATION
  • 74. WHY VARNISH? ✓ PERFORMANCE & THROUGHPUT ✓ REQUEST COALESCING ✓ BACKEND REQUEST ROUTING ✓ HORIZONTAL SCALABILITY ✓ CONTROL ✓ TRANSPARENCY
  • 75.
  • 76.
  • 77. REQUEST ROUTER ✓ ENTRYPOINT ✓ LOCATES "BEST" POINT OF PRESENCE ✓ NO SINGLE POINT OF FAILURE ✓ DISTRIBUTED ✓ OFTEN DNS-BASED WITH GEOLOCATION CAPABILITIES
  • 78.
  • 79.
  • 80.
  • 82. domains: - domain: example.com - ttl: 300 - records: example.com: - soa: ns1.example.com hostmaster.example.com 2014090125 7200 3600 1209600 3600 - ns: ns1.example.com - a: 192.168.0.1 eu.www.example.com: - a: 192.0.0.2 na.www.example.com: - a: 192.0.0.3 as.www.example.com: - a: 192.0.0.4 af.www.example.com: - a: 192.0.0.5 sa.www.example.com: - a: 192.0.0.6 - services: www.example.com: ['%cn.www.example.com', 'eu.www.example.com']% ZONE FILE
  • 83. domains: - domain: example.com - ttl: 300 - records: example.com: - soa: ns1.example.com hostmaster.example.com 2014090125 7200 3600 1209600 3600 - ns: ns1.example.com - a: 192.168.0.1 eu.www.example.com: - a: 192.0.0.2 na.www.example.com: - a: 192.0.0.3 as.www.example.com: - a: 192.0.0.4 af.www.example.com: - a: 192.0.0.5 sa.www.example.com: - a: 192.0.0.6 - services: www.example.com: ['%cn.www.example.com', 'eu.www.example.com']%
  • 84. %%: literal   % %co: With legacy GeoIP database: three letter country name, MMDB & others: ISO3166 country code %cc: ISO3166 country code. %cn: ISO3166 continent code. %af: v4 or v6. %re: Region code %na: AS organization name (spaces are converted to _) %as: AS number %ci: City name %loc: LOC record style expansion of location %lat: Decimal degree latitude %lon: Decimal degree longitude
  • 85.
  • 86.
  • 87. EDGE TIER ✓ DIRECT INTERFACE WITH CLIENTS ✓ HANDLE TLS ✓ AUTHENTICATION, RATE LIMITING, THROTTLING ✓ STORES "HOT" DATA IN MEMORY ✓ CONNECTS TO THE STORAGE TIER VIA SHARDING
  • 88. SHARDING ✓ MAKE REQUESTS GO TO THE SAME BACKEND NODE ✓ USES CONSISTENT HASHING ✓ URL AS THE HASHING KEY ✓ SCALE STORAGE HORIZONTALLY
  • 89. vcl 4.1; import directors; backend storage1 { .host = "storage1.example.com"; .port = "80"; } backend storage2 { .host = "storage2.example.com"; .port = "80"; } backend storage3 { .host = "storage3.example.com"; .port = "80"; } sub vcl_init { new storage_tier = directors.shard(); storage_tier.add_backend(storage1, rampup=5m); storage_tier.add_backend(storage2, rampup=5m); storage_tier.add_backend(storage3, rampup=5m); storage_tier.reconfigure(); } sub vcl_recv { set req.backend_hint = storage_tier.backend(URL); } SHARDING
  • 90. vcl 4.1; import directors; backend storage1 { .host = "storage1.example.com"; .port = "80"; } backend storage2 { .host = "storage2.example.com"; .port = "80"; } backend storage3 { .host = "storage3.example.com"; .port = "80"; } sub vcl_init { new storage_tier = directors.shard(); storage_tier.add_backend(storage1, rampup=5m); storage_tier.add_backend(storage2, rampup=5m); storage_tier.add_backend(storage3, rampup=5m); storage_tier.reconfigure(); } sub vcl_recv { set req.backend_hint = storage_tier.backend(URL); }
  • 91. STORAGE TIER ✓ STORE AS MUCH CONTENT AS POSSIBLE ✓ SERVE AS SECONDARY ORIGIN ✓ LONGER TTLS ✓ STORE OBJECT IN MEMORY WITH VARNISH CACHE ✓ DON'T USE THE "FILE" STORAGE ENGINE ✓ MASSIVE STORAGE ENGINE WITH VARNISH ENTERPRISE
  • 92. MASSIVE STORAGE ENGINE ✓ VARNISH ENTERPRISE STORAGE ENGINE ✓ MIX BETWEEN MEMORY & DISK STORAGE ✓ CACHE MASSIVE AMOUNTS OF DATA ON DISK ✓ CUSTOM PAGE CACHE MECHANISM ✓ DISK PERSISTENCE ✓ EXTREMELY FAST & EFFICIENT
  • 93. MASSIVE STORAGE ENGINE ✓ AUTOMATIC MEMORY MANAGEMENT ✓ MULTIPLE STORAGE LOCATIONS (BOOKS & STORES) ✓ VCL INTERFACE THROUGH "VMOD_MSE" ✓ HIGHLY CONFIGURABLE
  • 94. env: { id = "mse"; memcache_size = "auto"; books = ( { id = "book"; directory = "/var/lib/mse/book"; stores = ( { id = "store1"; filename = "/var/lib/mse/store1.dat"; size = "500G"; tags = ( "small", "ssd" ); },{ id = "store2"; filename = "/var/lib/mse/store2.dat"; size = "10T"; tags = ( "big", "sata" ); } ); } ); };
  • 95. env: { id = "mse"; memcache_size = "auto"; books = ( { id = "book"; directory = "/var/lib/mse/book"; stores = ( { id = "store1"; filename = "/var/lib/mse/store1.dat"; size = "500G"; tags = ( "small", "ssd" ); },{ id = "store2"; filename = "/var/lib/mse/store2.dat"; size = "10T"; tags = ( "big", "sata" ); } ); } ); };
  • 96. env: { id = "mse"; memcache_size = "auto"; books = ( { id = "book"; directory = "/var/lib/mse/book"; stores = ( { id = "store1"; filename = "/var/lib/mse/store1.dat"; size = "500G"; tags = ( "small", "ssd" ); },{ id = "store2"; filename = "/var/lib/mse/store2.dat"; size = "10T"; tags = ( "big", "sata" ); } ); } ); };
  • 97. env: { id = "mse"; memcache_size = "auto"; books = ( { id = "book"; directory = "/var/lib/mse/book"; stores = ( { id = "store1"; filename = "/var/lib/mse/store1.dat"; size = "500G"; tags = ( "small", "ssd" ); },{ id = "store2"; filename = "/var/lib/mse/store2.dat"; size = "10T"; tags = ( "big", "sata" ); } ); } ); };
  • 98. env: { id = "mse"; memcache_size = "auto"; books = ( { id = "book"; directory = "/var/lib/mse/book"; stores = ( { id = "store1"; filename = "/var/lib/mse/store1.dat"; size = "500G"; tags = ( "small", "ssd" ); },{ id = "store2"; filename = "/var/lib/mse/store2.dat"; size = "10T"; tags = ( "big", "sata" ); } ); } ); };
  • 99. vcl 4.1; import mse; import std; sub vcl_backend_response { if (beresp.ttl < 120s) { mse.set_stores("none"); } else { if (beresp.http.Transfer-Encoding ~ "chunked" || std.integer(beresp.http.Content-Length,0) > std.bytes("100M")) { mse.set_stores("sata"); } else { mse.set_stores("ssd"); } } }
  • 100. vcl 4.1; import mse; import std; sub vcl_backend_response { if (beresp.ttl < 120s) { mse.set_stores("none"); } else { if (beresp.http.Transfer-Encoding ~ "chunked" || std.integer(beresp.http.Content-Length,0) > std.bytes("100M")) { mse.set_stores("sata"); } else { mse.set_stores("ssd"); } } }
  • 101.
  • 102. ORIGIN SHIELD TIER ✓ TRADITIONAL VARNISH USE CASE ✓ PROTECT THE ORIGIN ✓ COULD BE INTEGRATED IN THE STORAGE TIER ✓ CONTAINS THE CACHING RULES ✓ HAS MOST OF THE SECURITY-RELATED FEATURES ✓ STALE-IF-ERROR LOGIC
  • 103. ORIGIN SHIELD IN A HYBRID CDN SETUP
  • 104. "IT'S NOT ABOUT THE CACHE HITS, IT'S ABOUT HOW GOOD YOUR MISSES ARE"
  • 105. OFFICIAL MACHINE IMAGES ON CLOUD MARKETPLACES
  • 106.