1) O documento apresenta um workshop sobre Amazon ElastiCache Avançado, com foco em Redis e Memcached.
2) A agenda inclui revisão rápida dos serviços, lançamento, conexão, distribuição de chaves, monitoramento e casos de uso.
3) O workshop é apresentado por especialistas da AWS e da Kanui e aborda melhores práticas e lições aprendidas na utilização do ElastiCache.
Você quer lançar a sua primeira aplicação em Big Data e não sabe como? Junte-se a nós nessa jornada e vamos construir aplicação utilizando Amazon EMR, Amazon Redshift, Amazon Kinesis, Amazon DynamoDB e Amazon S3.
O Amazon EC2 permite que você obtenha capacidade computacional de uma forma econômica usando instâncias spot.
Este recurso permite uma redução de até 90% no custo em relação ao valor on demand. Nesta sessão, os participantes aprenderão as boas práticas deste modelo e alguns casos de uso em que as instâncias spot podem ser utilizadas com sucesso.
Enquanto muitas organizações já começaram a automatizar o seu processo de desenvolvimento de software, muitas ainda criam a sua infraestrutura manualmente. Tratando a sua infraestrutura como um pedaço de código permite a criação de uma infraestrutura de forma programável.
O AWS Beanstalk provê de forma simples e rápida, gerenciamento de deploy e escalabilidade da sua aplicação Web na AWS. Nessa sessão também será exposto as facilidades e robustez do serviço em questão.
Nesta apresentação iremos escrever melhores práticas de implementação de aplicações SAP na nuvem AWS. Iremos demonstrar o poder na Nuvem AWS para executar sistemas SAP de missão crítica, bem como a evolução da parceria entre a AWS e a SAP. Demonstraremos como nossa plataforma é hora a mais completa para execução de ambientes corporativos SAP na Nuvem. As informações abordadas durante a palestra poderão ser utilizadas por nossos clientes em diversos estágios de sua jornada de migração de sistemas SAP para a nuvem AWS ou para novas implementações.
https://aws.amazon.com/pt/sap/
Explore como milhões de clientes estão utilizando os produtos e as soluções na nuvem AWS e soluções para construir aplicações sofisticadas com mais flexibilidade, escalabilidade e confiabilidade.
Você quer lançar a sua primeira aplicação em Big Data e não sabe como? Junte-se a nós nessa jornada e vamos construir aplicação utilizando Amazon EMR, Amazon Redshift, Amazon Kinesis, Amazon DynamoDB e Amazon S3.
O Amazon EC2 permite que você obtenha capacidade computacional de uma forma econômica usando instâncias spot.
Este recurso permite uma redução de até 90% no custo em relação ao valor on demand. Nesta sessão, os participantes aprenderão as boas práticas deste modelo e alguns casos de uso em que as instâncias spot podem ser utilizadas com sucesso.
Enquanto muitas organizações já começaram a automatizar o seu processo de desenvolvimento de software, muitas ainda criam a sua infraestrutura manualmente. Tratando a sua infraestrutura como um pedaço de código permite a criação de uma infraestrutura de forma programável.
O AWS Beanstalk provê de forma simples e rápida, gerenciamento de deploy e escalabilidade da sua aplicação Web na AWS. Nessa sessão também será exposto as facilidades e robustez do serviço em questão.
Nesta apresentação iremos escrever melhores práticas de implementação de aplicações SAP na nuvem AWS. Iremos demonstrar o poder na Nuvem AWS para executar sistemas SAP de missão crítica, bem como a evolução da parceria entre a AWS e a SAP. Demonstraremos como nossa plataforma é hora a mais completa para execução de ambientes corporativos SAP na Nuvem. As informações abordadas durante a palestra poderão ser utilizadas por nossos clientes em diversos estágios de sua jornada de migração de sistemas SAP para a nuvem AWS ou para novas implementações.
https://aws.amazon.com/pt/sap/
Explore como milhões de clientes estão utilizando os produtos e as soluções na nuvem AWS e soluções para construir aplicações sofisticadas com mais flexibilidade, escalabilidade e confiabilidade.
O Amazon CloudFront permite que você tenha menor latência, mais segurança e ao mesmo tempo o melhor custo e disponibilidade de serviços! Utilizando o CloudFront como rede de distribuição de conteúdo é possível entregar não apenas conteúdo estático, mas também aplicações web, APIs, streaming de audio e vídeo e muitos outros cenários. Venha conhecer na prática como usar o Amazon CloudFront e melhorar significativamente sua eficiencia de custos, desempenho e segurança.
https://aws.amazon.com/pt/cloudfront/
Raising the bar #2 - Explorando o poder do banco de dados com Amazon AuroraAmazon Web Services LATAM
O Amazon Relational Database Service (Amazon RDS) facilita a configuração, a operação e a escalabilidade de bancos de dados relacionais na nuvem. O Amazon RDS disponibiliza seis mecanismos de banco de dados conhecidos para sua escolha, que incluem Amazon Aurora, Oracle, Microsoft SQL Server, PostgreSQL, MySQL e MariaDB.
O Amazon Aurora é o banco de dados gerenciado da AWS que combina, performance e disponibilidade. Nessa sessão, será apresentado, seus conceitos e como você pode obter benefício desse serviço.
Explore como milhões de clientes estão utilizando os produtos e as soluções na nuvem AWS e soluções para construir aplicações sofisticadas com mais flexibilidade, escalabilidade e confiabilidade.
"AWS Lambda e Amazon API Gateway mudaram a forma como aplicações e serviços são desenvolvidos. Porém, qual a melhor forma para executar tarefas como deployment, monitoramento e debugging em um mundo sem servidor? Nesta sessão, detalharemos as práticas recomendadas relacionadas a todo o ciclo de vida de uma aplicação serverless.
Discutiremos como você pode construir um pipeline CI/CD que automaticamente empacota (build), testa e faz deploy de aplicações serverless utilizando soluções como AWS CodePipeline, AWS CodeBuild e AWS CloudFormation. Além disso, apresentaremos recursos do AWS Lambda e Amazon API Gateway que auxiliam no processo de versionamento de funções e isolamento dos ambientes de execução de suas APIs. Por fim, vamos mostrar como o Amazon CloudWatch e o AWS X-Ray podem ser usados para auxiliar no processo de monitoramento e diagnóstico de seus serviços."
https://aws.amazon.com/pt/serverless/
"No caso de um desastre, sua empresa precisa ser capaz de recuperar dados perdidos rapidamente para garantir a continuidade do negócio. Para aplicações críticas, manter o tempo para recuperar e perda de dados a um mínimo, bem como otimizar custos pode ser um desafio.
Esta sessão apresentaremos recursos e serviços AWS e arquiteturas de recuperação de desastres que você pode utilizar para criar ambientes altamente disponíveis e com resiliência à desastres. Forneceremos recomendações sobre como melhorar seu plano de recuperação de desastres e discutiremos cenários com exemplos, demostrando como recuperar-se de um desastre com eficiência e custo aderente ao negócio."
https://aws.amazon.com/pt/disaster-recovery/
Você gostaria de integrar o seu data center com a AWS ? Junte-se nessa sessão para entender mais sobre como prover conectividade utilizando uma infra-estrutura híbrida compartilhada/dedicada entre ambientes cobrindo aspectos relacionados a formas de implementação de serviços como AWS Direct Connect.
O AWS Database Migration Service ajuda você a migrar bancos de dados para a AWS de modo fácil e seguro. O banco de dados de origem permanece totalmente operacional durante a migração, minimizando períodos de inatividade para aplicativos que dependem do banco de dados.
Essa sessão são para os interessados no melhor entendimento da otimização dos custos, assim como detalhes com utilização de TCO (Total Cost of Ownership) na AWS.
Webinar: Data warehouse na nuvem da AWS
Amazon Redshift é um serviço de data warehouse (DW), totalmente gerenciado, em escala de petabytes, que torna mais simples e econômica a análise todos os seus dados, utilizando as ferramentas de inteligência de negócios que você já dispõe. Comece aos poucos e aumente a escala até petabytes por menos de $1000 por terabyte por ano, com um décimo do custo das soluções tradicionais de DW.
"Varios clientes estão migrando suas aplicações analíticas, processamento de dados (ETL) e aplicações de data science rodando com Apache Hadoop, Spark e data warehouse a partir de ambientes em datacenter local para o Amazon EMR com o objetivo de economia, maior disponibilidade e melhoria de desempenho.
Amazon EMR é um serviço gerenciado que permite com que você analise uma quantidade imensa de dados usando as ultimas versões de mais de 15 ferramentas open-source presentes no ecossistema Apache Hadoop e Spark. Essa sessão permitirá idenficar os componentes, aplicações e tarefas presentes no seu atual ambiente e demonstrar as melhores práticas para migrar esses componentes para o Amazon EMR. Nos iremos expliar como mover seus HDFS para o Amazon S3, um serviço de armazenamento altamente durável e como os baixos custos de instâncias EC2 Spot e auto-scaling podem ajudá-lo a ter mais eficiência com baixo custo. Também iremos explicar os fundamentos de segurança e dicas de ajustes para acelerar a migração de sua aplicação de produção."
https://aws.amazon.com/pt/emr/
O Amazon CloudFront permite que você tenha menor latência, mais segurança e ao mesmo tempo o melhor custo e disponibilidade de serviços! Utilizando o CloudFront como rede de distribuição de conteúdo é possível entregar não apenas conteúdo estático, mas também aplicações web, APIs, streaming de audio e vídeo e muitos outros cenários. Venha conhecer na prática como usar o Amazon CloudFront e melhorar significativamente sua eficiencia de custos, desempenho e segurança.
https://aws.amazon.com/pt/cloudfront/
Raising the bar #2 - Explorando o poder do banco de dados com Amazon AuroraAmazon Web Services LATAM
O Amazon Relational Database Service (Amazon RDS) facilita a configuração, a operação e a escalabilidade de bancos de dados relacionais na nuvem. O Amazon RDS disponibiliza seis mecanismos de banco de dados conhecidos para sua escolha, que incluem Amazon Aurora, Oracle, Microsoft SQL Server, PostgreSQL, MySQL e MariaDB.
O Amazon Aurora é o banco de dados gerenciado da AWS que combina, performance e disponibilidade. Nessa sessão, será apresentado, seus conceitos e como você pode obter benefício desse serviço.
Explore como milhões de clientes estão utilizando os produtos e as soluções na nuvem AWS e soluções para construir aplicações sofisticadas com mais flexibilidade, escalabilidade e confiabilidade.
"AWS Lambda e Amazon API Gateway mudaram a forma como aplicações e serviços são desenvolvidos. Porém, qual a melhor forma para executar tarefas como deployment, monitoramento e debugging em um mundo sem servidor? Nesta sessão, detalharemos as práticas recomendadas relacionadas a todo o ciclo de vida de uma aplicação serverless.
Discutiremos como você pode construir um pipeline CI/CD que automaticamente empacota (build), testa e faz deploy de aplicações serverless utilizando soluções como AWS CodePipeline, AWS CodeBuild e AWS CloudFormation. Além disso, apresentaremos recursos do AWS Lambda e Amazon API Gateway que auxiliam no processo de versionamento de funções e isolamento dos ambientes de execução de suas APIs. Por fim, vamos mostrar como o Amazon CloudWatch e o AWS X-Ray podem ser usados para auxiliar no processo de monitoramento e diagnóstico de seus serviços."
https://aws.amazon.com/pt/serverless/
"No caso de um desastre, sua empresa precisa ser capaz de recuperar dados perdidos rapidamente para garantir a continuidade do negócio. Para aplicações críticas, manter o tempo para recuperar e perda de dados a um mínimo, bem como otimizar custos pode ser um desafio.
Esta sessão apresentaremos recursos e serviços AWS e arquiteturas de recuperação de desastres que você pode utilizar para criar ambientes altamente disponíveis e com resiliência à desastres. Forneceremos recomendações sobre como melhorar seu plano de recuperação de desastres e discutiremos cenários com exemplos, demostrando como recuperar-se de um desastre com eficiência e custo aderente ao negócio."
https://aws.amazon.com/pt/disaster-recovery/
Você gostaria de integrar o seu data center com a AWS ? Junte-se nessa sessão para entender mais sobre como prover conectividade utilizando uma infra-estrutura híbrida compartilhada/dedicada entre ambientes cobrindo aspectos relacionados a formas de implementação de serviços como AWS Direct Connect.
O AWS Database Migration Service ajuda você a migrar bancos de dados para a AWS de modo fácil e seguro. O banco de dados de origem permanece totalmente operacional durante a migração, minimizando períodos de inatividade para aplicativos que dependem do banco de dados.
Essa sessão são para os interessados no melhor entendimento da otimização dos custos, assim como detalhes com utilização de TCO (Total Cost of Ownership) na AWS.
Webinar: Data warehouse na nuvem da AWS
Amazon Redshift é um serviço de data warehouse (DW), totalmente gerenciado, em escala de petabytes, que torna mais simples e econômica a análise todos os seus dados, utilizando as ferramentas de inteligência de negócios que você já dispõe. Comece aos poucos e aumente a escala até petabytes por menos de $1000 por terabyte por ano, com um décimo do custo das soluções tradicionais de DW.
"Varios clientes estão migrando suas aplicações analíticas, processamento de dados (ETL) e aplicações de data science rodando com Apache Hadoop, Spark e data warehouse a partir de ambientes em datacenter local para o Amazon EMR com o objetivo de economia, maior disponibilidade e melhoria de desempenho.
Amazon EMR é um serviço gerenciado que permite com que você analise uma quantidade imensa de dados usando as ultimas versões de mais de 15 ferramentas open-source presentes no ecossistema Apache Hadoop e Spark. Essa sessão permitirá idenficar os componentes, aplicações e tarefas presentes no seu atual ambiente e demonstrar as melhores práticas para migrar esses componentes para o Amazon EMR. Nos iremos expliar como mover seus HDFS para o Amazon S3, um serviço de armazenamento altamente durável e como os baixos custos de instâncias EC2 Spot e auto-scaling podem ajudá-lo a ter mais eficiência com baixo custo. Também iremos explicar os fundamentos de segurança e dicas de ajustes para acelerar a migração de sua aplicação de produção."
https://aws.amazon.com/pt/emr/
Os clientes que usam a AWS se beneficiam de mais de 1.800 controles de segurança e conformidade incorporados na plataforma da AWS. Nesta sessão, você aprenderá a tirar proveito dos recursos de segurança avançados da plataforma AWS para obter visibilidade, agilidade e controle necessários para ser mais seguro na nuvem do que em ambientes legados. Vamos dar uma olhada em várias arquiteturas de referência para cargas de trabalho comuns e destacar as maneiras inovadoras que os clientes estão usando a AWS para gerenciar a segurança de forma mais eficiente. Depois de participar desta sessão, você estará familiarizado com o modelo de responsabilidade de segurança compartilhado e como você pode herdar controles dos programas de certificação e acreditação mantidos pela AWS.
https://aws.amazon.com/pt/getting-started/
Neste caso de sucesso, os arquitetos nos apresentam como uma aplicação desenhada para milhões de usuários foi concebida, testada e implementada, atingindo a milhões de usuários durante a copa do mundo de futebol de 2014.
Redução e otimização de custos são algumas dos principais benefícios de ter sua aplicação rodando na nuvem. Nesta apresentação, exploramos várias estratégias de controle e otimização de custos, e mostramos como o ZAP Imóveis, maior portal de imóveis do Brasil, faz para gerenciar sua arquitetura na AWS.
Slides da palestra sobre serviços da Amazon e Hands On realizado na Superlogica Labs no dia 04/01/2017
Link com os códigos e exemplos: https://github.com/msfidelis/AulaAWS-Superlogica/
Executar projetos de Big Data nunca foi tão simples. Com a AWS, você pode executar Hadoop, Spark, Hive, Flink e frameworks semelhantes de maneira mais rápida e econômica. Neste webinar, você aprenderá como melhorar o desempenho do processamento de seus dados e reduzir custos, especialmente quando comparado a um ambiente on-premises.
Palestra descrevendo de forma geral o processo para criar arquiteturas adequadas para micro-serviços e também para refatorar uma aplicação antiga para esta arquitetura.
Ransomware é uma das ameaças de crescimento mais rápido para qualquer organização. Nenhuma empresa, grande ou pequena, está imune a ataques de cibercriminosos. Nesta sessão, mostramos como você pode aproveitar os serviços e recursos da nuvem AWS para proteger seus dados mais valiosos de ataques cibernéticos e acelerar a restauração de operações.
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperCesar Romero
TDC 2018 - Trilha Delphi
Repositório https://github.com/cesarliws/full-stack-tdc-poa
Introdução as plataformas web e cloud.
Como criar um servidor back-end cloud com Delphi MVC Framework simples, eficiente, alto desempenho e de fácil manutenção.
Como criar front-end web rapidamente com a biblioteca React.js, para consumir o back-end criado com Delphi MVC Framework.
* Introdução a Plataforma Web e Cloud
* Servidor RESTful com DMVC Framework e FireDAC
* Introdução ao Desenvolvimento front-end JavaScript com React.js
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftAmazon Web Services LATAM
O Amazon Redshift usa uma variedade de inovações para obter um desempenho de consulta muito elevado em conjuntos de dados com tamanhos variando de centenas de gigabytes a um petabyte ou mais.
Nessa sessão será exposto boas práticas do Amazon Redshift, o dataware da AWS. Tem como intuito de expor de formas efetivas de migração, cargas de dados, realizar tunnings nas suas consultas.
Semelhante a Aws sao paulo summit 2015 elasti cache avancado (20)
En este webinar, aprenderá cómo las empresas pueden aprovechar la nube de AWS para automatizar los pipelines de desarrollo de software. Este enfoque permite que su equipo sea más ágil, mejorando su capacidad para entregar aplicaciones y servicios rápidamente.
Neste webinar, você aprenderá como as empresas podem se valer da nuvem da AWS para automatizar os pipelines de desenvolvimento de software. Essa abordagem permite que sua equipe seja mais ágil, melhorando sua capacidade para entregar aplicações e serviços mais rapidamente.
Las tecnologías como los contenedores y kubernetes pueden hacer que sus procesos de entrega de software sean más fáciles y más rápidos. En este webinar, hablaremos sobre cómo usar el Amazon Kubernetes Service (EKS) para construir aplicaciones modernas con grupos Kubernetes totalmente administrados.
Tecnologias como containers e Kubernetes podem tornar seus processos de entrega de software mais fáceis e rápidos. Neste webinar, falaremos sobre como usar o Amazon Elastic Kubernetes Service (EKS) para criar aplicativos modernos com clusters de Kubernetes totalmente gerenciados.
El ransomware es una de las amenazas de más rápido crecimiento para cualquier organización. Ninguna empresa, grande o pequeña, es inmune a los ataques de los ciberdelincuentes. En esta sesión, mostramos cómo puede aprovechar los servicios y las capacidades de la nube AWS para proteger sus datos más valiosos de los ataques cibernéticos y acelerar la restauración de las operaciones.
Ransomware é uma prática maliciosa que tem se popularizado nos últimos anos. Nessa sessão, mostraremos como através da Amazon Web Services nossos clientes podem desenvolver uma estratégia pró-ativa de mitigação a ataques de ransomware, tanto em cenários on-premises como operando na nuvem.
El ransomware es una práctica maliciosa que se ha popularizado en los últimos años. En esta sesión les mostraremos cómo desde Amazon Web Services nuestros clientes pueden desarrollar una estrategia proactiva de mitigación frente a ataques de ransomware, tanto en escenarios on-premises, como operando en la nube.
Al mover datos a la nube, los clientes deben comprender los métodos óptimos para los diferentes casos de uso, los tipos de datos que están moviendo y los recursos disponibles en la red, entre otros. Las soluciones de migración y transferencia de AWS contemplan desde la migración de datos con conectividad limitada, almacenamiento en la nube híbrida, transferencias frecuentes de archivos B2B, hasta transferencias de datos en línea y sin conexión. En esta sesión, le mostramos cómo puede acelerar la migración y transferencia de datos de manera simplificada desde y hacia la nube de AWS.
Ao mover dados para a nuvem, os clientes precisam entender os métodos ideais de movê-los para diferentes casos de uso, os tipos de dados que estão movendo e os recursos de rede disponíveis, entre outras considerações. As soluções de migração e transferência da AWS atendem desde a migração de dados com conectividade limitada, armazenamento em nuvem híbrida, transferências frequentes de arquivos B2B até transferências de dados online e offline. Nessa sessão, mostraremos como você pode simplificar e acelerar sua migração e transferência de dados de e para a nuvem AWS.
El almacenamiento de archivos tiene diversos casos de uso; como directorios de usuarios, datos de aplicaciones, archivos multimedia y almacenamiento compartido para cargas de trabajo de alto rendimiento. La administración del almacenamiento de archivos en instalaciones propias suele ser un trabajo pesado, indiferenciado, con altos costos de adquisición, carga operativa para configurar y administra, lo que conlleva a desafíos de escalabilidad. En esta sesión, le mostramos cómo puede aprovechar las soluciones de archivos totalmente administradas de AWS para dejar de preocuparse por la sobrecarga administrativa de configurar, proteger, mantener y realizar copias de seguridad de su infraestructura de archivos.
La visualización de datos analíticos es un reto al que se enfrentan muchas organizaciones, el poder crear tableros, alertas, agregar predicciones a sus datos y actuar de acuerdo a estas de manera rápida es una necesidad de todos los negocios actuales. Únase a nuestros arquitectos para aprender como Amazon QuickSight le permite agregar inteligencia de negocios a sus aplicaciones y crear predicciones a futuro de sus datos. Amazon QuickSight es un servicio de inteligencia de negocios escalable y serverless creado para la nube, a través del cual podrá explotar sus datos de negocio para convertirlos en insights para hacer decisiones informadas sobre su negocio sin preocuparse de la gestión, escalamiento y la disponibilidad de la infraestructura de cómputo.
A visualização de dados é um desafio que muitas organizações enfrentam hoje. Criar dashboards, alertas, fazer previsões e agir rapidamente de acordo com os insights dos dados é uma necessidade de todas as empresas. Junte-se aos nossos arquitetos para aprender como o Amazon QuickSight o ajudará a adicionar BI aos seus aplicativos. O Amazon Quicksight é um serviço de BI escalável e serverless criado para a nuvem. Com ele, você pode explorar seus dados para obter insights e tomar decisões embasadas em seus negócios, sem se preocupar em gerenciar e dimensionar servidores e manter a disponibilidade de sua infraestrutura.
Ejecutar proyectos de Big Data nunca ha sido más sencillo. Con AWS, puede ejecutar Hadoop, Spark, Hive, Flink y marcos similares de forma más rápida y rentable. En este seminario web, aprenderá cómo mejorar el rendimiento del procesamiento de datos y reducir los costos, especialmente en comparación con un entorno local.
2. Amazon ElastiCache Avançado
Fábio Aragão da Silva, Solutions Architect at AWS
Willy Barro, Chief Technology Officer at Kanui
Fernando Cabral, Lead SysAdmin at Kanui
28 de Maio de 2015
3. Agenda
• Revisão Rápida
• Lançando
• Conectando
• Distribuindo as Chaves (Sharding)
• Monitorando
• Kanui
• Casos de Uso
• Juntando tudo
• Melhores Práticas e Lições Aprendidas
7. Redis
Similar a um banco no
NoSQL
http://redis.io/commands
Cache em memória
do tipo chave,valor
Suporte a tipos de dados
strings, listas, hashes, sets, sets ordenados,
bitmaps & HyperLogLogs
Single-threaded
Operações Atômicas
Suporte a transações
com propriedades ACID
Ridiculamente rápido!
Réplicas de Leitura
Persistência
Snapshots ou log append-only
Funcionalidade de
publicação/subscrição
8. Memcached
Alocação Slab
Cache em memória do tipo
chave,valor
Suporte a String e
Objetos
Multi-threaded
Absurdamente rápido!
Consolidado
Sem persistência
Padrões de Sharding
10. Lançando
1
Escolha:
• Versão
• Porta
• Parametros
• Multi-AZ & replicação*
• Nome do cluster
• Tipo de nó
• # de Nós (ou réplicas)
• Local de backup no S3*
2
Choose:
• Grupo de subnet
• Zonas de Disponibilidade
• Security group
• Habilite backups*
• Janela de Manutenção
• Tópico do SNS
3
+ +
*opção no Redis
Escolha o motor:
A partir do console da AWS:
12. Mas ao final das contas, o que interessa
mesmo são os endpoints
Endpoint: Refere-se a um nó em particular do cluster
mycache-002.hnou5c.0001.usw2.cache.amazonaws.com:6379 (redis)
mycache.hnou5c.0002.usw2.cache.amazonaws.com:11211 (memcached)
Endpoint de Configuração: Para o memcached, é um alias de DNS para
consultar a lista atual de nós participantes de um cluster
mycache.hnou5c.cfg.usw2.cache.amazonaws.com:11211
Endpoint: Primário: Pra grupos de replicação no redis, é um alias de DNS que
se refere ao nó onde devem ser feitas as escritas
mycacherepgroup.hnou5c.ng.0001.usw2.cache.amazonaws.com:6379
13. Redis Multi-AZ Auto-Failover
Escolhe a réplica com
menor atraso
Não muda o DNS
Availability Zone #1 Availability Zone #2
escritas
Use o endpoint
primário
leituras
Use os endpoints de
réplica (ou o primário
também)
15. Conectando ao Redis
Language Library
Ruby Redis-rb, Redis objects
Python Redis-py
Node.js node-redis
C#/.NET ServiceStack.Redis
PHP phpredis
Java Jedis
Bibliotecas Cliente:
Suporta os mesmos comandos
+ histórico de comandos
+ teste de latência
+ backups
+ vários outros
$telnet {primary-endpoint} 6379
>HSET hash mykey "mydata"
:1
>HGET hash mykey
$6
mydata
#from redis.io download:
$redis-cli -h {primary-endpoint}
16. // Exempoo em Java – requer http://aws.amazon.com/sdk-for-java
AmazonElastiCache ec = new AmazonElastiCacheClient();
String replicationGroupName = "mycache”; // mude para o nome do seu grupo de replicação
String metadataURL = "http://169.254.169.254/latest/meta-data/placement/availability-zone";
String myAZ = new Scanner(new URL(metadataURL).openStream(), "UTF-8").
useDelimiter("A").next();
ec.setRegion(Region.getRegion(Regions.US_WEST_2));
DescribeReplicationGroupsRequest rgrequest = new
DescribeReplicationGroupsRequest().withReplicationGroupId(replicationGroupName);
DescribeReplicationGroupsResult rgresult = ec.describeReplicationGroups(rgrequest);
for (ReplicationGroup rg : rgresult.getReplicationGroups()) {
for (NodeGroup ng : rg.getNodeGroups()) {
for (NodeGroupMember ngm : ng.getNodeGroupMembers()) {
if (ngm.getCurrentRole().equals("replica") &&
ngm.getPreferredAvailabilityZone().equalsIgnoreCase(myAZ)) {
System.out.println(ngm.getReadEndpoint().getAddress() + ":" +
ngm.getReadEndpoint().getPort());
}
}
}
}
Quais réplicas estão na minha AZ?
EncontrarAZ
ChamadaaAPIdo
ElastiCache
17. Conectando no Memcached
Útil para algumas informações &
manutenção, mas normalmente vamos nos
conectar usando alguma biblioteca cliente
Language Library
Ruby Dalli, Dalli:ElastiCache
Python Memcache Ring, django-elasticache
Node.js node-memcached
C#/.NET ElastiCache Auto Discovery Client
PHP ElastiCache Auto Discovery Client
Java ElastiCache Auto Discovery Client
(based on spymemcached)
Bibliotecas Cliente:
As bibliotecas oficiais de ElastiCache
para PHP, Java e .NET suportam Auto
Discovery se nós de Memcached
forem adicionados ou removidos
$telnet {cfg-endpoint} 11211
>config get cluster
$telnet {node1} 11211
>set mykey 0 60 6
>mydata
STORED
>get mykey
VALUE mykey 0 6
mydata
END
18. Clientes para o Amazon ElastiCache
• Bibliotecas oficiais para download:
– Java: baseada em spymemcached
– PHP: (várias versões)
– .NET
• Benefícios:
– Provê hashing consistente
– Realiza Auto Discovery (a cada 60s) para detectar nós adicionados
ou removidos
– Não requer reconfiguração ou dar HUP em instâncias em execução
19. # PHP
$server_endpoint =
"mycache.z2vq55.cfg.usw2.cache.amazonaws.com";
$server_port = 11211;
$cache = new Memcached();
$cache->setOption(
Memcached::OPT_CLIENT_MODE, Memcached::DYNAMIC_CLIENT_MODE);
# Use o endpoint de configuração como o único servidor
$cache->addServer($server_endpoint, $server_port);
# A biblioteca localiza os nós automaticamente
$cache->set("key", "value");
Descoberta automática de nós
Sempre use o endpoint
de configuração
21. Quem tem as chaves?
Com múltiplos servidores de Memcached, onde armazenar as chaves?
Primeira abordagem:
Baseada no módulo do número de
servidores:
Desvantagem:
Ao adicionar novo cluster,
grande número de chaves
precisa ser reassociado:
Se você for de
3 servidores 4
servidores,
¾ = 75% das chaves
serão impactadas
num_nós_antigos
num_nós novos= ( )server_list = [
'mycache.0001.usw2.cache.amazonaws.com:11211',
'mycache.0002.usw2.cache.amazonaws.com:11211'
]
server_index = hash(key) % server_list.length
server = server_list[server_index]
22. Melhor ainda: hashing consistente
Uma explicação bem simplificada de algo que pode gerar algumas horas de discussão
# número de chaves impactadas com +/-
nós :
aproximadamente ( 1 – método via módulo)
Ex: se for de 3 servidores 4 servidores,
(1 - ¾) ~ 25% das chaves serão impactadas
①Imagine o anel
as vezes chamado de ‘continuum’
②Divida-o em partições
(um número fixo “N”)
Nesse caso, 24, em geral 2(32 or 160)
③Servidores são “mapeados” nas partições
spread throughout the ring, not even like this
1
2
3
4
5
6
789
10
11
12
13
14
15
16
Nó-A
Nó-B
Nó-C
Nó-C
Nó-B
Nó-A
④ Bibliotecas cliente fazem o hash da chave e
usam % N para determinar onde elas devem
a maior partição mais próxima no anel
“uma estratégia de sharding
para a todos governar
24. Memcached internamente
SEM
MEMÓRIA
Slab Classe 42
Tam. Chunk: 1MB
Chunks/Pg: 1
> stats slabs
Slab Classe 27
Tam. Chunk: 42KB
Chunks/Pg: 24
Slab Classe 15
Tam. Chunk: 1800B
Chunks/Pg: 582
Slab Classe 1
Tam. Chunk: 96B
Chunks/Pg: 10922
Memory pool
25. >stats cachedump 1 100
ITEM mykey3 [4 b; 1414372065 s]
>stats slabs
STAT 1:used_chunks 1
>get mykey3
END
>stats cachedump 1 100
END
>stats slabs
STAT 1:used_chunks 0
Gerenciamento da memória
• Não existe processo ‘reaper’ (anjo
da morte) pra limpeza da memória
• Eviction no Memcached limpa a
memória com base em LRU
• LRU = Menos recentemente usado
• Tempo de expiração não é
‘mantenha até’, mas sim ‘não
válido após’
• Por padrão, páginas não se
movem
• Use ‘parameter groups’ para
alterar comportamento padrão
Exemplo
28. “Os serviços da AWS nos ajudaram a fazer da Black
Friday um dia comum, ao invés de um pesadelo para o
time de engenharia”
• A Kanui é um e-commerce
especializado em artigos
esportivos e um dos líderes em
seu segmento
• Como o site é a base de todo o
nosso negócio, alta
disponibilidade é imprescindível.
“Com alta
escalabilidade,
interoperabilidade com
ferramentas open source,
suporte eficaz e visibilidade de
custos detalhada, a AWS se
tornou uma escolha natural”
- Willy Barro, CTO
29. • Disponibilidade - Zero Downtime. Um
minuto fora do ar é um minuto sem
vendas
• Escalabilidade - Suportar a Black Friday,
mobile push notifications e promoções
relâmpago
• Custos - Visibilidade detalhada de todos
os custos
• Tools - Ferramentas e bibliotecas para
gerenciar e monitorar a infraestrutura
O Desafio
33. Revisando o cenário tipico de web 2.0
ELB Aplicação
APIs Externas
fácil de adicionar
34. Começe com “cache preguiçoso” (‘lazy’)
• Muito benéfico para padrões
de acesso de intensa leitura
– Informação de perfil de usuário
– Dados sumarizados
• Muitas bibliotecas encapsulam
esse padrão
# Pseudocódigo em Python:
def get_user(user_id):
# Verifica o Cache
record = cache.get(user_id)
if record is None:
# Consulta a Base de Dados
record = db.query(
”select * from users where id = ?”,
user_id)
# Popula o Cache
cache.set(user_id, record)
return record
# Código da Aplicação
user = get_user(17)
35. E como ficam as escritas e leituras?
• Cache atualizado em
tempo real
• Trata atualizações no perfil
dos usuários
• Pode também escolher
remover a chave e deixar o
cache “preguiçoso” agir
# Pseudocódigo em Python:
def save_user(user_id, values):
# Salva na Base de Dados
record = db.query(
"update users ... where id = ?",
user_id, values)
# Grava no Cache
cache.set(user_id, record)
return record
# Código da Aplicação
user = save_user(17, {"name": ”Sauron"})
36. Persistência de Sessão
1) Instale o“memcache”
‘yum install php-pecl-memcache’
2) Configure o “php.ini”
session.save_handler = memcache
session.save_path =
"tcp://node1:11211, tcp://node2:11211"
3) Configure o “php.d/memcache.ini”
memcache.hash_strategy = consistent
memcache.allow_failover = 1
memcache.session_redundancy = 3
4) Re-inicie o httpd
5) Comece a usar dados da sessão:
<?php
session_start();
$_SESSION[”REQUEST_TIME"] = time()];
?>
• Para situações onde você
precisa armazenar a sessão
externamente
– Em especial quando se usa
ASG (auto scaling groups)
– Cache é otimizado para
altos volumes de leitura
Reference:
http://php.net/manual/en/book.memcache.php *strange memcache bug needs n+1
Exemplo em PHP
37. Fonte em https://github.com/martinrusev/django-redis-sessions
1) Instale o django-redis-sessions:
’pip install django-redis-sessions’
2) Altere o ‘settings.py’:
SESSION_ENGINE = 'redis_sessions.session'
SESSION_REDIS_HOST = 'mycache.hnou5c.ng.0001.usw2.cache.amazonaws.com'
SESSION_REDIS_PREFIX = 'djangosession’
3) Confirme que as sessões estão sendo persistidas no Redis:
mycache.hnou5c.ng.0001.usw2.cache.amazonaws.com:6379> keys "djangosession*"
1) "djangosession:rm6az4eesd7ruc5sibbmf6rlhrwinevs"
Exemplo com Django
Persistência de Sessão
38. Taxa Limite
• Caso ideal caso você queira por
exemplo limitar a quantidade de
request por segundo a uma API
• Usa o comando INCR
ELB
API
Externa Referência: http://redis.io/commands/INCR
FUNCTION LIMIT_API_CALL(APIaccesskey)
limit = HGET(APIaccesskey, “limit”)
time = CURRENT_UNIX_TIME()
keyname = APIaccesskey + ":”+time
count = GET(keyname)
IF current != NULL && count > limit
THEN
ERROR ”API request limit
exceeded"
ELSE
MULTI
INCR(keyname)
EXPIRE(keyname,10)
EXEC
PERFORM_API_CALL()
END
39. Fila de Tarefas
• Basicamente, qualquer coisa pode
ser feita de forma assíncrona for a
da experiência imediata do
usuário:
– Envio de email
– Processamento de imagem ou
video
– Conversão de documentos
– Geração de relatórios
– Limpeza de cache
– Interação com API’s externas
– search indexing
Baseada em Ruby Baseada em Python
http://python-rq.orghttp://github.com/resque
Redis-Queue
40. Publicação/Subscrição
• Casos de Uso:
• Mensagens dentro do
aplicativo
• Janelas de web chat
• Chat/invite para jogos
online
• Não é persistente
• Mais detalhes
http://www.rediscookbook.org
• Usando Pub/Sub para
comunicação assíncrona
SUBSCRIBE “mordor:chat”
SUBSCRIBE “mordor:chat”
SUBSCRIBE
“mordor:chat”
SUBSCRIBE
“mordor:chat”
PUBLISH “mordor:chat” “Estou de olho em você!”
Estou de olho em você!
Estou de olho em você!
Estou de olho em você!
Estou de olho em você!
(integer) 4
>
>
>
>
>
41. var clients = [];
var echo = sockjs.createServer();
echo.on('connection', function(conn) {
clients.push(conn);
conn.on('data', function(message) {
for (var i=0; i<clients.length; i++) {
clients[i].write(message);
}
});
});
WebSockets
http://goldfirestudios.com/blog/136/Horizontally-Scaling-Node.js-and-WebSockets-with-Redis
1
4
3
2
// configure o redis e pub/sub, subscreva ao tópico
// ao receber uma msg, publique pra todos os clientes
// para enviar uma mensagem, publique no redis
Comece com um esqueleto:
Exemplo com Node.js
sub.on('message', function(channel, msg) {
for (var i=0; i<clients.length; i++) {
clients[i].write(msg);
}
});
pub.publish('websocket', message);
var redis = require('node-redid');
var pub = redis.createClient(port, host);
var sub = redis.createClient(port, host);
sub.subscribe('websocket');
npm install node-redis
42. E o favorito de todos: leaderboard!
Não se eu
destruir primeiroÉ meu!
• Fácil de implementar usando Sorted
Sets
• Garante simultaneamente:
– unicidade and ordenação
ZADD "leaderboard" 1201 "Gollum”
ZADD "leaderboard" 963 "Sauron"
ZADD "leaderboard" 1092 "Bilbo"
ZADD "leaderboard" 1383 "Frodo”
ZREVRANGE "leaderboard" 0 -1
1) "Frodo"
2) "Gollum"
3) "Bilbo"
4) "Sauron”
ZREVRANK "leaderboard" "Sauron"
(integer) 3
Example
def save_score(user, score):
redis.zadd("leaderboard", score,
user)
def get_rank(user)
return redis.zrevrank(user) + 1
43. Integração com NGINX
/foo
http {
...
include includes/memc-backend.conf
...
server {
# GET /foo?cmd=get&key=bar
location /foo {
set $memc_cmd $arg_cmd;
set $memc_key $arg_key;
memc_cmds_allowed get;
memc_connect_timeout 5s;
memc_pass backend;
}
}
- includes/memc-backend.conf
upstream backend {
server 172.16.1.1:11211;
server 172.16.1.2:11211;
}
1 Comece com nginx
2 Compile no
memc-nginx-module
3 Configure o segmento
de URI para usar o Memcached
45. auto discovery com Serf
ElastiCache
NODE
+
−
SNS
TOPICO
SQS
MENSAGEM
API de Auto
Scaling
AutoScalingGroup
Protocolo Gossip
S S S S S
S
S
S
S
S
S
S
S
S
S
S
?) Mudança no Cache
?) Mudança no ASG
> Notifica Agente Serf
Script Python:
46. auto discovery com Serf
Usage: percolator <region-name> <app-autoscale-group> <elasticache-cluster> <sqs-queue> <serf-role>
# Reconfigure o serf se ocorrer qualquer mudança no grupo de autoscaling
appautoscalegroup_ips = getAppAutoscalegroupIps(arg_region, arg_appautoscalegroup)
if len(appautoscalegroup_ips) > 0:
...
if ((hashlib.md5(open(serfconfig_file, 'rb').read()).hexdigest()) !=
(hashlib.md5(serfconfig).hexdigest())):
...
sysLog(”Grupo de autoscaling "%s" mudou – atualizando o cluster serf" % arg_appautoscalegroup)
text_file.write(serfconfig)
os.system(serfdaemon_reload)
# Mande uma mensagem de atualização pelo serf caso encontre uma mensagem de atualização do cluster
de elasticache na fila do SQS
if checkSqsQueue(arg_region, arg_sqsqueue, debug):
elasticachenode_addresses = getElasticacheClusterAddresses(arg_region, arg_elasticachecluster)
...
os.system(serfdaemon_event % nodelist[1:])
sysLog(”Despachando evento de atualização de aplicação no serf: %s" % nodelist[1:])
47. E por fim
Lembre-se:
• Nenhum dos dois motores de
cache tem qualquer noção
significativa sobre autenticação ou
criptografia
• Inicie seus clusters de cache
dentro de subnets privadas da sua
VPC
• Utilize regras apropriadas de
security group para controlar o
acesso aos seus nós de cache
E o que fazer a partir daqui?
• Automatize a atividade do seu
cluster
• Tire vantagem da infra de Multi-AZ
• Identifique novos casos de uso que
se beneficiariam com cache
• Use o Amazon SNS e
monitoramento
Segurança
49. Considerações gerais de planejamento
ElastiCache para Memcached
• Tamanho dos nós
– http://docs.aws.amazon.com/AmazonElastiC
ache/latest/UserGuide/CacheNode.Memcach
ed.html
• Otimização
– http://docs.aws.amazon.com/AmazonElastiC
ache/latest/UserGuide/CacheParameterGrou
ps.Memcached.html -
CacheParameterGroups.Memcached.Connec
tionOverhead
• Distribuição em Multi-AZs
– Distribua os nós do Memcached entre
múltiplas AZ’s
ElastiCache para Redis
• Tamanho dos nós
– http://docs.aws.amazon.com/AmazonElastiCa
che/latest/UserGuide/CacheNode.Redis.html
• Otimização
– Redis é single threaded, então escolher um
nó com processador mais rápido vai permitir
melhor performance / maior throughput
• Distribuição em Multi-AZs
– ElastiCache para Redis suporta cluster de nó
único apenas
– Certifique-se de que a(s) replica(s) de leitura
está(ão) em uma AZ diferente do cluster
primário
Mudar o tamanho do nó causa impacto significativo na
aplicação, então escolha o tamanho do nó cuidadosamente
50. Melhores Práticas e Lições Aprendidas
• ElastiCache para Memcached
– Encapsule o acesso ao Memcached em comandos Hystrix para
permitir controle de timeouts e atuar como “circuit breaker”
• Para saber mais sobre o Hystrix, veja https://github.com/Netflix/Hystrix
– Use chamadas de API assíncronas no lugar de chamadas
síncronas
• No passado, tivemos situações de time out de operações
– Diagnosticamos a causa no SDK de ElastiCache para Java e realizamos
a correção
• Mudamos a implementação para executar chamadas assíncronas
com timeout pequeno e re-tentativas
– Estamos trabalhando para reduzir ainda mais o limite de timeout
51. Melhores Práticas e Lições Aprendidas
• ElastiCache para Memcached (continuação)
– Métricas do Amazon CloudWatch:
• CPUUtilization, GetHills, GetMisses, IncrementHits, IncrementMisses,
DeleteHits, NewItems, UnusedMemory, FreeableMemory
52. Melhores Práticas e Lições Aprendidas
• ElastiCache para Redis
– Failover automático do cluster primário*
• AWS cuida da recuperação automática do nó principal, porém essa
operação pode levar até 10 minutos
• A promoção de uma réplica de leitura qualquer a nó principal é uma
operação manual
– Considere implementar um cache de 2 camadas com múltiplas
réplicas de leitura
• Requer implementação em código para gerenciar nó
“principal/preferencial” versus replicas de leitura “alternativas”
• Provê grau adicional de proteção no caso de falha de AZ e
indisponibilidade do cluster principal.
** Baseado em testes feitos antes do anúncio da funcionalidade. Vejam o artigo do blog da AWS chamado
“Multi-AZ Support/Auto Failover for ElastiCache for Redis”.
53. Melhores Práticas e Lições Aprendidas
• ElastiCache para Redis (continuação)
– Métricas do Amazon CloudWatch
• Métricas de nível do nó: CPUUtilization, SwapUsage,
FreeableMemory, NetworkBytesIn, NetworkBytesOut
• Métricas de nível do ElastiCache: Replication Lag,
CurrConnections, CacheHits, Cachemisses