Olá pessoal, tudo bem? Bem-vindos aqui de volta à nossa jornada cloud. Vamos falar agora de um dos serviços de grande utilidade e que pode trazer também grande agilidade para as nossas aplicações no ambiente cloud. Se você tem aí um serviço em base de dados, se você tem um serviço que depende de alguma leitura e que o dado não é mutável com grande escala, por exemplo, eu tenho aqui uma consulta de clientes e os dados do cliente não mudam assim de uma hora para outra, não vai perder aí, mudar de nome, vai mudar alguns dados seus, como documento, coisas disso a todo momento. Então, quer dizer que se o cliente entrar duas, três vezes ali no dia, dependendo do período em que ele está entrando dentro do sistema, eu não preciso objetivamente ficar indo na base de dados a todo e qualquer momento para buscar os dados desse cliente. Até porque eu posso ter, pensando em uma arquitetura de micro serviços, eu posso ter esse cliente sendo consultado por mais de uma aplicação. Então, por que eu vou ficar ali atrelando, fazendo pontos únicos de falha dentro do meu sistema, se aquele dado de fato não vai sofrer uma mutação em um curto período de tempo. Então, vamos imaginar que eu tenho aqui uma aplicação e faz todo sentido que eu tenha isso segregado das outras. Uma aplicação de cadastro de cliente está segregada das outras aplicações, porque ela tem uma responsabilidade de gerir e fornecer os dados dos clientes, mas imagina que essa aplicação ficou fora por uns 10 minutos. Será que eu poderia ficar com todos os clientes impactados? Claro, aqueles que ainda não entraram, talvez poderiam sofrer impacto, mas aqueles clientes que já logaram em algum momento, logaram há 12 minutos atrás. Eu não poderia ter um sistema aqui que garantisse esses dados do cliente em memória para que eu não necessariamente precisasse ir lá na fonte buscar esses dados, dados que não sofrem inundação, e aí eu garantir que os meus sistemas estejam desacoplados e estejam sendo servidos por um modelo mais de autossuficiência. Acho que você já sabe do que a gente está falando aqui, né? Estamos falando dos caches em memória, tá? Então, dentro da AWS, além das bases de dados ali, como o Dynamo Pro, o Dynamo tem também o sistema de cache dele, que você pode habilitar ali dentro, né? Mas além do Dynamo, além de um DocumentDB, além do RDS, da minha base de dados ali, relacional, eu tenho também no AWS uma forma de gerenciar memória, gerenciar cache, tá bom? Para que eu possa estar servindo a minha aplicação com mecanismos de cache e garantindo que ela vai se manter em pé ou vai até mesmo responder com maior velocidade sem necessariamente eu ter que pagar um recurso de rede para fazer uma consulta em uma API a todo momento. Essa API que faz essa consulta sem pagar o recurso de banco que ela vai ficar consumindo para buscar. Se eu estiver ali em um banco como o DynamoDB, onde eu pago também por requisição de API, eu não vou executar objetivamente essas requisições de API, eu vou usar o cache em memória. Estamos falando da AWS no ElastCache. Ele tem uma forma de garantir. Ele tem duas formas de gerenciar isso, dois mecanismos de gerenciamento de cache, que é o Redis, que está todo mundo acostumado, pelo menos aqueles que já precisaram trabalhar com cache, trabalhou com Redis. Ele é um banco em memória, vamos chamar assim. Eu consigo, dentro do Redis, ele é um banco em memória, vamos chamar assim, eu consigo dentro do Redis trabalhar de duas formas, posso trabalhar tanto que value, põe o meu cache ali por chave valor, e o valor ali pode ser uma classe serializada, pode ser um JSON, o valor ali pode ser um stream, então é indiferente, ou eu posso trabalhar também no modelo hash table, onde ele faz uma tabela como se fosse uma hash dentro do Redis, e eu consigo, vamos pensar para quem está acostumado no Java, trabalhar o Redis com o JPA, por exemplo eu faço ali um hash table crio ali determinado repository para isso, e ele vai trabalhar ali como se fosse um CRUD. Eu posso buscar, posso atualizar, posso criar, posso deletar isso, tá? Usando aí recursos de JPA. E outros recursos, trabalhando com o Hashtable, todas as linguagens aí vão ter algum framework, alguma forma de trabalhar com isso. Então, ele é uma forma rápida, ele não é apenas cache, eu poderia usar ele como um banco em memória para requisições simples onde eu faço vazão de armazenamento preciso só guardar isso aqui já fazer um flash disso para um outro lugar não é tão usável tá bom não é o modelo mais usual mas também é uma possibilidade e também o main cache tá então ele tem essas duas formas aí de trabalhar essas duas engines para trabalhar e ainda tem uma outra, tá? Então ele tem essas duas formas aí de trabalhar, essas duas engines para trabalhar, e eu ainda tenho uma outra forma, eu posso trabalhar com ele totalmente serverless, eu posso simplesmente pedir um Elastic Cache ali para a AWS, ela vai me dar um host desse rapaz, ela vai me dar senha, vai fazer todo o gerenciamento que eu quero dele, ou eu posso clusterizar, eu posso também pagar uma máquina assim como eu faço lá no RDS, eu escolho uma máquina crio um cluster de Redis crio um cluster de Mancash, posso jogar isso dentro de uma máquina específica de dados e também pagar por isso, tá bom? Então, o ElastiCache ele é muito rápido tá bom? Ele é um serviço que eu posso usar no role bem server bom? Ele é um serviço que eu posso usar como role bem serverless, ele não é um serviço tão caro para ser usado, mas ele não é um serviço também o mais barato da AWS, tá bom? Mas ele é muito útil para o nosso dia a dia, tá bom? Então você aí que está pensando em fazer API, e as suas APIs vão ali ter várias consultas, e em algum lugar ela vai... Ela é uma API muito requisitada, ou seja, ela tem que ter uma resposta, um TPS rápido, ela tem que garantir um TPS bom, ela tem que ter uma resposta rápida a isso. Em alguns pontos, eu posso fazer uso de cache e isso vai ser de garantia de qualidade para dentro da minha aplicação. Então, eu posso usar ele de várias formas, como falei, em modelo de Givello, e posso usar também em modelo de Hashtable. Isso é uma configuração de aplicação, do ponto de vista do Elastic Cache, ele vai com Redis, no caso que é o que nós vamos experimentar aqui, ele vai aceitar exatamente o que você mandar bom ele não vai ali é te delegar alguma obrigação a use só que velho não use não ele vai aceitar o que você levar porque o que ele garante ali é uma engine do redis por exemplo rodando dentro de um serviço ele garante o gerenciamento disso para você, tá bom? Então, está aqui Amazon Elasto Cash, eu tenho o nível gratuito dele? Tenho, se você está aí no free tier, criou sua conta agora, o nível gratuito dele é muito perto do nível gratuito do RDS, ele lembra muito, porque ele tem também ali, as 750 horas de uso aí o nó e dentro daquelas determinadas máquinas pequenininhas tá bom pra você está usando então ele é um serviço muito utilizado por todos que têm estão rodando na ws então se você está usando aí é serviços como netflix tá é outro serviços que em algum espaço dele rodam na Cloud WS, você em algum momento usou cache na sua vida, mesmo sem saber. Isso garante muita velocidade, também garante uma forma de eu manter a integridade do meu serviço, garantindo que eu não vou consumir itens que não precisam ser consumidos a todo momento. manter a integridade do meu serviço, tá bom? Garantindo que eu não vou consumir itens que não precisam ser consumidos a todo momento. Uma das formas também é armazenar parâmetros, né? Eu poderia guardar esses parâmetros em cache. Ah, eu não quero guardar esses parâmetros ali em memória, tá? Eu tenho lá o parâmetro store e meu parâmetro store. Eu subi a aplicação, trouxe o parâmetro. Eu vou ficar consultando a API do parâmetro Store toda vez? Não, eu posso guardar esse parâmetro em cache. E eu já vou estar pagando a máquina. Então, se eu usar, se eu não usar, eu já estou sendo cobrado. Então, eu vou usar porque eu vou garantir mais robustez à minha aplicação. Tá bom? Então, essa daí forma e quando a gente receber aquele evento de atualização eu posso limpar o cache, trazer de novo. Então, a forma de uso, o modelo de uso é muito grande. Se você olhar ali dentro da página do Amazon ElastiCache, você vai ver que tem muitas aplicações, tem muitas empresas, tá bom? Que usam e fazem uso do ElastiCache dentro do seu ecossistema. Ele é mais um serviço que quando a gente fala de preço. Ele não tem aquele preço fixo. Então, eu vou também pagar por uso, mas ele não tem ali uma forma simples de calcular, porque vai depender muito do que eu vou usar dentro dele. Então, se você quer saber quanto vai custar o seu registro quanto vai custar o main cache ou melhor o elast cache tá bom vem aqui dentro pega ele escolhe faz uma estimativa para você ter uma noção de quanto você vai pagar tamanho médio dos dados em cache, vou colocar aqui que eu vou ter 10 gigas, dados em cache é pouco, geralmente eu vou colocar aqui 1 giga, vou ter 1 giga em cache, em quantas transações por segundo aqui, vou falar que eu vou ter, vou chutar alto, vou chutar 1000, 1000 transações por segundo, tá bom? Média de transferência, vou falar que é 10KB, tá vendo? Acho que aqui até tá bastante, tá? Não vou configurar cluster, tá bom? Não vou configurar um cluster aqui, tá bom não vou configurar um cluster aqui mas vamos dizer que eu fosse usar um cluster aqui vou colocar uma outra máquina uma maquininha pequena uma T2 um small por exemplo tá vendo um ó nessa configuração aqui, edis, on demand, nessa configuração eu estaria pagando aqui 205 dólares por mês para ter todo esse mecanismo de cash, o throughput mil transações por segundo e 10kb de cash é um bom tamanho de cash tá você tá acostumado aí a fazer cálculo em memória você tem isso aqui então use esse esse item aqui para você poder fazer esse cálculo tá bom de quanto você vai estar pagando aí lembrando que as horas gratuitas se tiver no youtube o dinheiro aí você vai até 750 horas de graça então dá pra usar dá pra brincar bastante aqui tá vamos fazer vamos entender como que a gente cria isso então dentro do seu console a WS você vem em Elastic Cache Opa, WS não está carregando pra mim aqui, vamos dar uma atualizada no console Vamos lá Aí trouxe, Elastic Cache você pode trazer aqui é cash do redis, cash do maincash, pode fazer backup esse produto pessoal se assemelha muito ao RDS de fato, ele também tem aqui janela de backup, janela de manutenção tal tal como o RDS. A diferença é que ele não é um banco relacional. Mas o modelo de configuração, ele tem a sua determinada proximidade. Vamos fazer um cache do Redis? Simplesmente vem aqui, cache do Redis, vou criar um. Eu posso usar aqui, ele totalmente serve, ou eu posso criar o meu próprio. Naquela estimativa que a gente fez lá na AWS, eu estou vindo por aqui. Posso usar como cache de cluster, posso usar para restaurar, trazer um backup para restaurar nessa criação, já ter ali um snapshot, um backup criado para jogar. Então eu poderia ter que configurar um monte de coisa, mecanismo, default, porta, número de réplicas, também posso ter isso aqui, uma principal, posso ter uma só do read, as aplicações que fazem gravação usam dessa forma, que não fazem gravação de um de outro. Eu vou usar sem servidor, como novo cache, tá bom? Não vou criar ele aqui, essa aqui é uma feature um pouco mais recente da AWS, dá pra fazer da mesma forma como em cache também, vamos usar Redis, porque o Redis ele é o mais comum no mercado, sendo bem sincero, tá? É muito comum você ter até nas clouds privadas, tá bom? Vente cloud privada, você ter aí o uso de rediz em determinadas empresas, tá bom? Então, eu vou colocar aqui, teste de rediz de nome. Não vou colocar nada. Visualização padrão. Então, zos personalizar eu vou personalizar porque eu vou colocar ele na minha outra VPC tá bom vou jogar aqui na outra VPC vou jogar aqui na A1 vou jogar aqui na a1 jogar aqui vou jogar nessas três zonas de disponibilidade vou usar o KMS padrão dele tá bom pretensiar aws eu posso colocar um KMS meu posso habilitar os backups automáticos, não vou fazer isso aqui agora, tá bom? Não vou colocar limites de uso, vou deixar ele escalar conforme a necessidade, porque eu estou pagando como server. Se eu tivesse dentro da minha criação de cluster, eu viesse aqui para criar um cluster meu, gerenciado por mim, eu poderia efetivamente escolher máquina e aí eu teria que pensar mais em tamanho. Tá bom? Mas como eu estou usando como serverless, claro, gente, isso é um risco. Um risco do ponto de, se eu começar a usar muito, vou pagar mais. Obviamente. Mas eu não vou criar limites para isso aqui, porque gente está no ambiente para testar certo então vou subir aqui clico em criar tem uma subnet aqui que ele não tá permitindo usar vamos ver qual é ainda temos isso, qual que é? afinal 81 é um B, aqui é a A então vamos ver se ele vai dar certo agora? tá tendo algum problema nas minhas subnets aqui o C vamos dar uma olhadinha. Essa daqui. Então, vamos criar em duas aqui apenas. Pronto, resolvi. Aquela lá que eram as VPCs privadas, as subnets privadas. Eu não coloquei ela na privada, então ele estava tendo ali conflito, porque uma não estava em comunicação com a outra, por isso. Então, vamos usar apenas as duas VPCs públicas aqui. Bom, isso aqui demora um pouco. Melhor dizendo, as duas subnet públicas, perdão. Isso aqui pode demorar um pouquinho, tá bom? Então ele vai, assim como quando você cria lá um item de cache, de banco de dados no EDS ele tem um determinado tempo para a execução aqui é da mesma forma ele vai fazer toda uma criação, ele vai habilitar aqui os endpoints ele vai fazer tudo isso pra gente ok? então ele está criando, como isso demora um pouquinho vamos dar aquela pausinha que você nem vai notar. Tá bom? Já já a gente volta somente com esse objeto criado, ok? Até daqui a pouquinho. Criado o nosso cache do Redis. Demorou aqui ainda uns três minutinhos, tá? Já está aqui disponível. Já vejo aqui qual que é o meu mecanismo. Eu estou na tecnologia sem servidor. data de criação totalmente disponível aqui, tá? Vamos olhar o que ele me traz aqui? Bom, de configurações, ele vai me dar o RN, ele vai me dar aqui o endpoint do Redis, como que eu vou buscar aqui, como que eu vou me conectar já está aqui o endpoint, a porta eu posso fazer um endpoint, uma roasted zone lá no lot53 apontando para esse cara se eu quiser padronizar essa URL, tá bom? para dentro do meu id, se eu quiser usar um cache exposto também, eu posso criar um DNS lá e criar um roteamento aqui para dentro, de porta e tudo mais, tá bom? Então, está aqui dentro, sem limite de uso, está no meu grupo de segurança, isso aqui é uma parte importantíssima, tá? Dentro das configurações da AWS como em geral, né? A gente já falou um pouco sobre grupo de segurança, mas se você estiver aí numa máquina, teste é do ecf né o firegate ou do ec2 que não esteja no mesmo grupo de segurança por mais que você crie ele aqui ele disponibiliza tudo você não vai efetivamente conseguir jogar é os seus cash aqui pra dentro ou pesquisarmos porque você vai estar ali com blocos de nível de rede. Então, estou aqui no mesmo grupo de segurança da minha VPC, dentro das minhas subnets eu escolhi as públicas porque eu vou fazer um teste de conexão, então, pra gente poder ter lá. Assim o RDS o Elasticash me traz vários dashs aqui já prontos do próprio CloudWatch eu não pago nada mais por isso eu já pago como serviço e aqui eu tenho as mesmas configurações que eu tenho em qualquer dash CloudWatch posso pesquisar por hora, por tempo são vários dashs, por exemplo quantos comandos, taxas de ocorrência, ou seja, quantas vezes ele está batendo aqui dentro, quantos dados estão armazenados aqui em cache, então você consegue visualizar muito bem isso, você pode ver aqui os eventos, eu tenho aqui o evento de criação, tem eventos de atualização, backup, eu posso modificar, o backup está desabilitado, mas eu poderia criar, eu posso só dependendo da minha forma de uso, cache ele é uma coisa que backup parece não ser a realidade do cache, porque se eu não tiver nada em cache, eu busco na origem, né? Mas existem engenheiros de software, arquitetos, como eu falei, para serviços de baixa latência, onde ele precisa transitar uma coisa ou outra, às vezes ele cria que sim um backup Porque ele quer que esse dado persista por mais tempo Porque o que vai definir O da existência do dado Dentro do registro é o TTL Eu posso colocar um dado lá Sem tempo de expiração E eu sempre me servir dele aqui dentro Entendeu? Como eu posso colocar um dado aqui que vai viver por duas horas E vai morrer e se vier de novo Ele cria um novo item dentro do cache, se não ele usa o que já está disponível lá. Então, o TTL é o que vai determinar o quanto que esse dado é volátil ou não. E o TTL não é determinado pelo Redis, é determinado por quem produz a informação no Redis. Então, tem muitos engenheiros que aí são dados que, pô, esse dado não sofre mutação, eu quero que esse dado fique ali. Então, para ele, talvez o backup seja algo importante. Vai depender do caso, não tem receita de boa, tá? Então, se você vier aqui e clicar em modificar, você pode simplesmente alterar VPC, alterar subnet, alterar security group, habilitar os backups automáticos, posso fazer várias coisas aqui, se eu quiser fazer simplesmente um backup dentro do Redis, tá bom? Dentro desse modelo, eu simplesmente clico em backup e ele já vai começar a guardar isso para mim, tá bom? Então, vamos conectar? Vamos lá? Vou abrir aqui meu bastion host nesse 2, eu tenho ele aqui em execução, vamos fazer uma conexão nele, conectar aqui, pra isso você precisa ter instalado, tanto quando você vai lá no, é, quando você tá no RDS, com post, você tem que instalar o psql aqui pra você poder usar essa base de dados aqui você também na no teu bastion host você vai precisar instalar o redis também tá então você usar o redis CLI tá pra poder fazer conexão no redis ok então vamos lá vamos pegar aqui o meu endpoint eu não dei o resgicelar a outro usuário com o root, então vou entrar aqui nele vou colocar resgicelar menos h e aqui já tem a porta vou apagar esses dois pontos e fazer um menos p e vamos conectar. Está indo e... Estamos dentro do nosso cache do Redis. Aqui você poderia dar todos os comandos do Redis como case para você listar todas as keys. Você poderia dar vários evals aqui dentro para você pegar valores, abrir as coisas do seu cache. E é basicamente isso, tá, pessoal? O cache em máquina, o cache em memória, ele é muito usual, ele é muito importante, ele faz, sim, parte do dia a dia dos engenheiros de software, ele é um item quase que fundamental em uma arquitetura de larga escala, onde eu preciso ter respostas rápidas, onde eu preciso ter distribuição de dados com pouca mutabilidade, de forma muito rápida e íntegra, tá bom? E ele é um item muito confiável, a engine que roda aqui é de preferência tua então aqui o que você pode fazer? Você pode colocar uma lambda, você pode colocar uma RPCS entendeu? Então qualquer aplicação que tenha capacidade, que tenha driver pra falar com o Redis ou com o Mancash você pode simplesmente se conectar aqui, tá bom? E a questão de segurança, você pode fazer vários atrelados, atrelar senhas, mas cada vez mais seguras, hashes. E o modelo de trabalho, como você vai usar o cache em si, é muito de corporação para corporação. Então, é isso. ElastCache é uma coisa simples de se criar dentro da AWS. Cache, como tudo, na verdade, são poucos os serviços da AWS que são mais complexos. Na verdade, a maioria deles são serviços de prateleira, assim como o ElastCache, que você, com poucas configurações, consegue prover um grande servidor de dados para você ficar colocando e imputando seus testes de forma muito simples. É isso, este foi o ElastCache. Faça seus testes, faça uma Lambda Connect nele, faça uma FNSS, faça Deploy Connect aqui, faça uma API, tá bom? Coloca lá sua API, olha, se buscar no banco de dados e coloca no cache, tá bom? Coloca ali, se você estiver usando Java, tem ali com Spring Boot, tem o Cacheable, que você pode usar, e você configura ali o seu cache para bater no Redis. Então, você vai notar que se ele estiver em cache, ele nem executa aquela linha de Cosmos, então a performance é muito rápida, é tudo delegado ao próprio framework. As formas de uso são enormes, as possibilidades são enormes e é isso, agradeço aí mais uma vez, boa sorte.