94
Vamos falar sobre Cache

Vamos conversar sobre cache

Embed Size (px)

Citation preview

Page 1: Vamos conversar sobre cache

Vamos falar sobre Cache

Page 2: Vamos conversar sobre cache

Felipe Klerk Signorini

DevOps - ativo.com

● Arquiteto de software● Infra estrutura● Desenvolvimento.

Page 3: Vamos conversar sobre cache

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

Page 4: Vamos conversar sobre cache

1.Por onde começar?

Page 5: Vamos conversar sobre cache
Page 6: Vamos conversar sobre cache
Page 7: Vamos conversar sobre cache
Page 8: Vamos conversar sobre cache
Page 9: Vamos conversar sobre cache
Page 10: Vamos conversar sobre cache

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.

Page 11: Vamos conversar sobre cache

Processo web

BrowserUsuário

Domain Server

Register DNS Server

Server

Page 12: Vamos conversar sobre cache

Processo web

BrowserUsuário

Domain Server

Register DNS Server

Server

Page 13: Vamos conversar sobre cache

Processo web

BrowserUsuário

Server

Page 14: Vamos conversar sobre cache
Page 15: Vamos conversar sobre cache

Processo web

BrowserUsuário

Server nginx

php-fpm

mysql

Page 16: Vamos conversar sobre cache

Processo web

Usuário

ServerUsuário

Usuário

UsuárioUsuário

UsuárioUsuário

Usuário

Page 17: Vamos conversar sobre cache

Processo web

Server20Usuário

Page 18: Vamos conversar sobre cache

Cache éGuardar algo temporariamente para uso posterior.

Page 19: Vamos conversar sobre cache

Processo web

BrowserUsuário

Server nginx

php-fpm

mysql

Page 20: Vamos conversar sobre cache

Processo web

Browser

Usuário Server nginx

php-fpm

mysql

Cache

Page 21: Vamos conversar sobre cache

2.Estratégias e lições aprendidas

Page 22: Vamos conversar sobre cache

There are two hard things in computer science: cache invalidation and naming things.-- Phil Karlton

Page 23: Vamos conversar sobre cache

Cache invalidation

Usuário

Server

Process

Cache

UsuárioUsuário

Page 24: Vamos conversar sobre cache

Server

Process

Cache

UsuárioUsuário

Admin

Inclui um novo artigoPorém o conteúdo não aparece

Cache invalidation

Page 25: Vamos conversar sobre cache

Cache invalidation - distributed system

Usuário

Server

Process Process

Cache

Server

Usuário Usuário UsuárioUsuário

Process

Server

Cache

V1

V2

Page 26: Vamos conversar sobre cache

Cache invalidation - Mobile/Desktop

Desktop

Server

Process

Cache

Mobile

Versão desktop para mobile

Page 27: Vamos conversar sobre cache

Cache invalidation - Mobile/Desktop

Desktop

Server

Process

Cache

Mobile

Versão desktop para mobile

Page 28: Vamos conversar sobre cache

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

Page 29: Vamos conversar sobre cache

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

Page 30: Vamos conversar sobre cache
Page 31: Vamos conversar sobre cache
Page 32: Vamos conversar sobre cache
Page 33: Vamos conversar sobre cache
Page 34: Vamos conversar sobre cache

Instale o w3 total cache e tenha o site 300% mais rápido.

Page 35: Vamos conversar sobre cache

Será mesmo??

Page 36: Vamos conversar sobre cache

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...

Page 37: Vamos conversar sobre cache

Saiba o que realmente está fazendo….

Page 38: Vamos conversar sobre cache

WP - SuperCache

Page 39: Vamos conversar sobre cache

WP - w3 totalcache

Page 40: Vamos conversar sobre cache

WP - wordfence

Page 41: Vamos conversar sobre cache

CloudFlare

Page 42: Vamos conversar sobre cache

CloudFlare

Page 43: Vamos conversar sobre cache

IO cache

Page 44: Vamos conversar sobre cache
Page 45: Vamos conversar sobre cache

Cache invalidation challenge

Akamai

Reverse Cache

APP Cache

Object Cache

Browser cache

Page 46: Vamos conversar sobre cache

E como seria em um sistema distribuído

Page 47: Vamos conversar sobre cache

