Amazon ElastiCache
Amazon ElastiCache
W pelni zarzadzana usluga cache in-memory w chmurze AWS. Obsluguje Redis i Memcached - przyspieszaj aplikacje dzieki opoznieniom rzędu mikrosekund.
Amazon ElastiCache to w pelni zarzadzana usluga cache in-memory, ktora obsluguje dwa popularne silniki: Redis i Memcached. Dzieki przechowywaniu danych w pamieci RAM zamiast na dysku, ElastiCache oferuje czasy odpowiedzi na poziomie mikrosekund - setki razy szybciej niz tradycyjna baza danych.
ElastiCache jest idealny do cachowania wynikow zapytan do bazy danych, przechowywania sesji uzytkownikow, rankingów w czasie rzeczywistym czy kolejek wiadomosci (pub/sub). AWS zajmuje sie za Ciebie patchowaniem, backupami, monitoringiem i failoverem.
Redis to skrot od REmote DIctionary Server. Zostal stworzony w 2009 roku przez Salvatore Sanfilippo. ElastiCache z Redis osiaga opoznienia na poziomie 100-200 mikrosekund - to okolo 1000x szybciej niz typowa baza relacyjna! Wiele z najpopularniejszych serwisow na swiecie (Twitter, GitHub, Stack Overflow) korzysta z Redis jako warstwy cache.
Zawsze ustawiaj TTL na kluczach w cache! Bez TTL dane moga byc nieskonczonego zycia i szybko zapelnic pamiec. Dobra praktyka to ustawienie roznych TTL dla roznych typow danych: krotkie (60s) dla danych czesto sie zmieniajacych, dluzsze (3600s) dla rzadko modyfikowanych. Pamietaj tez o strategii cache invalidation - to jeden z najtrudniejszych problemow w informatyce.
ElastiCache dziala TYLKO w VPC, nie ma dostepu z Internetu. Redis bez Multi-AZ moze stracic dane przy awarii noda. Eviction policy (domyslnie volatile-lru) moze usuwac klucze, ktore uwazasz za wazne. Monitoruj metryki EngineCPUUtilization i DatabaseMemoryUsagePercentage. Pamietaj: ElastiCache ma ograniczony free tier (750 godzin cache.t3.micro przez 12 miesiecy dla nowych kont), ale poza nim nawet najmniejszy node kosztuje ~$12/miesiac.
ElastiCache to w pelni zarzadzany serwis cache in-memory kompatybilny z Redis i Memcached. Umieszczony miedzy aplikacja a baza danych, redukuje latency odczytow z milisekund do mikrosekund i odciaza baze danych nawet o 80-90%. AWS zajmuje sie patchowaniem, monitoringiem, backupami i failoverem.
Wybor silnika: Redis vs Memcached
Redis oferuje bogate struktury danych (strings, hashes, lists, sets, sorted sets, streams), replikacje, persistence, pub/sub i transakcje. Memcached to prosty key-value cache z wielowatkowym modelem i auto-discovery. Wybieraj Redis w 95% przypadkow - jedyny argument za Memcached to wielowatkowosc dla bardzo prostych cache z duzymi wartosciami. Od 2024 AWS rekomenduje ElastiCache Serverless (Redis) jako domyslny wybor.
Wybor typu node
Typy node determinuja RAM, CPU i siec. Rodzina r7g (Graviton3) to standard: r7g.large (13.07 GB) dla wiekszosci workloadow, r7g.xlarge (26.32 GB) dla wiekszych datasetow. Rodzina r6gd oferuje data tiering - przechowuje rzadziej uzywane dane na NVMe SSD, co pozwala na 5x wiecej danych za ta sama cene. Pamietaj: Redis uzywa ok. 30% wiecej RAM niz sam dataset (overhead na struktury).
Cluster Mode: wlaczony vs wylaczony
Cluster Mode Disabled: jeden shard z primary i do 5 replikami (max ok. 200 GB danych). Cluster Mode Enabled: do 500 shardow, kazdy z primary i replikami - laczna pojemnosc do kilkudziesieciu TB. Dane sa automatycznie partycjonowane przez hash sloty (16384 slotow rozdzielonych miedzy shardy). Wlaczaj Cluster Mode gdy potrzebujesz wiecej niz 200 GB lub ponad 150,000 operacji/s.
Replikacja i automatyczny failover
Kazdy shard ma jeden node primary (read/write) i do 5 replik (read-only). Replikacja jest asynchroniczna z typowym lagiem ponizej 1 ms. Multi-AZ z Auto-Failover: gdy primary pada, ElastiCache automatycznie promuje replike w innej AZ na primary w ciagu 15-30 sekund. DNS endpoint jest aktualizowany automatycznie - aplikacja nie wymaga zmian.
Parameter Groups - tuning silnika
Parameter Groups kontroluja konfiguracje silnika Redis/Memcached. Kluczowe parametry Redis: maxmemory-policy (eviction strategy - allkeys-lru dla cache, noeviction dla queue), timeout (zamykanie idle connections), tcp-keepalive (wykrywanie martwych polaczen). Tworz custom parameter groups zamiast modyfikowac default - pozwala to na latwy rollback i porownywanie konfiguracji miedzy srodowiskami.
Backupy i snapshoty
Automatyczne backupy (tylko Redis): codzienne snapshoty z retencja 1-35 dni. Backup tworzy fork procesu Redis - przy duzych datasetach (50+ GB) moze zuzywac podwojna ilosc RAM. Planuj backup window na godziny niskiego ruchu. Mozesz tez tworzyc reczne snapshoty przed zmianami. Snapshoty sa przechowywane w S3 i mozna je uzywac do tworzenia nowych klastrow lub migracji miedzy regionami.
Sprawdzone wzorce cachowania i praktyki operacyjne, ktore roznia dojrzale wdrozenia ElastiCache od tych powodujacych incydenty.
Redis vs Memcached - matryca decyzyjna
Redis: persistence, replikacja, pub/sub, Lua scripting, sorted sets (leaderboardy), streams (event log), TTL na poziomie klucza, transakcje. Memcached: wielowatkowosc, auto-discovery, prostsze skalowanie horyzontalne. W praktyce wybieraj Redis - Memcached ma sens tylko przy bardzo prostym cache z kluczami >1 MB i brakiem potrzeby persistence. Od 2024 ElastiCache Serverless (Redis) eliminuje potrzebe zarzadzania nodami.
PoczatkujacyCluster Mode Enabled dla skali 16+ nodow
Cluster Mode Disabled jest prostszy, ale ograniczony do jednego sharda (max ~200 GB, ~150k ops/s). Cluster Mode Enabled partycjonuje dane na wiele shardow - kazdy obsluguje niezalezna czesc keyspace. Online resharding pozwala dodawac shardy bez downtime. Przy projektowaniu kluczy unikaj hot key problem - uzywaj hash tagow {prefix} do grupowania powiazanych kluczy na jednym shardzie.
ZaawansowanyData Tiering (r6gd) - 5x wiecej danych
Node typy r6gd maja dysk NVMe SSD obok RAM. Rzadziej uzywane dane sa automatycznie przenoszone z RAM na SSD (latency rosnie z mikrosekund do niskich milisekund). Efekt: r6gd.xlarge przechowuje do 500 GB danych vs ~100 GB na r6g.xlarge za podobna cene. Idealne dla cache z duzym datasetem i zroznicowanym wzorcem dostepu (80/20 rule). Monitoruj metryki CurrItems i BytesUsedForCache.
ZaawansowanyConnection pooling - nie otwieraj polaczen per request
Redis obsluguje polaczenia single-threaded - kazde nowe polaczenie TCP kosztuje. Uzywaj connection poolingu w aplikacji (np. redis-py ConnectionPool, Lettuce w Java, ioredis w Node.js). Typowa konfiguracja: pool size = liczba workerow aplikacji, min-idle = 5-10, max-wait = 200ms. Monitoruj metryki CurrConnections i NewConnections w CloudWatch - nagle skoki oznaczaja wyciek polaczen.
PoczatkujacyLazy Loading vs Write-Through
Lazy Loading (Cache-Aside): aplikacja sprawdza cache, przy miss czyta z DB i zapisuje do cache z TTL. Zaleta: cache zawiera tylko potrzebne dane. Wada: pierwszy odczyt zawsze trafia do DB. Write-Through: kazdy zapis do DB jednoczesnie zapisuje do cache. Zaleta: cache zawsze aktualny. Wada: nadmiar danych w cache. Najlepsza praktyka: polacz oba - write-through dla hot data, lazy loading z TTL dla reszty.
PoczatkujacyGlobal Datastore - replikacja cross-region
Global Datastore replikuje klaster Redis do max 2 regionow wtornych z lagiem ponizej 1 sekundy. Region wtorny obsluguje odczyty lokalne (niskie latency dla uzytkownikow globalnych). Failover do regionu wtornego trwa ponizej 1 minuty. Konfiguruj secondary cluster z ta sama lub mniejsza liczba replik. Koszt: platisz za nody w kazdym regionie + transfer danych miedzy regionami.
ZaawansowanyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon ElastiCache bezposrednio w konsoli AWS.
Do czego sluzy Amazon ElastiCache?
Cachowanie zapytan do bazy danych
Przechowuj wyniki czestych zapytan SQL w cache. Zamiast odpytywac RDS za kazdym razem, pobieraj dane z pamieci w mikrosekundach.
Przechowywanie sesji uzytkownikow
Trzymaj sesje HTTP w Redis zamiast na dysku. Dzieki temu sesje przetrwaja restart serwera aplikacji i dzialaja w srodowisku multi-server.
Rankingi i liczniki w czasie rzeczywistym
Redis Sorted Sets idealnie nadaja sie do tablic wynikow w grach, rankingów popularnosci czy licznikow w czasie rzeczywistym.
Kolejki wiadomosci (Pub/Sub)
Redis obsluguje wzorzec publish/subscribe do komunikacji miedzy mikroserwisami z minimalnymi opoznieniami.
Co musisz wiedziec?
Redis vs Memcached
Redis oferuje bogate struktury danych (listy, zbiory, hashe), replikacje, persistence i pub/sub. Memcached jest prostszy - czysty cache klucz-wartosc, ale obsluguje wielowatkowosc.
Cluster Mode
W trybie klastrowym Redis dzieli dane na shardy (partycje). Pozwala to skalowac horizontalnie - wiecej shardow = wiecej pamieci i przepustowosci.
Replication Group
Grupa replikacji sklada sie z primary node (zapis/odczyt) i do 5 replik odczytu. W razie awarii primary - automatyczny failover do repliki.
Auto-failover
Jesli primary node ulegnie awarii, ElastiCache automatycznie promuje replike na nowego primary. Przełaczenie trwa zwykle 30-60 sekund.
Eviction Policy
Polityka usuwania danych gdy pamiec sie zapelni. Najczesciej uzywana: allkeys-lru (usuwaj najdawniej uzywane klucze).
TTL (Time To Live)
Czas zycia klucza w cache. Po uplywie TTL klucz jest automatycznie usuwany. Kluczowy mechanizm do utrzymania swiezosci danych w cache.
Architektura: Cache-Aside Pattern z ElastiCache Redis
Wzorzec cache-aside (lazy loading), w ktorym aplikacja sprawdza cache przed odczytem z bazy danych. Cache hit zwraca dane w mikrosekund, cache miss laduje dane z RDS i zapisuje do cache z TTL.
Porownanie Redis vs Memcached w ElastiCache
| Cecha | Redis | Memcached |
|---|---|---|
| Persystencja danych | Tak (AOF, RDB snapshoty) | Nie (tylko pamiec) |
| Typy danych | Strings, Hashes, Lists, Sets, Sorted Sets, Streams | Tylko key-value (string) |
| Klasteryzacja | Redis Cluster (do 500 nodow) | Wbudowane shardowanie |
| Replikacja | Tak (read replicas, failover) | Nie |
| Pub/Sub | Tak (wbudowane) | Nie |
| Wielowatkowosc | Jednowatkowy (I/O threads od 6.0) | Wielowatkowy |
| Najlepszy dla | Sesje, kolejki, leaderboardy, cache | Prosty cache, duza skala odczytow |
Ile kosztuje Amazon ElastiCache?
On-Demand
Placisz za godzine dzialania node. Cena zalezy od typu instancji (ilosc RAM i vCPU).
cache.t3.micro: ~$0.017/godz. (~$12.50/mies.)
Reserved Nodes
Rezerwujesz na 1-3 lata. Znaczace oszczednosci przy stalym obciazeniu.
cache.r6g.large Reserved 1 rok: do 33% taniej niz On-Demand
Serverless (Redis)
ElastiCache Serverless automatycznie skaluje pamiec i obliczenia. Placisz za zuzycie.
Dane: $0.125/GB/godz. Obliczenia: $0.0034/ECPU
Free Tier
ElastiCache oferuje Free Tier: 750 godzin cache.t3.micro miesiecznie przez 12 miesiecy.
Wystarczy na 1 node cache.t3.micro 24/7
Przyklady AWS CLI
Utworz klaster Redis
Tworzy nowy klaster ElastiCache z silnikiem Redis 7
aws elasticache create-replication-group \
--replication-group-id moj-redis \
--replication-group-description "Redis cache dla mojej aplikacji" \
--engine redis \
--engine-version 7.0 \
--cache-node-type cache.t3.micro \
--num-cache-clusters 2
Sprawdz status klastrow
Lista klastrow ElastiCache z ich stanem
aws elasticache describe-replication-groups \
--query "ReplicationGroups[].{Nazwa:ReplicationGroupId,Status:Status,Engine:Engine,Nody:MemberClusters}" \
--output table
Utworz klaster Memcached
Tworzy prosty klaster Memcached z 2 nodami
aws elasticache create-cache-cluster \
--cache-cluster-id moj-memcached \
--engine memcached \
--cache-node-type cache.t3.micro \
--num-cache-nodes 2
Sprawdz endpoint klastra
Pobiera endpoint do polaczenia z aplikacji
aws elasticache describe-replication-groups \
--replication-group-id moj-redis \
--query "ReplicationGroups[0].NodeGroups[0].PrimaryEndpoint" \
--output json
Quiz: Amazon ElastiCache
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Jaka jest glowna roznica miedzy Redis a Memcached w ElastiCache?
2. Do czego sluzy TTL (Time To Live) w ElastiCache?
3. Ile replik odczytu moze miec Redis Replication Group?
4. Jaki typ danych Redis jest idealny do tablic wynikow (leaderboard)?
Czesto uzywane razem z Amazon ElastiCache
Czytaj więcej o Amazon ElastiCache
Chcesz poznac Amazon ElastiCache w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon ElastiCache krok po kroku. Teoria + praktyka od zera.