심화/MSA

[대규모 스트림 처리] 수백만 명의 사용자가 동시에 접속하는 시스템을 어떻게 만들지?

annovation 2025. 11. 18. 12:27

대규모 시스템

 

💡대규모 시스템이란?

  • 수백만 명의 사용자가 동시에 접속하고 상호작용할 수 있는 시스템

💡사용자 수

  • 대규모 시스템을 설계할 때 가장 중요한 요소 중 하나는 사용자 수이다.
  • 얼마나 많은 사용자가 시스템을 사용할 것인지 파악하는 것이 중요하다.
  • 그러나 단순히 하루 접속량을 파악하는 것만으로는 충분하지 않다. 더 중요한 것은 동시 접속자의 요청 수이다.

💡TPS (Transactions Per Second)

  • TPS (Transactions Per Second)는 초당 처리되는 트랜잭션의 수를 나타내는 지표이다.
  • TPS는 시스템이 얼마나 많은 요청을 동시에 처리할 수 있는지를 나타내며, 시스템의 처리 능력을 가늠할 수 있게 해준다.
  • 특정 시간대의 TPS를 파악해, 가장 많은 요청량이 들어오는 시간대에 맞춰 시스템의 용량 계획을 세우는데 활용할 수 있다.
예를 들어, 기존 시스템이 오전 9시 30분에 초당 200건의 요청을 처리했다고 가정해 보자.
이러한 데이터를 기반으로 시스템의 용량을 결정해야 한다.
우리의 목표는 시스템이 예상치 못한 최대 부하를 견딜 수 있도록 해야한다. 
따라서 200건을 기준으로 1.5배인 300건을 처리할 수 있도록 시스템을 설계하는 것이 바람직하며, 
이는 시스템이 예기치 않은 트래픽 급증에도 견딜 수 있는 여유를 제공한다.

Redis 데이터 전송 흐름

 

💡예시

  •  

Redis 캐시 사용 시 주의 사항

 

💡주의사항

<이미지>

  • 페이징 처리된 객체를 Redis에 캐싱할 경우, 쉽게 메모리 사용량을 초과할 수 있다.

💡해결방법

  • 모니터링 알람 : 일정 수준의 메모리 사용량을 초과할 경우 사용자에게 알람을 보낸다.
    • ex. 50GB 용량이 차기 전에 30GB 용량이 채워지면 사용자에게 알람을 보냄
  • Connection Time Out 설정 : 
    • ex. Connection Time Out 지난 경우, 빈 데이터 반환
  • 프론트 엔드에서 Dummy Data 노출

출처

https://teamsparta.notion.site/1-1-2242dc3ef51481ddb69acd7313f11c79

 

챕터1-1 : 오리엔테이션 | Notion

1.1. 오프닝

teamsparta.notion.site