Basic/코딩기초
[Redis] 서버운영과 Redis
코딩공대
2023. 5. 4. 00:52
728x90
1. 매일 다른 시간 평소의 3배에 달하는 트래픽이 몰리는 SNS 서비스가 있는데 어떤 아키텍처를 구성하면 서버를 안정적으로 운영할 수 있나?
- 메인 서버의 Load Balancer / Auto Scaling
- 이용자 / 게시물 캐싱 처리를 위한 Redis
- 이미지 캐싱을 위한 CloudFront - Contents Delivery Network (CDN)
- 이미지 처리(ex. 이미지 크롭, 업로드, 영상 인코딩 등)를 위한 서버리스 함수와 메세지 큐
- 알림 서비스를 위한 서버리스 함수와 메세지 큐
Redis는 이용자의 정보와 게시물 패싱처리를 한다.
백엔드 서버를 다루다보면 웬만하면 서버가 터지는 경우가 없다.
80%는 DB가 터지는 경우가 많다.
서버는 수평적으로 확장이 가능(Docker, EC2) / DB는 데이터가 다 분산하여 저장돼야 하는데 수평적으로 저장되기 힘들다.
Redis가 터졌더라도 그냥 DB에서 데이터를 뽑아올수 있어서 어느 정도 Redis를 복구할 여유는 있다.
그리고 Redis는 웬만하면 잘 안터진다.
여기에서 Redis는 매우 매우 중요한 프로그램이다.

- 해싱이 이루어지는 Flow
- 해당 상품 ID가 Redis에 존재할 때
사용자가 상품의 상세페이지를 요청 -> 해당하는 상품 ID를 Backend에 요청 -> Redis에 상품 ID를 확인 -> 해당 상품 ID의 정보가 있으면 Backend에 정보를 넘김 -> Backend에서 Frontend로 정보를 넘김 - 해당 상품 ID가 Redis에 존재하지 않을 때
사용자가 상품의 상세페이지를 요청 -> 해당하는 상품 ID를 Backend에 요청 -> Redis에 상품 ID를 확인 -> 해당 상품 ID의 정보가 없으면 DataBase(MySQL등)에서 정보를 검색 -> 정보를 찾으면 Redis에 저장 후 Backend에 정보를 넘김 -> Backend에서 Frontend로 정보를 넘김
- 해당 상품 ID가 Redis에 존재할 때