Tipos de cache BackEnd● Cache em memória

○ Memcache○ Redis

● Em disco○ Files (SSD plz)○ Servidores NFS

Page 48: Vamos conversar sobre cache

Cache - Em disco

HDD SSDVS

Page 49: Vamos conversar sobre cache

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...

Page 50: Vamos conversar sobre cache

Cache - Memória

Page 51: Vamos conversar sobre cache

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)

Page 52: Vamos conversar sobre cache

3.Cache, cache e cache

Page 53: Vamos conversar sobre cache

BackEndProcessos guardados e reutilizados em servidores.

Page 54: Vamos conversar sobre cache

HTTP

Cache - App - Page

Routes Controller

DataBase

View

MIddleware

Page 55: Vamos conversar sobre cache

HTTP

Cache - App - Page

Routes Controller

DataBase

View

MIddleware

Cache

Page 56: Vamos conversar sobre cache
Page 57: Vamos conversar sobre cache
Page 58: Vamos conversar sobre cache

Cache - Object

Class Friends Call Model

Controller

MySQL ForEach Filter

$my_friends

Page 59: Vamos conversar sobre cache

Cache - Object

Class Friends Call Model

Controller

MySQL ForEach Filter

$my_friends

Cache

Page 60: Vamos conversar sobre cache
Page 61: Vamos conversar sobre cache

View Object

Cache - View

Render

Controller

View Object Render

View Object Render

Page 62: Vamos conversar sobre cache

View Object

Cache - View

Render

Controller

View Object Render

View Object Render

Cache

Page 63: Vamos conversar sobre cache

Model

Cache - Models

Database

Controller

Model Database

Page 64: Vamos conversar sobre cache

Model

Cache - Models

Database

Controller

Model Database

Cache

Page 65: Vamos conversar sobre cache

get_file_contents

Cache - Request

HTTP

Controller

get_file_contents HTTP

Controller

Page 66: Vamos conversar sobre cache

get_file_contents

Cache - Request

HTTP

Controller

get_file_contents HTTP

Controller

Cache

Page 67: Vamos conversar sobre cache

Cache - Reverse Proxy

HTTP Servers Applications DataBase

Page 68: Vamos conversar sobre cache

Cache - Reverse Proxy

HTTP Servers Applications DataBase

Proxy

Cache

Page 69: Vamos conversar sobre cache
Page 70: Vamos conversar sobre cache
Page 71: Vamos conversar sobre cache

Cache - Proxy reverso

Page 72: Vamos conversar sobre cache

Cache - CDNs

HTTP Servers

Statics files

Page 73: Vamos conversar sobre cache

Cache - CDNs

HTTP Servers

Statics files

CD

N

Page 74: Vamos conversar sobre cache
Page 75: Vamos conversar sobre cache

Cache - CDNs

Page 76: Vamos conversar sobre cache

FrontEndProcessos guardados e reutilizados em cada usuário.

Page 77: Vamos conversar sobre cache

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

Page 78: Vamos conversar sobre cache

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

Page 79: Vamos conversar sobre cache

Cache - HTTP Caching

Page 80: Vamos conversar sobre cache

Cache - Local Storage

jquery request

Server

AjaxforEach Process

Page 81: Vamos conversar sobre cache

Cache - Local Storage

jquery request

Server

AjaxforEach Process

Cache

Page 82: Vamos conversar sobre cache
Page 83: Vamos conversar sobre cache

Local StorageMini Banco de dados de chave e valor.

● Até 5mb de dados

Page 84: Vamos conversar sobre cache
Page 85: Vamos conversar sobre cache

Cache - Manifest

jquery

forEach Process

Offline Cache

Page 86: Vamos conversar sobre 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.-

Page 87: Vamos conversar sobre cache
Page 88: Vamos conversar sobre cache
Page 89: Vamos conversar sobre cache

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).

Page 90: Vamos conversar sobre cache

4.Concluíndo

Page 91: Vamos conversar sobre cache

Entenda como cada estilo de cache funciona, entenda como funciona sua arquitetura.

Page 92: Vamos conversar sobre cache

Atenção redobrada para o cache em sistemas distribuídos.

Page 93: Vamos conversar sobre cache

Aconselha-se a implementar o cache depois que lançar o produto.