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에 존재할 때
'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 |