vamos conversar sobre cache

Post on 13-Apr-2017

93 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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.

Bye.felipeklerk@yahoo.com.br

linkedin.com/in/felipe-klerk-signorini

facebook.com/felipesignorini

top related