SlideShare uma empresa Scribd logo
1 de 56
Baixar para ler offline
1
Michael Labib, AWS Specialist Solutions Architect
March 2017
Amazon ElastiCache Deep Dive: Best
Practices, Usage Patterns and Caching
Strategies
Amazon
ElastiCache
©	2017,	Amazon	Web	Services,	Inc.	or	its	Affiliates.	All	rights	reserved.
Learning Objectives
§ Learn how to integrate Amazon ElastiCache in your workloads
§ Understand the benefits of an In-Memory data store
§ Learn how to apply various caching strategies in your
applications
§ Hands on demonstration using Amazon ElastiCache
2
In-Memory Key-Value NoSQL Store
High-performance
Redis and Memcached
Fully managed; Zero admin
Highly Available and Reliable
Hardened by Amazon
Amazon
ElastiCache
Redis – The In-Memory Leader
Powerful
~200 commands + Lua scripting
In-memory data structure server
Utility data structures
strings, lists, hashes, sets, sorted
sets, bitmaps & HyperLogLogs
Simple
Atomic operations
supports transactions
Ridiculously fast!
<1ms latency for most commands
Highly Available
replication
Persistence
Open Source
Redis Data Structure Fundamentals
Redis Data Types - String
• Binary safe.
• Can contain a max value of 512 MB.
• Great for storing Counters, HTML, Images, JSON objects, etc.
valueKey
Key
Redis Data Types - Set
• A collection of unique unordered Strings values
• Great for Deduplicating and Grouping related information
• Can union, intersect and find differences between other SETS
value: 75 value: 1 value: 39 value: 63 value: 63
Duplicate!
value: 63
Key
Redis Data Types - Sorted Set
• A collection of unique Strings values ordered by score
• Great for Deduplication, Grouping and Sorting related information
• Get specific range and rank of elements based on score
value: mike
score: 50 score: 75
value: dan value: emma
score: 79
value: lina
score: 123
value: luke
score: 350
Key
Redis Data Types - List
HEAD value 1 value 2 value 3 TAIL
• A collection of Strings stored in the order of their insertion
• Push and Pop from head or tail of the list or insert at specific value position
• Great for message queues and timelines
Key
Redis Data Types - Hashes
Field 1 value 1
• A collection of unordered fields and values
• Great for representing objects
• Ability to Add, GET, and DEL individual fields by Key
Field 2 value 2
Field 3 value 3
Field 4 value 4
Redis Data Types & More!
Run Lua scripts Geospatial Queries! Pub / Sub
Amazon ElastiCache
Amazon
ElastiCache
Redis Multi-AZ with Automatic Failover
Open-Source Compatible
Fully Managed
Enhanced Redis Engine
Easy to Deploy, Use and Monitor
No Cross-AZ Data Transfer Costs
Extreme Performance at Cloud Scale
ElastiCache - Customer Value
Usage Patterns
Caching
Clients
Amazon
ElastiCache
Amazon
DynamoDB
Cache
Reads/Writes
DB
Reads/Writes
Elastic Load
Balancing
Amazon
EC2
Amazon
RDS
ü Better	Performance	- Microseconds	Speed		
ü Cost	Effective
ü Higher	Throughput	- ~	20M	/	RPS
DB
Reads/Writes
AWS
Lambda
Caching
# Write Through
def save_user(user_id, values):
record = db.query("update users ... where id = ?", user_id, values)
cache.set(user_id, record, 300) # TTL
return record
# Lazy Load
def get_user(user_id):
record = cache.get(user_id)
if record is None:
record = db.query("select * from users where id = ?", user_id)
cache.set(user_id, record, 300) # TTL
return record
# App code
save_user(17, {"name": “Big Mike"})
user = get_user(17)
Amazon
ElastiCache
Caching
# Write Through
def save_user(user_id, values):
record = db.query("update users ... where id = ?", user_id, values)
cache.set(user_id, record, 300) # TTL
return record
# Lazy Load
def get_user(user_id):
record = cache.get(user_id)
if record is None:
record = db.query("select * from users where id = ?", user_id)
cache.set(user_id, record, 300) # TTL
return record
# App code
save_user(17, {"name": “Big Mike"})
user = get_user(17)
Amazon
ElastiCache
Write Through
1. Updated DB
2. SET in Cache
Lazy Load
1. GET from cache.
2. If MISS get from DB
3. Then SET in Cache
1) Install php, apache php memcache client
e.g. yum install php apache php-pecl-memcache
2) Configure “php.ini”
session.save_handler = memcache
session.save_path=
"tcp://node1:11211, tcp://node2:11211"
3) Configure “php.d/memcache.ini”
memcache.hash_strategy = consistent
memcache.allow_failover = 1
memcache.session_redundancy=3*
4) Restart httpd
5) Begin using Session Data:
Auto Scaling group
For situations where you need an
external session store
• Especially needed when using ASGs
• Cache is optimal for high-volume
reads
PHP Example
Session Caching
https://github.com/mikelabib/elasticache-memcached-php-demo
IoT Device Data
AWS
IoT
AWS
IoT Device
Amazon
EC2
AWS
Lambda
Hot Data
Amazon
DynamoDB
Longer
Retention
Data Lake
Amazon
S3
Amazon
Glacier
Cold Data
Amazon
Kinesis
Firehose
Amazon
ElastiCache
Lambda Trigger for IoT Rule
var redis = require("redis");
exports.handler = function(event, context) {
client = redis.createClient("redis://your-redis-endpoint:6379");
multi = client.multi();
multi.zadd("SensorData", date, event.deviceId);
multi.hmset(event.deviceId, "temperature", event.temperature,
"deviceIP", event.deviceIP,
"humidity", event.humidity,
"awsRequestId", context.awsRequestId);
multi.exec(function (err, replies) {
if (err) {
console.log('error updating event: ' + err);
context.fail('error updating event: ' + err);
} else {
console.log('updated event ' + replies);
context.succeed(replies);
client.quit();
}
});
}
AWS
Lambda
Amazon
ElastiCache
AWS IoT
Lambda Trigger for IoT Rule
var redis = require("redis");
exports.handler = function(event, context) {
client = redis.createClient("redis://your-redis-endpoint:6379");
multi = client.multi();
multi.zadd("SensorData", date, event.deviceId);
multi.hmset(event.deviceId, "temperature", event.temperature,
"deviceIP", event.deviceIP,
"humidity", event.humidity,
"awsRequestId", context.awsRequestId);
multi.exec(function (err, replies) {
if (err) {
console.log('error updating event: ' + err);
context.fail('error updating event: ' + err);
} else {
console.log('updated event ' + replies);
context.succeed(replies);
client.quit();
}
});
}
AWS
Lambda
Amazon
ElastiCache
AWS IoT
Transaction block start
SET
• Sorted Set
• Hash
Transaction block end
https://github.com/mikelabib/IoT-Sensor-Data-and-Amazon-ElastiCache
Streaming Data
Amazon
EC2
AWS
Lambda
Amazon
Kinesis
Streams
Amazon
DynamoDB
Hot Data
Longer
Retention
Amazon
ElastiCache
Data
Sources
Amazon	
Kinesis	
Analytics
AWS
Lambda
Amazon	
Kinesis	
Streams
Amazon	
Kinesis	
Streams
Data
Sources
Amazon
ElastiCache
De-duplicate,
Aggregate, Sort,
Enrich, etc.
cleansed
stream
Streaming Data Enrichment
Streaming Data Analytics
Data
Sources
1
Amazon
Kinesis
Streams
Amazon
EMR
(Spark Streaming)
Amazon
S3
Amazon
EC2
Amazon Redshift
Spark Redis Connector
Data Lake
Amazon
ElastiCache
ElastiCache Redis with cluster mode
Features
• Horizontal Scale of up to 3.5 TiB per cluster
• Up to 20 million reads per second
• Up to 4.5 million writes per second
• Enhanced Redis Engine within ElastiCache
• Up to 4x times failover than with Redis 2.8
• Cluster-level Backup and Restore
• Fully Supported by AWS CloudFormation
• Ability to resize your cluster
• Available in all AWS Regions
Redis 3.2 Support
Amazon
ElastiCache
Scaling with Redis Cluster
Redis Cluster – Automatic Client-Side Sharding
S5
S1
S2
S4 S3
Client
• 16384 hash slots per Cluster
• Slot for a key is CRC16 modulo {key}
• Slots are distributed across the Cluster
into Shards
• Developers must use a Redis cluster client!
• Clients are redirected to the correct shard
• Smart clients store a map
Shard S1 = slots 0 – 3276
Shard S2 = slots 3277 – 6553
Shard S3 = slots 6554 – 9829
Shard S4 = slots 9830 – 13106
Shard S5 = slots 13107 - 16383
Availability Zone A
slots 0 - 5454 slots 5455 – 10909
Redis Cluster
Redis Cluster – Architecture
slots 10910 – 16363
Availability Zone B Availability Zone C
slots 5455 – 10909
slots 5455 – 10909slots 0 - 5454 slots 0 - 5454
slots 10910 – 16363
slots 10910 – 16363
Redis Cluster – Multi AZ
A cluster consists of 1 to 15 shards
example: 3 shard cluster,
2 read replicas
Availability Zone A
slots 0 - 5454
Redis Cluster
Redis Cluster – Architecture
slots 10910 – 16363
Availability Zone B Availability Zone C
slots 5455 – 10909
slots 5455 – 10909slots 0 - 5454 slots 0 - 5454
slots 10910 – 16363
Shard
ReplicaReplicaPrimary
Each shard has a Primary Node
and up to 5 replica nodes
slots 5455 – 10909
slots 10910 – 16363
Availability Zone A
slots 0 - 5454 slots 5455 – 10909
Redis Cluster
Redis Cluster – Architecture
slots 10910 – 16363
Availability Zone B Availability Zone C
slots 5455 – 10909
slots 5455 – 10909
Shard
ReplicaReplica Primary
Each shard has a Primary Node
and up to 5 replica nodes
slots 0 - 5454 slots 0 - 5454
slots 10910 – 16363
slots 10910 – 16363
Availability Zone A
slots 0 - 5454
Redis Cluster
Redis Cluster – Architecture
slots 10910 – 16363
Availability Zone B Availability Zone C
slots 10910 – 16363
slots 10910 – 16363
Shard
Replica PrimaryReplica
Each shard has a Primary Node
and up to 5 replica nodes
slots 5455 – 10909 slots 0 - 5454
slots 5455 – 10909
slots 0 - 5454 slots 5455 – 10909
Redis Failure Scenarios
Availability Zone A
slots 0 - 5454 slots 5455 – 10909
Redis Cluster
slots 10910 – 16363
Availability Zone B Availability Zone C
slots 5455 – 10909 slots 5455 – 10909slots 0 - 5454 slots 0 - 5454
slots 10910 – 16363 slots 10910 – 16363
Scenario 1: Single Primary Shard Failure
Availability Zone A
slots 0 - 5454 slots 5455 – 10909
Redis Cluster
Scenario 1: Single Primary Shard Failure
slots 10910 – 16363
Availability Zone B Availability Zone C
slots 5455 – 10909 slots 5455 – 10909slots 0 - 5454 slots 0 - 5454
slots 10910 – 16363
Mitigation:
1. Promote Read Replica Node (~15-30s)
2. Repair Failed Node
slots 10910 – 16363
Availability Zone A
slots 0 - 5454 slots 5455 – 10909
Redis Cluster
Scenario 2: Majority of Primary Shards Fail
slots 10910 – 16363
Availability Zone B Availability Zone C
slots 5455 – 10909 slots 5455 – 10909slots 0 - 5454 slots 0 - 5454
slots 10910 – 16363slots 10910 – 16363
Availability Zone A
slots 0 - 5454 slots 5455 – 10909
Redis Cluster
slots 10910 – 16363
Availability Zone B Availability Zone C
slots 5455 – 10909 slots 5455 – 10909slots 0 - 5454 slots 0 - 5454
Mitigation: Redis enhancements on ElastiCache
• Promote Read Replica Nodes
• Repair Failed Nodes
slots 10910 – 16363slots 10910 – 16363
Scenario 2: Majority of Primary Shards Fail
How do I migrate from a non-clustered Redis
environment to a clustered Redis environment
on ElastiCache?
Migrating to a Cluster
1. Create new Cluster
2. Make snapshot of old CacheCluster
3. Restore snapshot to new Cluster
4. Update Client
5. Terminate old Cluster
S5
S1
S2
S4 S3
Client
Old
< 3.2
Client
How do change the number of Redis Shards I
have allocated?
1. Create new Cluster
2. Make snapshot of old CacheCluster
3. Restore snapshot to new Cluster
4. Terminate old Cluster
Resizing your Cluster
Architecting for Availability
• Upgrade to the latest engine version – 3.2.4
• Use Newer Instance types when possible (e.g. M4 vs M3)
• Set reserved-memory to 30% of total available memory
• Swap usage should be zero or very low. Scale if not.
• Put read-replicas in a different AZ from the primary
• For important workloads use 2 read replicas per primary
• Write to the primary, read from the read-replicas
• Take snapshots from read-replicas to support your RPO
• For Redis Cluster have odd number of shards.
Monitoring Your Cluster
Key ElastiCache CloudWatch Metrics
• CPUUtilization
• Memcached – up to 90% ok
• Redis – divide by cores (ex: 90% / 4 = 22.5%)
• SwapUsage low
• CacheMisses / CacheHits Ratio low / stable
• Evictions near zero
• Exception: Russian doll caching
• CurrConnections stable
• Setup alarms with CloudWatch Metrics
• Whitepaper: http://bit.ly/elasticache-whitepaper
ElastiCache Modifiable Parameters
• Maxclients: 65000 (unchangeable)
• Use connection pooling
• timeout – Closes a connection after its been idle for a given interval
• tcp-keepalive – Detects dead peers given an interval
• Databases: 16 (Default) for non-clustered mode
• Logical partition
• Reserved-memory: 0 (Default)
• Recommended
§ 50% of maxmemory to use before 2.8.22
§ 30% after 2.8.22 – ElastiCache
• Maxmemory-policy:
• The eviction policy for keys when maximum memory usage is reached
• Possible values: volatile-lru, allkeys-lru, volatile-random, allkeys-random,
volatile-ttl, noeviction
Caching Strategies
Java App Java App
Web Server Web Server
Database Cache
Customers
AZ1 AZ2
Distributed
Cache
Demo workload topology: Customer Data
CustomerDB Primary CustomerDB Standby
Caching Strategies
1. Cache Database SQL ResultSet (Row)
PRO
When data retrieval logic is abstracted from the code consuming the ResultSet, caching the ROW can
be extremely effective and can be implemented against any RDBMS.
CON
Data retrieval still requires extracting values from the ROW and does not further simplify data access;
It only reduces data retrieval latency.
SELECT * FROM x WHERE y
ID First_Name Last_Name City
123Michael Labib Chicago
ResultSet Object (ROW) Key: Query, Value: CRS as byte array
Caching Strategies
2. Cache database values into custom format in a Redis String
SELECT * FROM x WHERE y
ID First_Name Last_Name City
123Michael Labib Chicago
Key: 123, Value: firstNameString firstName = rs.getString(First_Name)
PRO
Very easy to implement. Cache any desired database fields and values into a Redis String. For example,
store your retrieved data into a JSON object stored in a Redis String.
CON
Minor. Application code will leverage different types of Objects when retrieving data (i.e. Redis data
structures and database results when needed)
Caching Strategies
3. Cache serialized application object (e.g. Java Object )
SELECT * FROM x WHERE y
ID First_Name Last_Name City
123Michael Labib Chicago
Key: CUSTOMER_ID:123,
Value: Customer Object as byte array
String firstName = rs.getString(First_Name);
customer.setFirstName(firstName);
String lastName = rs.getString(Last_Name);
customer.setLastName(lastName);
PRO
Utilize application objects in their native structure and data state when serialized.
CON
Advanced application development use case.
Caching Strategies
4. Leverage advanced Redis Data Structures for cached data
SELECT * FROM x WHERE y
ID First_Name Last_Name City
123Michael Labib Chicago
Key: CUSTOMER_ID:123, Value: rsHash
String firstName = rs.getString(First_Name);
rsHash.put(“firstName", firstName);
String lastName = rs.getString(Last_Name);
rsHash.put(“lastName", lastName);
jedis.hmset(“CUSTOMER_ID:123", rsHash);
PRO
In addition to reducing data retrieval latency, cache data into specific data structure that simplifies the
data access pattern.
CON
Minor. Application code will leverage different types of objects when retrieving data (i.e. Redis data
structures and database results when needed)
Demo Steps: Database Setup
• Create CustomerDB with Database of choice
• Load sample data
• Create sample or use mock tool https://www.mockaroo.com/
• Set appropriate security groups to grant access to EC2 SGs hosting your applications
• Enable port 3306 for your IP to use DB editor for convenience
CREATE table Customer (
CUSTOMER_ID INT
,FIRST_NAME VARCHAR(50)
,LAST_NAME VARCHAR(50)
,EMAIL VARCHAR(50)
,GENDER VARCHAR(50)
,CITY VARCHAR(50)
,STATE VARCHAR(50)
,ADDRESS VARCHAR(50)
,COUNTRY VARCHAR(50) );
INSERT into Customer (CUSTOMER_ID, FIRST_NAME, LAST_NAME, EMAIL, GENDER, CITY, STATE, ADDRESS, COUNTRY)
VALUES (1, 'Maria', 'Rodriguez', 'mrodriguez0@bbb.org', 'Female', 'Dallas', 'Texas', '63 8th Circle', 'United States');
Demo Steps: ElastiCache & EC2 Setup
• Create ElastiCache for Redis Cluster
• Test connectivity from EC2
• Set appropriate security groups to grant access to EC2 SGs hosting your applications
• Install Redis Client on the EC2 instances to command line Redis access
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make && make install
src/redis-cli -h your-elasticache-redis-endpoint -p 6379
Demo: Example Java application
uses
uses
implements
implements
<<interface>>
<<interface>>
DAO Pattern
uses
<<interface>>
uses
Demo: Data retrieval logic
Data retrieval details abstracted from consuming applications
1. Check cache first for requested data
2. If not available, retrieve the data from origin database
3. Cache any data not available previously set in cache for 5
minutes
4. Return results
https://github.com/mikelabib/amazon-elasticache-redis-caching-demos
Demo
Summary
§ Caching your data can greatly improve your data retrieval
speeds
§ There are various strategies you can implement to cache
your data, use the one that meets your needs
§ Caching your data can also greatly reduce your database
costs when architecting for scale
56

Mais conteúdo relacionado

Mais procurados

Architecting for High Availability
Architecting for High AvailabilityArchitecting for High Availability
Architecting for High AvailabilityAmazon Web Services
 
Amazon Route 53 - Webinar Presentation 9.16.2015
Amazon Route 53 - Webinar Presentation 9.16.2015Amazon Route 53 - Webinar Presentation 9.16.2015
Amazon Route 53 - Webinar Presentation 9.16.2015Amazon Web Services
 
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...Amazon Web Services Korea
 
Amazon RDS: Deep Dive - SRV310 - Chicago AWS Summit
Amazon RDS: Deep Dive - SRV310 - Chicago AWS SummitAmazon RDS: Deep Dive - SRV310 - Chicago AWS Summit
Amazon RDS: Deep Dive - SRV310 - Chicago AWS SummitAmazon Web Services
 
AWS Transit Gateway를 통한 Multi-VPC 아키텍처 패턴 - 강동환 솔루션즈 아키텍트, AWS :: AWS Summit ...
AWS Transit Gateway를 통한 Multi-VPC 아키텍처 패턴 - 강동환 솔루션즈 아키텍트, AWS :: AWS Summit ...AWS Transit Gateway를 통한 Multi-VPC 아키텍처 패턴 - 강동환 솔루션즈 아키텍트, AWS :: AWS Summit ...
AWS Transit Gateway를 통한 Multi-VPC 아키텍처 패턴 - 강동환 솔루션즈 아키텍트, AWS :: AWS Summit ...Amazon Web Services Korea
 
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...Amazon Web Services Korea
 
Introduction to Amazon Elastic File System (EFS)
Introduction to Amazon Elastic File System (EFS)Introduction to Amazon Elastic File System (EFS)
Introduction to Amazon Elastic File System (EFS)Amazon Web Services
 
DAT302_Deep Dive on Amazon Relational Database Service (RDS)
DAT302_Deep Dive on Amazon Relational Database Service (RDS)DAT302_Deep Dive on Amazon Relational Database Service (RDS)
DAT302_Deep Dive on Amazon Relational Database Service (RDS)Amazon Web Services
 
롯데이커머스의 마이크로 서비스 아키텍처 진화와 비용 관점의 운영 노하우-나현길, 롯데이커머스 클라우드플랫폼 팀장::AWS 마이그레이션 A ...
롯데이커머스의 마이크로 서비스 아키텍처 진화와 비용 관점의 운영 노하우-나현길, 롯데이커머스 클라우드플랫폼 팀장::AWS 마이그레이션 A ...롯데이커머스의 마이크로 서비스 아키텍처 진화와 비용 관점의 운영 노하우-나현길, 롯데이커머스 클라우드플랫폼 팀장::AWS 마이그레이션 A ...
롯데이커머스의 마이크로 서비스 아키텍처 진화와 비용 관점의 운영 노하우-나현길, 롯데이커머스 클라우드플랫폼 팀장::AWS 마이그레이션 A ...Amazon Web Services Korea
 
Amazon RDS & Amazon Aurora: Relational Databases on AWS - SRV206 - Atlanta AW...
Amazon RDS & Amazon Aurora: Relational Databases on AWS - SRV206 - Atlanta AW...Amazon RDS & Amazon Aurora: Relational Databases on AWS - SRV206 - Atlanta AW...
Amazon RDS & Amazon Aurora: Relational Databases on AWS - SRV206 - Atlanta AW...Amazon Web Services
 
re:Invent 2022 DAT326 Deep dive into Amazon Aurora and its innovations
re:Invent 2022  DAT326 Deep dive into Amazon Aurora and its innovationsre:Invent 2022  DAT326 Deep dive into Amazon Aurora and its innovations
re:Invent 2022 DAT326 Deep dive into Amazon Aurora and its innovationsGrant McAlister
 
세션 3: IT 담당자를 위한 Cloud 로의 전환
세션 3: IT 담당자를 위한 Cloud 로의 전환세션 3: IT 담당자를 위한 Cloud 로의 전환
세션 3: IT 담당자를 위한 Cloud 로의 전환Amazon Web Services Korea
 
(DAT401) Amazon DynamoDB Deep Dive
(DAT401) Amazon DynamoDB Deep Dive(DAT401) Amazon DynamoDB Deep Dive
(DAT401) Amazon DynamoDB Deep DiveAmazon Web Services
 
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift Update20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift UpdateAmazon Web Services Japan
 

Mais procurados (20)

Architecting for High Availability
Architecting for High AvailabilityArchitecting for High Availability
Architecting for High Availability
 
Amazon Route 53 - Webinar Presentation 9.16.2015
Amazon Route 53 - Webinar Presentation 9.16.2015Amazon Route 53 - Webinar Presentation 9.16.2015
Amazon Route 53 - Webinar Presentation 9.16.2015
 
Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기
 
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...
 
Amazon RDS: Deep Dive - SRV310 - Chicago AWS Summit
Amazon RDS: Deep Dive - SRV310 - Chicago AWS SummitAmazon RDS: Deep Dive - SRV310 - Chicago AWS Summit
Amazon RDS: Deep Dive - SRV310 - Chicago AWS Summit
 
AWS Elastic Compute Cloud (EC2)
AWS Elastic Compute Cloud (EC2) AWS Elastic Compute Cloud (EC2)
AWS Elastic Compute Cloud (EC2)
 
Deep Dive: Amazon RDS
Deep Dive: Amazon RDSDeep Dive: Amazon RDS
Deep Dive: Amazon RDS
 
AWS Transit Gateway를 통한 Multi-VPC 아키텍처 패턴 - 강동환 솔루션즈 아키텍트, AWS :: AWS Summit ...
AWS Transit Gateway를 통한 Multi-VPC 아키텍처 패턴 - 강동환 솔루션즈 아키텍트, AWS :: AWS Summit ...AWS Transit Gateway를 통한 Multi-VPC 아키텍처 패턴 - 강동환 솔루션즈 아키텍트, AWS :: AWS Summit ...
AWS Transit Gateway를 통한 Multi-VPC 아키텍처 패턴 - 강동환 솔루션즈 아키텍트, AWS :: AWS Summit ...
 
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
 
Introduction to Amazon Elastic File System (EFS)
Introduction to Amazon Elastic File System (EFS)Introduction to Amazon Elastic File System (EFS)
Introduction to Amazon Elastic File System (EFS)
 
DAT302_Deep Dive on Amazon Relational Database Service (RDS)
DAT302_Deep Dive on Amazon Relational Database Service (RDS)DAT302_Deep Dive on Amazon Relational Database Service (RDS)
DAT302_Deep Dive on Amazon Relational Database Service (RDS)
 
롯데이커머스의 마이크로 서비스 아키텍처 진화와 비용 관점의 운영 노하우-나현길, 롯데이커머스 클라우드플랫폼 팀장::AWS 마이그레이션 A ...
롯데이커머스의 마이크로 서비스 아키텍처 진화와 비용 관점의 운영 노하우-나현길, 롯데이커머스 클라우드플랫폼 팀장::AWS 마이그레이션 A ...롯데이커머스의 마이크로 서비스 아키텍처 진화와 비용 관점의 운영 노하우-나현길, 롯데이커머스 클라우드플랫폼 팀장::AWS 마이그레이션 A ...
롯데이커머스의 마이크로 서비스 아키텍처 진화와 비용 관점의 운영 노하우-나현길, 롯데이커머스 클라우드플랫폼 팀장::AWS 마이그레이션 A ...
 
Amazon RDS & Amazon Aurora: Relational Databases on AWS - SRV206 - Atlanta AW...
Amazon RDS & Amazon Aurora: Relational Databases on AWS - SRV206 - Atlanta AW...Amazon RDS & Amazon Aurora: Relational Databases on AWS - SRV206 - Atlanta AW...
Amazon RDS & Amazon Aurora: Relational Databases on AWS - SRV206 - Atlanta AW...
 
AWS RDS
AWS RDSAWS RDS
AWS RDS
 
re:Invent 2022 DAT326 Deep dive into Amazon Aurora and its innovations
re:Invent 2022  DAT326 Deep dive into Amazon Aurora and its innovationsre:Invent 2022  DAT326 Deep dive into Amazon Aurora and its innovations
re:Invent 2022 DAT326 Deep dive into Amazon Aurora and its innovations
 
세션 3: IT 담당자를 위한 Cloud 로의 전환
세션 3: IT 담당자를 위한 Cloud 로의 전환세션 3: IT 담당자를 위한 Cloud 로의 전환
세션 3: IT 담당자를 위한 Cloud 로의 전환
 
DevOps with Database on AWS
DevOps with Database on AWSDevOps with Database on AWS
DevOps with Database on AWS
 
Black Belt Online Seminar AWS Amazon S3
Black Belt Online Seminar AWS Amazon S3Black Belt Online Seminar AWS Amazon S3
Black Belt Online Seminar AWS Amazon S3
 
(DAT401) Amazon DynamoDB Deep Dive
(DAT401) Amazon DynamoDB Deep Dive(DAT401) Amazon DynamoDB Deep Dive
(DAT401) Amazon DynamoDB Deep Dive
 
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift Update20190122 AWS Black Belt Online Seminar Amazon Redshift Update
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
 

Semelhante a ElastiCache Deep Dive: Best Practices and Usage Patterns - March 2017 AWS Online Tech Talks

Fast Data at Scale - AWS Summit Tel Aviv 2017
Fast Data at Scale - AWS Summit Tel Aviv 2017Fast Data at Scale - AWS Summit Tel Aviv 2017
Fast Data at Scale - AWS Summit Tel Aviv 2017Amazon Web Services
 
DAT305_Amazon ElastiCache Deep Dive
DAT305_Amazon ElastiCache Deep DiveDAT305_Amazon ElastiCache Deep Dive
DAT305_Amazon ElastiCache Deep DiveAmazon Web Services
 
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...Amazon Web Services
 
Unleash the Power of Redis with Amazon ElastiCache
Unleash the Power of Redis with Amazon ElastiCache Unleash the Power of Redis with Amazon ElastiCache
Unleash the Power of Redis with Amazon ElastiCache Amazon Web Services
 
Unleash the Power of Redis with Amazon ElastiCache
Unleash the Power of Redis with Amazon ElastiCacheUnleash the Power of Redis with Amazon ElastiCache
Unleash the Power of Redis with Amazon ElastiCacheAmazon Web Services
 
Fast Data at Scale with Amazon ElastiCache for Redis
Fast Data at Scale with Amazon ElastiCache for RedisFast Data at Scale with Amazon ElastiCache for Redis
Fast Data at Scale with Amazon ElastiCache for RedisAmazon Web Services
 
Making (Almost) Any Database Faster and Cheaper with Caching
Making (Almost) Any Database Faster and Cheaper with CachingMaking (Almost) Any Database Faster and Cheaper with Caching
Making (Almost) Any Database Faster and Cheaper with CachingAmazon Web Services
 
Making (Almost) Any Database Faster and Cheaper with Caching
Making (Almost) Any Database Faster and Cheaper with CachingMaking (Almost) Any Database Faster and Cheaper with Caching
Making (Almost) Any Database Faster and Cheaper with CachingAmazon Web Services
 
AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...
AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...
AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...Amazon Web Services
 
Getting started with Amazon ElastiCache
Getting started with Amazon ElastiCacheGetting started with Amazon ElastiCache
Getting started with Amazon ElastiCacheAmazon Web Services
 
RedisConf17 - Doing More With Redis - Ofer Bengal and Yiftach Shoolman
RedisConf17 - Doing More With Redis - Ofer Bengal and Yiftach ShoolmanRedisConf17 - Doing More With Redis - Ofer Bengal and Yiftach Shoolman
RedisConf17 - Doing More With Redis - Ofer Bengal and Yiftach ShoolmanRedis Labs
 
RedisConf17 - Turbo-charge your apps with Amazon Elasticache for Redis
RedisConf17 - Turbo-charge your apps with Amazon Elasticache for RedisRedisConf17 - Turbo-charge your apps with Amazon Elasticache for Redis
RedisConf17 - Turbo-charge your apps with Amazon Elasticache for RedisRedis Labs
 
(DAT407) Amazon ElastiCache: Deep Dive
(DAT407) Amazon ElastiCache: Deep Dive(DAT407) Amazon ElastiCache: Deep Dive
(DAT407) Amazon ElastiCache: Deep DiveAmazon Web Services
 
Big data with amazon EMR - Pop-up Loft Tel Aviv
Big data with amazon EMR - Pop-up Loft Tel AvivBig data with amazon EMR - Pop-up Loft Tel Aviv
Big data with amazon EMR - Pop-up Loft Tel AvivAmazon Web Services
 
DAT341_Working with Amazon ElastiCache for Redis
DAT341_Working with Amazon ElastiCache for RedisDAT341_Working with Amazon ElastiCache for Redis
DAT341_Working with Amazon ElastiCache for RedisAmazon Web Services
 
(BDT208) A Technical Introduction to Amazon Elastic MapReduce
(BDT208) A Technical Introduction to Amazon Elastic MapReduce(BDT208) A Technical Introduction to Amazon Elastic MapReduce
(BDT208) A Technical Introduction to Amazon Elastic MapReduceAmazon Web Services
 
AWS Database Services-Philadelphia AWS User Group-4-17-2018
AWS Database Services-Philadelphia AWS User Group-4-17-2018AWS Database Services-Philadelphia AWS User Group-4-17-2018
AWS Database Services-Philadelphia AWS User Group-4-17-2018Bert Zahniser
 
Hands-On with Amazon ElastiCache for Redis - Workshop (DAT309-R1) - AWS re:In...
Hands-On with Amazon ElastiCache for Redis - Workshop (DAT309-R1) - AWS re:In...Hands-On with Amazon ElastiCache for Redis - Workshop (DAT309-R1) - AWS re:In...
Hands-On with Amazon ElastiCache for Redis - Workshop (DAT309-R1) - AWS re:In...Amazon Web Services
 

Semelhante a ElastiCache Deep Dive: Best Practices and Usage Patterns - March 2017 AWS Online Tech Talks (20)

Fast Data at Scale - AWS Summit Tel Aviv 2017
Fast Data at Scale - AWS Summit Tel Aviv 2017Fast Data at Scale - AWS Summit Tel Aviv 2017
Fast Data at Scale - AWS Summit Tel Aviv 2017
 
DAT305_Amazon ElastiCache Deep Dive
DAT305_Amazon ElastiCache Deep DiveDAT305_Amazon ElastiCache Deep Dive
DAT305_Amazon ElastiCache Deep Dive
 
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
 
Unleash the Power of Redis with Amazon ElastiCache
Unleash the Power of Redis with Amazon ElastiCache Unleash the Power of Redis with Amazon ElastiCache
Unleash the Power of Redis with Amazon ElastiCache
 
Unleash the Power of Redis with Amazon ElastiCache
Unleash the Power of Redis with Amazon ElastiCacheUnleash the Power of Redis with Amazon ElastiCache
Unleash the Power of Redis with Amazon ElastiCache
 
Fast Data at Scale with Amazon ElastiCache for Redis
Fast Data at Scale with Amazon ElastiCache for RedisFast Data at Scale with Amazon ElastiCache for Redis
Fast Data at Scale with Amazon ElastiCache for Redis
 
Making (Almost) Any Database Faster and Cheaper with Caching
Making (Almost) Any Database Faster and Cheaper with CachingMaking (Almost) Any Database Faster and Cheaper with Caching
Making (Almost) Any Database Faster and Cheaper with Caching
 
Making (Almost) Any Database Faster and Cheaper with Caching
Making (Almost) Any Database Faster and Cheaper with CachingMaking (Almost) Any Database Faster and Cheaper with Caching
Making (Almost) Any Database Faster and Cheaper with Caching
 
AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...
AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...
AWS Webcast - Backup & Restore for ElastiCache/Redis: Getting Started & Best ...
 
Getting started with Amazon ElastiCache
Getting started with Amazon ElastiCacheGetting started with Amazon ElastiCache
Getting started with Amazon ElastiCache
 
RedisConf17 - Doing More With Redis - Ofer Bengal and Yiftach Shoolman
RedisConf17 - Doing More With Redis - Ofer Bengal and Yiftach ShoolmanRedisConf17 - Doing More With Redis - Ofer Bengal and Yiftach Shoolman
RedisConf17 - Doing More With Redis - Ofer Bengal and Yiftach Shoolman
 
RedisConf17 - Turbo-charge your apps with Amazon Elasticache for Redis
RedisConf17 - Turbo-charge your apps with Amazon Elasticache for RedisRedisConf17 - Turbo-charge your apps with Amazon Elasticache for Redis
RedisConf17 - Turbo-charge your apps with Amazon Elasticache for Redis
 
(DAT407) Amazon ElastiCache: Deep Dive
(DAT407) Amazon ElastiCache: Deep Dive(DAT407) Amazon ElastiCache: Deep Dive
(DAT407) Amazon ElastiCache: Deep Dive
 
ElastiCache and Redis
ElastiCache and RedisElastiCache and Redis
ElastiCache and Redis
 
Big data with amazon EMR - Pop-up Loft Tel Aviv
Big data with amazon EMR - Pop-up Loft Tel AvivBig data with amazon EMR - Pop-up Loft Tel Aviv
Big data with amazon EMR - Pop-up Loft Tel Aviv
 
Amazon ElastiCache and Redis
Amazon ElastiCache and RedisAmazon ElastiCache and Redis
Amazon ElastiCache and Redis
 
DAT341_Working with Amazon ElastiCache for Redis
DAT341_Working with Amazon ElastiCache for RedisDAT341_Working with Amazon ElastiCache for Redis
DAT341_Working with Amazon ElastiCache for Redis
 
(BDT208) A Technical Introduction to Amazon Elastic MapReduce
(BDT208) A Technical Introduction to Amazon Elastic MapReduce(BDT208) A Technical Introduction to Amazon Elastic MapReduce
(BDT208) A Technical Introduction to Amazon Elastic MapReduce
 
AWS Database Services-Philadelphia AWS User Group-4-17-2018
AWS Database Services-Philadelphia AWS User Group-4-17-2018AWS Database Services-Philadelphia AWS User Group-4-17-2018
AWS Database Services-Philadelphia AWS User Group-4-17-2018
 
Hands-On with Amazon ElastiCache for Redis - Workshop (DAT309-R1) - AWS re:In...
Hands-On with Amazon ElastiCache for Redis - Workshop (DAT309-R1) - AWS re:In...Hands-On with Amazon ElastiCache for Redis - Workshop (DAT309-R1) - AWS re:In...
Hands-On with Amazon ElastiCache for Redis - Workshop (DAT309-R1) - AWS re:In...
 

Mais de Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateAmazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSAmazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsAmazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSAmazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceAmazon Web Services
 

Mais de Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

Último

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 

Último (20)

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 

ElastiCache Deep Dive: Best Practices and Usage Patterns - March 2017 AWS Online Tech Talks

  • 1. 1 Michael Labib, AWS Specialist Solutions Architect March 2017 Amazon ElastiCache Deep Dive: Best Practices, Usage Patterns and Caching Strategies Amazon ElastiCache © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
  • 2. Learning Objectives § Learn how to integrate Amazon ElastiCache in your workloads § Understand the benefits of an In-Memory data store § Learn how to apply various caching strategies in your applications § Hands on demonstration using Amazon ElastiCache 2
  • 3. In-Memory Key-Value NoSQL Store High-performance Redis and Memcached Fully managed; Zero admin Highly Available and Reliable Hardened by Amazon Amazon ElastiCache
  • 4. Redis – The In-Memory Leader Powerful ~200 commands + Lua scripting In-memory data structure server Utility data structures strings, lists, hashes, sets, sorted sets, bitmaps & HyperLogLogs Simple Atomic operations supports transactions Ridiculously fast! <1ms latency for most commands Highly Available replication Persistence Open Source
  • 5. Redis Data Structure Fundamentals
  • 6. Redis Data Types - String • Binary safe. • Can contain a max value of 512 MB. • Great for storing Counters, HTML, Images, JSON objects, etc. valueKey
  • 7. Key Redis Data Types - Set • A collection of unique unordered Strings values • Great for Deduplicating and Grouping related information • Can union, intersect and find differences between other SETS value: 75 value: 1 value: 39 value: 63 value: 63 Duplicate! value: 63
  • 8. Key Redis Data Types - Sorted Set • A collection of unique Strings values ordered by score • Great for Deduplication, Grouping and Sorting related information • Get specific range and rank of elements based on score value: mike score: 50 score: 75 value: dan value: emma score: 79 value: lina score: 123 value: luke score: 350
  • 9. Key Redis Data Types - List HEAD value 1 value 2 value 3 TAIL • A collection of Strings stored in the order of their insertion • Push and Pop from head or tail of the list or insert at specific value position • Great for message queues and timelines
  • 10. Key Redis Data Types - Hashes Field 1 value 1 • A collection of unordered fields and values • Great for representing objects • Ability to Add, GET, and DEL individual fields by Key Field 2 value 2 Field 3 value 3 Field 4 value 4
  • 11. Redis Data Types & More! Run Lua scripts Geospatial Queries! Pub / Sub
  • 13. Amazon ElastiCache Redis Multi-AZ with Automatic Failover Open-Source Compatible Fully Managed Enhanced Redis Engine Easy to Deploy, Use and Monitor No Cross-AZ Data Transfer Costs Extreme Performance at Cloud Scale ElastiCache - Customer Value
  • 16. Caching # Write Through def save_user(user_id, values): record = db.query("update users ... where id = ?", user_id, values) cache.set(user_id, record, 300) # TTL return record # Lazy Load def get_user(user_id): record = cache.get(user_id) if record is None: record = db.query("select * from users where id = ?", user_id) cache.set(user_id, record, 300) # TTL return record # App code save_user(17, {"name": “Big Mike"}) user = get_user(17) Amazon ElastiCache
  • 17. Caching # Write Through def save_user(user_id, values): record = db.query("update users ... where id = ?", user_id, values) cache.set(user_id, record, 300) # TTL return record # Lazy Load def get_user(user_id): record = cache.get(user_id) if record is None: record = db.query("select * from users where id = ?", user_id) cache.set(user_id, record, 300) # TTL return record # App code save_user(17, {"name": “Big Mike"}) user = get_user(17) Amazon ElastiCache Write Through 1. Updated DB 2. SET in Cache Lazy Load 1. GET from cache. 2. If MISS get from DB 3. Then SET in Cache
  • 18. 1) Install php, apache php memcache client e.g. yum install php apache php-pecl-memcache 2) Configure “php.ini” session.save_handler = memcache session.save_path= "tcp://node1:11211, tcp://node2:11211" 3) Configure “php.d/memcache.ini” memcache.hash_strategy = consistent memcache.allow_failover = 1 memcache.session_redundancy=3* 4) Restart httpd 5) Begin using Session Data: Auto Scaling group For situations where you need an external session store • Especially needed when using ASGs • Cache is optimal for high-volume reads PHP Example Session Caching https://github.com/mikelabib/elasticache-memcached-php-demo
  • 19. IoT Device Data AWS IoT AWS IoT Device Amazon EC2 AWS Lambda Hot Data Amazon DynamoDB Longer Retention Data Lake Amazon S3 Amazon Glacier Cold Data Amazon Kinesis Firehose Amazon ElastiCache
  • 20. Lambda Trigger for IoT Rule var redis = require("redis"); exports.handler = function(event, context) { client = redis.createClient("redis://your-redis-endpoint:6379"); multi = client.multi(); multi.zadd("SensorData", date, event.deviceId); multi.hmset(event.deviceId, "temperature", event.temperature, "deviceIP", event.deviceIP, "humidity", event.humidity, "awsRequestId", context.awsRequestId); multi.exec(function (err, replies) { if (err) { console.log('error updating event: ' + err); context.fail('error updating event: ' + err); } else { console.log('updated event ' + replies); context.succeed(replies); client.quit(); } }); } AWS Lambda Amazon ElastiCache AWS IoT
  • 21. Lambda Trigger for IoT Rule var redis = require("redis"); exports.handler = function(event, context) { client = redis.createClient("redis://your-redis-endpoint:6379"); multi = client.multi(); multi.zadd("SensorData", date, event.deviceId); multi.hmset(event.deviceId, "temperature", event.temperature, "deviceIP", event.deviceIP, "humidity", event.humidity, "awsRequestId", context.awsRequestId); multi.exec(function (err, replies) { if (err) { console.log('error updating event: ' + err); context.fail('error updating event: ' + err); } else { console.log('updated event ' + replies); context.succeed(replies); client.quit(); } }); } AWS Lambda Amazon ElastiCache AWS IoT Transaction block start SET • Sorted Set • Hash Transaction block end https://github.com/mikelabib/IoT-Sensor-Data-and-Amazon-ElastiCache
  • 24. Streaming Data Analytics Data Sources 1 Amazon Kinesis Streams Amazon EMR (Spark Streaming) Amazon S3 Amazon EC2 Amazon Redshift Spark Redis Connector Data Lake Amazon ElastiCache
  • 25. ElastiCache Redis with cluster mode
  • 26. Features • Horizontal Scale of up to 3.5 TiB per cluster • Up to 20 million reads per second • Up to 4.5 million writes per second • Enhanced Redis Engine within ElastiCache • Up to 4x times failover than with Redis 2.8 • Cluster-level Backup and Restore • Fully Supported by AWS CloudFormation • Ability to resize your cluster • Available in all AWS Regions Redis 3.2 Support Amazon ElastiCache
  • 28. Redis Cluster – Automatic Client-Side Sharding S5 S1 S2 S4 S3 Client • 16384 hash slots per Cluster • Slot for a key is CRC16 modulo {key} • Slots are distributed across the Cluster into Shards • Developers must use a Redis cluster client! • Clients are redirected to the correct shard • Smart clients store a map Shard S1 = slots 0 – 3276 Shard S2 = slots 3277 – 6553 Shard S3 = slots 6554 – 9829 Shard S4 = slots 9830 – 13106 Shard S5 = slots 13107 - 16383
  • 29. Availability Zone A slots 0 - 5454 slots 5455 – 10909 Redis Cluster Redis Cluster – Architecture slots 10910 – 16363 Availability Zone B Availability Zone C slots 5455 – 10909 slots 5455 – 10909slots 0 - 5454 slots 0 - 5454 slots 10910 – 16363 slots 10910 – 16363 Redis Cluster – Multi AZ A cluster consists of 1 to 15 shards example: 3 shard cluster, 2 read replicas
  • 30. Availability Zone A slots 0 - 5454 Redis Cluster Redis Cluster – Architecture slots 10910 – 16363 Availability Zone B Availability Zone C slots 5455 – 10909 slots 5455 – 10909slots 0 - 5454 slots 0 - 5454 slots 10910 – 16363 Shard ReplicaReplicaPrimary Each shard has a Primary Node and up to 5 replica nodes slots 5455 – 10909 slots 10910 – 16363
  • 31. Availability Zone A slots 0 - 5454 slots 5455 – 10909 Redis Cluster Redis Cluster – Architecture slots 10910 – 16363 Availability Zone B Availability Zone C slots 5455 – 10909 slots 5455 – 10909 Shard ReplicaReplica Primary Each shard has a Primary Node and up to 5 replica nodes slots 0 - 5454 slots 0 - 5454 slots 10910 – 16363 slots 10910 – 16363
  • 32. Availability Zone A slots 0 - 5454 Redis Cluster Redis Cluster – Architecture slots 10910 – 16363 Availability Zone B Availability Zone C slots 10910 – 16363 slots 10910 – 16363 Shard Replica PrimaryReplica Each shard has a Primary Node and up to 5 replica nodes slots 5455 – 10909 slots 0 - 5454 slots 5455 – 10909 slots 0 - 5454 slots 5455 – 10909
  • 34. Availability Zone A slots 0 - 5454 slots 5455 – 10909 Redis Cluster slots 10910 – 16363 Availability Zone B Availability Zone C slots 5455 – 10909 slots 5455 – 10909slots 0 - 5454 slots 0 - 5454 slots 10910 – 16363 slots 10910 – 16363 Scenario 1: Single Primary Shard Failure
  • 35. Availability Zone A slots 0 - 5454 slots 5455 – 10909 Redis Cluster Scenario 1: Single Primary Shard Failure slots 10910 – 16363 Availability Zone B Availability Zone C slots 5455 – 10909 slots 5455 – 10909slots 0 - 5454 slots 0 - 5454 slots 10910 – 16363 Mitigation: 1. Promote Read Replica Node (~15-30s) 2. Repair Failed Node slots 10910 – 16363
  • 36. Availability Zone A slots 0 - 5454 slots 5455 – 10909 Redis Cluster Scenario 2: Majority of Primary Shards Fail slots 10910 – 16363 Availability Zone B Availability Zone C slots 5455 – 10909 slots 5455 – 10909slots 0 - 5454 slots 0 - 5454 slots 10910 – 16363slots 10910 – 16363
  • 37. Availability Zone A slots 0 - 5454 slots 5455 – 10909 Redis Cluster slots 10910 – 16363 Availability Zone B Availability Zone C slots 5455 – 10909 slots 5455 – 10909slots 0 - 5454 slots 0 - 5454 Mitigation: Redis enhancements on ElastiCache • Promote Read Replica Nodes • Repair Failed Nodes slots 10910 – 16363slots 10910 – 16363 Scenario 2: Majority of Primary Shards Fail
  • 38. How do I migrate from a non-clustered Redis environment to a clustered Redis environment on ElastiCache?
  • 39. Migrating to a Cluster 1. Create new Cluster 2. Make snapshot of old CacheCluster 3. Restore snapshot to new Cluster 4. Update Client 5. Terminate old Cluster S5 S1 S2 S4 S3 Client Old < 3.2 Client
  • 40. How do change the number of Redis Shards I have allocated?
  • 41. 1. Create new Cluster 2. Make snapshot of old CacheCluster 3. Restore snapshot to new Cluster 4. Terminate old Cluster Resizing your Cluster
  • 42. Architecting for Availability • Upgrade to the latest engine version – 3.2.4 • Use Newer Instance types when possible (e.g. M4 vs M3) • Set reserved-memory to 30% of total available memory • Swap usage should be zero or very low. Scale if not. • Put read-replicas in a different AZ from the primary • For important workloads use 2 read replicas per primary • Write to the primary, read from the read-replicas • Take snapshots from read-replicas to support your RPO • For Redis Cluster have odd number of shards.
  • 44. Key ElastiCache CloudWatch Metrics • CPUUtilization • Memcached – up to 90% ok • Redis – divide by cores (ex: 90% / 4 = 22.5%) • SwapUsage low • CacheMisses / CacheHits Ratio low / stable • Evictions near zero • Exception: Russian doll caching • CurrConnections stable • Setup alarms with CloudWatch Metrics • Whitepaper: http://bit.ly/elasticache-whitepaper
  • 45. ElastiCache Modifiable Parameters • Maxclients: 65000 (unchangeable) • Use connection pooling • timeout – Closes a connection after its been idle for a given interval • tcp-keepalive – Detects dead peers given an interval • Databases: 16 (Default) for non-clustered mode • Logical partition • Reserved-memory: 0 (Default) • Recommended § 50% of maxmemory to use before 2.8.22 § 30% after 2.8.22 – ElastiCache • Maxmemory-policy: • The eviction policy for keys when maximum memory usage is reached • Possible values: volatile-lru, allkeys-lru, volatile-random, allkeys-random, volatile-ttl, noeviction
  • 47. Java App Java App Web Server Web Server Database Cache Customers AZ1 AZ2 Distributed Cache Demo workload topology: Customer Data CustomerDB Primary CustomerDB Standby
  • 48. Caching Strategies 1. Cache Database SQL ResultSet (Row) PRO When data retrieval logic is abstracted from the code consuming the ResultSet, caching the ROW can be extremely effective and can be implemented against any RDBMS. CON Data retrieval still requires extracting values from the ROW and does not further simplify data access; It only reduces data retrieval latency. SELECT * FROM x WHERE y ID First_Name Last_Name City 123Michael Labib Chicago ResultSet Object (ROW) Key: Query, Value: CRS as byte array
  • 49. Caching Strategies 2. Cache database values into custom format in a Redis String SELECT * FROM x WHERE y ID First_Name Last_Name City 123Michael Labib Chicago Key: 123, Value: firstNameString firstName = rs.getString(First_Name) PRO Very easy to implement. Cache any desired database fields and values into a Redis String. For example, store your retrieved data into a JSON object stored in a Redis String. CON Minor. Application code will leverage different types of Objects when retrieving data (i.e. Redis data structures and database results when needed)
  • 50. Caching Strategies 3. Cache serialized application object (e.g. Java Object ) SELECT * FROM x WHERE y ID First_Name Last_Name City 123Michael Labib Chicago Key: CUSTOMER_ID:123, Value: Customer Object as byte array String firstName = rs.getString(First_Name); customer.setFirstName(firstName); String lastName = rs.getString(Last_Name); customer.setLastName(lastName); PRO Utilize application objects in their native structure and data state when serialized. CON Advanced application development use case.
  • 51. Caching Strategies 4. Leverage advanced Redis Data Structures for cached data SELECT * FROM x WHERE y ID First_Name Last_Name City 123Michael Labib Chicago Key: CUSTOMER_ID:123, Value: rsHash String firstName = rs.getString(First_Name); rsHash.put(“firstName", firstName); String lastName = rs.getString(Last_Name); rsHash.put(“lastName", lastName); jedis.hmset(“CUSTOMER_ID:123", rsHash); PRO In addition to reducing data retrieval latency, cache data into specific data structure that simplifies the data access pattern. CON Minor. Application code will leverage different types of objects when retrieving data (i.e. Redis data structures and database results when needed)
  • 52. Demo Steps: Database Setup • Create CustomerDB with Database of choice • Load sample data • Create sample or use mock tool https://www.mockaroo.com/ • Set appropriate security groups to grant access to EC2 SGs hosting your applications • Enable port 3306 for your IP to use DB editor for convenience CREATE table Customer ( CUSTOMER_ID INT ,FIRST_NAME VARCHAR(50) ,LAST_NAME VARCHAR(50) ,EMAIL VARCHAR(50) ,GENDER VARCHAR(50) ,CITY VARCHAR(50) ,STATE VARCHAR(50) ,ADDRESS VARCHAR(50) ,COUNTRY VARCHAR(50) ); INSERT into Customer (CUSTOMER_ID, FIRST_NAME, LAST_NAME, EMAIL, GENDER, CITY, STATE, ADDRESS, COUNTRY) VALUES (1, 'Maria', 'Rodriguez', 'mrodriguez0@bbb.org', 'Female', 'Dallas', 'Texas', '63 8th Circle', 'United States');
  • 53. Demo Steps: ElastiCache & EC2 Setup • Create ElastiCache for Redis Cluster • Test connectivity from EC2 • Set appropriate security groups to grant access to EC2 SGs hosting your applications • Install Redis Client on the EC2 instances to command line Redis access wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.tar.gz cd redis-stable make && make install src/redis-cli -h your-elasticache-redis-endpoint -p 6379
  • 54. Demo: Example Java application uses uses implements implements <<interface>> <<interface>> DAO Pattern uses <<interface>> uses
  • 55. Demo: Data retrieval logic Data retrieval details abstracted from consuming applications 1. Check cache first for requested data 2. If not available, retrieve the data from origin database 3. Cache any data not available previously set in cache for 5 minutes 4. Return results https://github.com/mikelabib/amazon-elasticache-redis-caching-demos Demo
  • 56. Summary § Caching your data can greatly improve your data retrieval speeds § There are various strategies you can implement to cache your data, use the one that meets your needs § Caching your data can also greatly reduce your database costs when architecting for scale 56