SlideShare uma empresa Scribd logo
1 de 107
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

Pure Storage Company presentation - Ruben Wu
Pure Storage Company presentation - Ruben WuPure Storage Company presentation - Ruben Wu
Pure Storage Company presentation - Ruben WuRuben Wu
 
BPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLabBPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLabTaeung Song
 
Insights on the Configuration and Performances of SOME/IP Service Discovery
Insights on the Configuration and Performances of SOME/IP Service DiscoveryInsights on the Configuration and Performances of SOME/IP Service Discovery
Insights on the Configuration and Performances of SOME/IP Service DiscoveryRealTime-at-Work (RTaW)
 
Nginx internals
Nginx internalsNginx internals
Nginx internalsliqiang xu
 
NGINX High-performance Caching
NGINX High-performance CachingNGINX High-performance Caching
NGINX High-performance CachingNGINX, Inc.
 
OpenSSL + Intel (r) Quick Assist Technology Engine Setup Instructions
OpenSSL + Intel (r) Quick Assist Technology Engine Setup InstructionsOpenSSL + Intel (r) Quick Assist Technology Engine Setup Instructions
OpenSSL + Intel (r) Quick Assist Technology Engine Setup InstructionsMichelle Holley
 
DMVPN configuration - Configuring Cisco dynamic Multipoint VPN - HUB, SPOKES,...
DMVPN configuration - Configuring Cisco dynamic Multipoint VPN - HUB, SPOKES,...DMVPN configuration - Configuring Cisco dynamic Multipoint VPN - HUB, SPOKES,...
DMVPN configuration - Configuring Cisco dynamic Multipoint VPN - HUB, SPOKES,...NetProtocol Xpert
 
Cantata++
Cantata++Cantata++
Cantata++home
 
Linux Systems Performance 2016
Linux Systems Performance 2016Linux Systems Performance 2016
Linux Systems Performance 2016Brendan Gregg
 
Squid, SquidGuard, and Lightsquid - pfSense Hangout March 2014
Squid, SquidGuard, and Lightsquid - pfSense Hangout March 2014Squid, SquidGuard, and Lightsquid - pfSense Hangout March 2014
Squid, SquidGuard, and Lightsquid - pfSense Hangout March 2014Netgate
 
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...Ovadiah Myrgorod
 
Tomcat 마이그레이션 도전하기 (Jins Choi)
Tomcat 마이그레이션 도전하기 (Jins Choi)Tomcat 마이그레이션 도전하기 (Jins Choi)
Tomcat 마이그레이션 도전하기 (Jins Choi)삵 (sarc.io)
 
Differences of the Cisco Operating Systems
Differences of the Cisco Operating SystemsDifferences of the Cisco Operating Systems
Differences of the Cisco Operating Systems美兰 曾
 
Storage comparison: Dell PowerMax 8500 vs. Pure Storage FlashArray//XL170
Storage comparison: Dell PowerMax 8500 vs. Pure Storage FlashArray//XL170Storage comparison: Dell PowerMax 8500 vs. Pure Storage FlashArray//XL170
Storage comparison: Dell PowerMax 8500 vs. Pure Storage FlashArray//XL170Principled Technologies
 
Enable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zunEnable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zunheut2008
 
3 palo alto ngfw architecture overview
3 palo alto ngfw architecture overview3 palo alto ngfw architecture overview
3 palo alto ngfw architecture overviewMostafa El Lathy
 
Chassis Cluster Configuration
Chassis Cluster ConfigurationChassis Cluster Configuration
Chassis Cluster ConfigurationKashif Latif
 

Mais procurados (20)

Pure Storage Company presentation - Ruben Wu
Pure Storage Company presentation - Ruben WuPure Storage Company presentation - Ruben Wu
Pure Storage Company presentation - Ruben Wu
 
BPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLabBPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLab
 
Insights on the Configuration and Performances of SOME/IP Service Discovery
Insights on the Configuration and Performances of SOME/IP Service DiscoveryInsights on the Configuration and Performances of SOME/IP Service Discovery
Insights on the Configuration and Performances of SOME/IP Service Discovery
 
Nginx internals
Nginx internalsNginx internals
Nginx internals
 
Ipref
IprefIpref
Ipref
 
ACI DHCP Config Guide
ACI DHCP Config GuideACI DHCP Config Guide
ACI DHCP Config Guide
 
NGINX High-performance Caching
NGINX High-performance CachingNGINX High-performance Caching
NGINX High-performance Caching
 
OpenSSL + Intel (r) Quick Assist Technology Engine Setup Instructions
OpenSSL + Intel (r) Quick Assist Technology Engine Setup InstructionsOpenSSL + Intel (r) Quick Assist Technology Engine Setup Instructions
OpenSSL + Intel (r) Quick Assist Technology Engine Setup Instructions
 
DMVPN configuration - Configuring Cisco dynamic Multipoint VPN - HUB, SPOKES,...
DMVPN configuration - Configuring Cisco dynamic Multipoint VPN - HUB, SPOKES,...DMVPN configuration - Configuring Cisco dynamic Multipoint VPN - HUB, SPOKES,...
DMVPN configuration - Configuring Cisco dynamic Multipoint VPN - HUB, SPOKES,...
 
Cantata++
Cantata++Cantata++
Cantata++
 
Linux Systems Performance 2016
Linux Systems Performance 2016Linux Systems Performance 2016
Linux Systems Performance 2016
 
Squid, SquidGuard, and Lightsquid - pfSense Hangout March 2014
Squid, SquidGuard, and Lightsquid - pfSense Hangout March 2014Squid, SquidGuard, and Lightsquid - pfSense Hangout March 2014
Squid, SquidGuard, and Lightsquid - pfSense Hangout March 2014
 
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...
 
Tomcat 마이그레이션 도전하기 (Jins Choi)
Tomcat 마이그레이션 도전하기 (Jins Choi)Tomcat 마이그레이션 도전하기 (Jins Choi)
Tomcat 마이그레이션 도전하기 (Jins Choi)
 
Differences of the Cisco Operating Systems
Differences of the Cisco Operating SystemsDifferences of the Cisco Operating Systems
Differences of the Cisco Operating Systems
 
Storage comparison: Dell PowerMax 8500 vs. Pure Storage FlashArray//XL170
Storage comparison: Dell PowerMax 8500 vs. Pure Storage FlashArray//XL170Storage comparison: Dell PowerMax 8500 vs. Pure Storage FlashArray//XL170
Storage comparison: Dell PowerMax 8500 vs. Pure Storage FlashArray//XL170
 
Enable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zunEnable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zun
 
3 palo alto ngfw architecture overview
3 palo alto ngfw architecture overview3 palo alto ngfw architecture overview
3 palo alto ngfw architecture overview
 
Chassis Cluster Configuration
Chassis Cluster ConfigurationChassis Cluster Configuration
Chassis Cluster Configuration
 
Bgp
BgpBgp
Bgp
 

Semelhante a 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
 

Semelhante a 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
 

Mais de 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
 

Mais de 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
 

Último

Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 

Último (20)

Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 

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.