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


    1. 해당 상품 ID가 Redis에 존재할 때

      사용자가 상품의 상세페이지를 요청 -> 해당하는 상품 ID를 Backend에 요청 -> Redis에 상품 ID를 확인 -> 해당 상품 ID의 정보가 있으면 Backend에 정보를 넘김 -> Backend에서 Frontend로 정보를 넘김


    2. 해당 상품 ID가 Redis에 존재하지 않을 때

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

'Basic > 코딩기초' 카테고리의 다른 글

[코딩기초] 무한스크롤 VS 페이지네이션  (0) 2023.07.18
[코딩기초] 온프레미스(On-Premise) VS 클라우드(Cloud)  (0) 2023.06.17
[Cloud] Cloud?  (0) 2023.03.23
[HTTP] HTTP기초  (0) 2023.03.22
[코딩기초] 자바?  (0) 2023.03.22