Upload
felipe-klerk-signorini
View
93
Download
0
Embed Size (px)
Citation preview
Vamos falar sobre Cache
Felipe Klerk Signorini
DevOps - ativo.com
● Arquiteto de software● Infra estrutura● Desenvolvimento.
Nossa conversa➔ Por onde começar
➔ Estratégias
➔ Aonde tomar cuidado
"O problema é cache, sempre o cache"
➔ Quais são os tipos de cache
Memória, io, no backend no frontend.
➔ Exemplos
1.Por onde começar?
Possuímos vários tipos de cache em várias fases, nas várias requisições.Podemos dividir em dois grandes grupos, back e front.
Processo web
BrowserUsuário
Domain Server
Register DNS Server
Server
Processo web
BrowserUsuário
Domain Server
Register DNS Server
Server
Processo web
BrowserUsuário
Server
Processo web
BrowserUsuário
Server nginx
php-fpm
mysql
Processo web
Usuário
ServerUsuário
Usuário
UsuárioUsuário
UsuárioUsuário
Usuário
Processo web
Server20Usuário
Cache éGuardar algo temporariamente para uso posterior.
Processo web
BrowserUsuário
Server nginx
php-fpm
mysql
Processo web
Browser
Usuário Server nginx
php-fpm
mysql
Cache
2.Estratégias e lições aprendidas
There are two hard things in computer science: cache invalidation and naming things.-- Phil Karlton
Cache invalidation
Usuário
Server
Process
Cache
UsuárioUsuário
Server
Process
Cache
UsuárioUsuário
Admin
Inclui um novo artigoPorém o conteúdo não aparece
Cache invalidation
Cache invalidation - distributed system
Usuário
Server
Process Process
Cache
Server
Usuário Usuário UsuárioUsuário
Process
Server
Cache
V1
V2
Cache invalidation - Mobile/Desktop
Desktop
Server
Process
Cache
Mobile
Versão desktop para mobile
Cache invalidation - Mobile/Desktop
Desktop
Server
Process
Cache
Mobile
Versão desktop para mobile
Invalidação:
Deploys
Após fazer um deploy, rodar um script que inválida alguns tipos de cache.
Por tempo
Estabeleça tempos de invalidação, quase todas as informações não precisam ser em real time
Por triggers
Por gatilhos, tais como um novo post, uma nova atualização de preços e afins
Para as invalidações
➔ Crie serviços para gerenciar o cache (cache manager), centralizando o controle de cache, facilitando o processo de invalidação.
➔ Estabeleça regras claras e concisas de criação e invalidação de cada cache.
➔ Tenha o dobro de cuidado quando estiver trabalhando com cache em sistema distribuídos.
➔ Começe o mais rápido
Instale o w3 total cache e tenha o site 300% mais rápido.
Será mesmo??
Cache
➔ Aumenta consideravelmente a velocidade de carregamento do site, principalmente de sites de conteúdo, muito utilizados com wordpress ou drupal.
➔ Diminui consideravelmente o consumo de recursos de servidor, evitando processos repetitivos.
➔ Atenção ao tipo de cache utilizado, cache em arquivos tendem a ficar obsoleto.
➔ Começe o mais rápido possível...
Saiba o que realmente está fazendo….
WP - SuperCache
WP - w3 totalcache
WP - wordfence
CloudFlare
CloudFlare
IO cache
Cache invalidation challenge
Akamai
Reverse Cache
APP Cache
Object Cache
Browser cache
E como seria em um sistema distribuído
Tipos de cache BackEnd● Cache em memória
○ Memcache○ Redis
● Em disco○ Files (SSD plz)○ Servidores NFS
Cache - Em disco
HDD SSDVS
Em disco
➔ Realmente tem efetividade para grandes processamentos.
➔ IO é um processo lento e bem custoso
➔ O cache fica na máquina, o que pode trazer problemas para sistemas distribuídos
➔ SSD sempre...
Cache - Memória
Cache de memória
➔ Bem mais rápido comparado ao IO
➔ Perfeito para sistemas distribuídos
➔ Facilmente escalável
➔ Recursos melhores (memcache: objetos e possibilidade de utilizar tags)
3.Cache, cache e cache
BackEndProcessos guardados e reutilizados em servidores.
HTTP
Cache - App - Page
Routes Controller
DataBase
View
MIddleware
HTTP
Cache - App - Page
Routes Controller
DataBase
View
MIddleware
Cache
Cache - Object
Class Friends Call Model
Controller
MySQL ForEach Filter
$my_friends
Cache - Object
Class Friends Call Model
Controller
MySQL ForEach Filter
$my_friends
Cache
View Object
Cache - View
Render
Controller
View Object Render
View Object Render
View Object
Cache - View
Render
Controller
View Object Render
View Object Render
Cache
Model
Cache - Models
Database
Controller
Model Database
Model
Cache - Models
Database
Controller
Model Database
Cache
get_file_contents
Cache - Request
HTTP
Controller
get_file_contents HTTP
Controller
get_file_contents
Cache - Request
HTTP
Controller
get_file_contents HTTP
Controller
Cache
Cache - Reverse Proxy
HTTP Servers Applications DataBase
Cache - Reverse Proxy
HTTP Servers Applications DataBase
Proxy
Cache
Cache - Proxy reverso
Cache - CDNs
HTTP Servers
Statics files
Cache - CDNs
HTTP Servers
Statics files
CD
N
Cache - CDNs
FrontEndProcessos guardados e reutilizados em cada usuário.
Cache - HTTP Caching
Browser
/page
Cache
200 okContent-Length: 1024Cache-Control: max-age=120ETag: "x34234242"
Servers
/style.css
/script.js
/proto.jpg
Cache-Control: no-cache
Cache-Control: max-age:347242
Cache-Control: max-age:347242
Cache-Control: max-age:347242
Cache - HTTP Caching
Browser
/page
Cache
200 okContent-Length: 1024Cache-Control: max-age=120ETag: "x34234242"
Servers
/style.css
/script.js
/proto.jpg
Cache-Control: no-cache
Cache-Control: max-age:347242
Cache-Control: max-age:347242
Cache-Control: max-age:347242
Cache
Cache - HTTP Caching
Cache - Local Storage
jquery request
Server
AjaxforEach Process
Cache - Local Storage
jquery request
Server
AjaxforEach Process
Cache
Local StorageMini Banco de dados de chave e valor.
● Até 5mb de dados
Cache - Manifest
jquery
forEach Process
Offline Cache
Manifest cachePossibilidade de guardar arquivos e informações para uso offline.- Navegação off-line: os usuários podem navegar por todo o site
quando estão off-line- Velocidade: os recursos armazenados em cache são locais e,
portanto, são carregados mais rapidamente.- Redução da carga do servidor: o navegador fará download do
servidor apenas dos recursos que forem alterados.-
Manifest
➔ Planeje bem o processo de invalidação, para qualquer tipo de alteração, este deverá ser replicado no arquivo de manifesto.
➔ Criado principalmente para oferecer uma navegação offline.
➔ Entre 5 a 10mb de espaço (depende do browser).
4.Concluíndo
Entenda como cada estilo de cache funciona, entenda como funciona sua arquitetura.
Atenção redobrada para o cache em sistemas distribuídos.
Aconselha-se a implementar o cache depois que lançar o produto.
linkedin.com/in/felipe-klerk-signorini
facebook.com/felipesignorini