Giới thiệu về Amazon Elasticache
AWS ElastiCache là dịch vụ in-memory caching được quản lý hoàn toàn bởi AWS, giúp tăng tốc ứng dụng web và giảm tải cho cơ sở dữ liệu backend.
ElastiCache hỗ trợ hai engine chính:
- Redis: Phổ biến cho caching, pub/sub, session store, leaderboards…
- Memcached: Đơn giản, hiệu năng cao, phù hợp với các trường hợp caching cơ bản.
Tại sao dùng ElastiCache?
- Hiệu năng cao: In-memory cache có độ trễ cực thấp (microseconds), nhanh hơn nhiều so với query trực tiếp từ DB.
- Giảm tải DB: Tránh việc phải query lại dữ liệu giống nhau nhiều lần.
- Dễ tích hợp: Tương thích với các thư viện Redis/Memcached phổ biến trong nhiều ngôn ngữ (Python, Node.js, Java…).
So sánh Redis và Memcached
| Đặc điểm | Redis | Memcached |
|---|---|---|
| Data types | Đa dạng (string, list, set, hash) | Chỉ hỗ trợ string (Dữ liệu chuỗi, số, JSON, v.v. đều được coi là string) |
| Persistence | ✅ Có (snapshot, AOF) | ❌ Không |
| Replication | ✅ Có | ❌ Không |
| Pub/Sub | ✅ Có | ❌ Không |
| Use case phổ biến | Caching, session store, queue, pub/sub | Caching đơn giản, phân tán |
⚠️
Redis thường được ưu tiên sử dụng nếu bạn cần nhiều tính năng nâng cao và độ bền dữ liệu.
Kiến trúc ElastiCache thường gặp
Mình sẽ giới thiệu kiến trúc ElastiCache phổ biến trong các ứng dụng web: Sử dụng Redis làm cache layer cho cơ sở dữ liệu giúp giảm tải đến DB.
- Application đầu tiên sẽ kiểm tra trong cache xem với common query đó đã có dữ liệu chưa.
- Nếu có, nó sẽ trả về dữ liệu từ cache.
- Nếu không, nó sẽ query đến DB, lấy dữ liệu và lưu vào cache để sử dụng cho các lần sau.
- Cache sẽ được cấu hình để tự động xóa dữ liệu cũ sau một khoảng thời gian nhất định (TTL - Time To Live) để tránh lưu trữ quá nhiều dữ liệu không cần thiết.
Security trong ElastiCache
- VPC: ElastiCache chỉ có thể truy cập từ các instance trong cùng một VPC, giúp bảo mật tốt hơn.
- Application (EC2, Lambda) sẽ cần chạy trong cùng VPC với ElastiCache.
- IAM Policies: Bạn có thể sử dụng IAM để kiểm soát quyền truy cập đến ElastiCache.
- Redis AUTH: Redis hỗ trợ xác thực người dùng thông qua mật khẩu để bảo vệ dữ liệu.
- Bạn có thể tạo username/password cho Redis để bảo mật hơn.
- Đây là 1 layer bảo mật bổ sung, nhưng không thay thế cho việc sử dụng VPC và IAM.
Caching Strategy thường dùng
- Lazy Loading: Ứng dụng kiểm tra cache trước → nếu có thì dùng, nếu không thì query DB và lưu vào cache.
- Write Through: Khi ghi dữ liệu vào DB, đồng thời cập nhật cache để tránh việc cache bị lỗi thời (never stale).