본문 바로가기

DB

[Redis] 1. AWS elasticache

Redis 용도 : 주로 캐싱때문에 사용 추가로  DB로 사용, 랭킹 시스템?, 큐 시스템?

AWS elasticache 를 이용하면 aws ec2와 연동해서 캐시를 쓰기 쉬움

(Redis를 ec2에 설치하는게 아님)

또 DB 안정성을 높일 수 있음

(GET REST API의 비중을 줄일 수 있음, 예로 아이디랑 비번 검증, 특정 API에 집중되는 현상)

 

 

AWS elasticache를 왜 써야하나?

외부에서 API 요청이 정말 많아지면, RDS 서버는 다운이 될 수 있음

(그래서 aws RDS Aurora를 사용해서 자동으로 스토리지를 증설 할 수 있음)

Redis를 도입하면 아래와 같이 아키텍쳐가 변경 됨

Redis 에 없는 데이터들만 rds로 요청이 들어가고 데이터를 뽑아오고, 이 데이터를 redis에 저장하고 public에 response함

만약 redis가 다운되면, 시스템 자체가 다운됨

Redis를 도입해야 하는 이유를 잘 따져봐야함

: Redis를 도입해서 아래와 같이 비용이 절감이 되지만, 서비스의 안정성은 떨어지게 됨)

그래서 서비스의 안정성이 확보된 aws elasticache를 사용!

redis 위치 잘못 : ec2 ↔ redis ↔ RDS

 

 

 

AWS elasticache 종류 (Memcached Vs Redis)

둘다 메모리 DB임

Memcached의 상위 버전이 Redis

Redis는 memcached 보다 제공하는 데이터 타입이 더 많음 but single 스레드

(어떤 측면에서는 싱글 스레드가 강점을 가질 수  있음)

 

 

 

AWS elasticache 사용 사례

1. 캐싱 (인 메모리 캐시)

2. 대기열 : 리스트 데이터 구조를 제공하므로 간단한 영구 대기열을 손쉽게 구현 할 수 있음, 트래픽 몰렸을 때 유용

3. 채팅 및 메시징 (PUB/SUB을 지원하기 때문에 이런 기능을 사용할 수 있음)

※ PUB/SUB : Publish/Subscribe

4. 게임 순위표

5. 지리 공간

6. 미디어 스트리밍, ML

 

 

Cache 전략

1. Lazy loading

캐시 전략은 결국 속도를 빠르게 하기 위한 방법임

Cache Miss : Cache에 데이터가 없어서 DB에 요청하는 것

 

2. write through

Cache Miss가 날 확률을 줄이기 위해 write through 개념이 나옴

처음 캐시를 설정하면 캐시 내에 데이터가 쌓이지 않아 비어있을 것임

그래서 서버를 2개 만들어서 운영

(server2는 redis에 데이터를 넣기 위한 서버임)

 

두가지 전략 중에 어떤 것을 써야하는지는 서비스에 따라 다름

결국 두 전략 모두 많은 쓰는 API의 데이터는 redis에 넣어야함

 

 

 

AWS 네트워크 - VPC

VPC(Virtual Private Cloud) 는 퍼블릭 클라우드 환경에서 사용할 수 있는 고객 전용 사설 네트워크임

외부에서 rds와 elasticache에 접속하려면 EC2를 거쳐야함

 

 

 

AWS elasticache 설정하기

1. vpc 생성

2. elasticache 생성

3. ec2 생성

4. ec2와 elasticache 연결

 

 

 

 

aws에서 vpc 설정하는 화면이다

서브넷에서 public의 경우는 ec2가 사용하고

elasticache와 rds의 경우는 외부에서 직접 접속하게 하면 안되기 때문에 private을 사용

 

 

※ ec2와 elasticache 연결 할 때, 주의사항

아래 그림과 같이 연결이 안되면

인스턴스 보안 - 인바운드 규칙을 수정해야함

 

아래와 같이 수정하면 성공!

 

- ec2 연결을 위한 셋팅

ec2를 처음 쓰면 update를 해줘야함

sudo apt-get update

redis 설치를 위해 gcc를 설치

sudo apt-get install gcc

redis stable 버전 설치 (wget은 기본으로 설치되었을것임)

wget http://download.redis.io/redis-stable.tar.gz

redis gz 파일을 만들기

tar xvzf redis-stable.tar.gz

그러면 redis stable 폴더가 생성됨

그리도 redis-stable 폴더로 들어가서 아래 명령어

make 설치 실행

sudo apt install make
sudo apt install make-guile
make

그다음은 elasticache와 ec2 연결해서 사용하기

 

- redis 사용해보기

~~~부분에 redis Primary endpoint 주소 붙여넣기, 이때 주소 그대로 붙여넣는게 아닌 : 를 -p로 바꿔줘야함 아래그림 참고
(Reader endpoint는 Write는 할 수 없고 읽기만 가능)

src/redis-cli -c -h ~~~

 

set a 값 EX 초 -> JSON 형식으로 저장됨

key값이 a인 데이터가 10초 동안 캐시에 저장됨 

 

 

[AWS] VPC 개념 잡기

먼저 VPN (Virtual Private Network) 알아보자

VPN은 "가상사설망" 임

왼쪽 : VPN 미적용 / 오른쪽 VPN 적용

만약 위 왼쪽 그림과 같이 회사의 네트워크가 구성되어 있고 보안상의 이유로 직원간 네트워크를 분리하고 싶다면

기존 인터넷 선공사를 다시해야하고 건물 내부선도 다 고쳐야함. 이를 위해 가상의 망 VPN을 사용하게 됨

오른쪽 그림 처럼 네트워크 A와 네트워크 B가 실제로는 같은 네트워크 상에 있지만 논리적으로 다른 네트워크인것처럼 동작함. 이를 우리는 가상사설망 이라고 함 

 

VPC (Virtual Private Cloud)

VPC가 없다면 아래와 같이 EC2 인스턴스들이 서로 거미줄처럼 연결되고 인터넷과 연결될 것입니다.

이런 구조는 시스템의 복잡도를 높이고 하나의 인스턴스만 추가되도 모든 인스턴스를 수정 할 수 도 있는 불편함이 생김.

왼쪽 VPC 미적용 / 오른쪽 VPC 적용

 

 

 

 

https://medium.com/harrythegreat/aws-%EA%B0%80%EC%9E%A5%EC%89%BD%EA%B2%8C-vpc-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-71eef95a7098

 

[AWS] 가장쉽게 VPC 개념잡기

가장쉽게 VPC 알아보기

medium.com

 

'DB' 카테고리의 다른 글

UML (Unified Modeling Language)  (0) 2024.02.25
컬럼의 Key속성 - FK와 MUL  (0) 2023.11.16
29. DB 파티셔닝, 샤딩, 레플리케이션  (0) 2023.07.09
25. DB 인덱스  (0) 2023.07.06
13.DB Trigger란  (0) 2023.07.06