인프런 커뮤니티 질문&답변

조재현님의 프로필 이미지
조재현

작성한 질문수

모든 개발자를 위한 HTTP 웹 기본 지식

비 연결성(connectionless)

대용량 트래픽이 어려운 이유가 무엇인가요?

작성

·

105

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
치킨 이벤트나 콘서트 티켓팅 등 같은 시간에 딱 맞추어 발생하는 대용량 트래픽은 최대한 Stateless 하게 개발하는 것이 중요하다고 하셨는데, 어떤 도메인에서는 아예 로그인도 풀려버리고 홈페이지 접속조차 안되는 상황이 발생하는 반면 콘서트 티켓팅이나 수강신청의 경우 대기번호(queue?)를 주어 로그인이 풀리거나 사이트에 접속이 안되는 경우가 없도록 하는 경우가 있습니다. 전자와 후자의 경우에서 "상태"의 차이, 서버 증설 규모의 차이, 대기큐 유무 중 어떤 것이 제일 대규모 트래픽을 감당하는데에 중요하다고 생각하시나요? 이외에도 대규모 트래픽을 수용하는 것에 있어서 중요한 요소가 있다면 알고 싶습니다. 페이지 앞단에 정적인 페이지를 두어 클라이언트의 시선을 분산시키는 것 등의 방법 말고 기술적인 측면에서만요.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

대규모 트래픽을 처리하는 것은 여러 기술적 요소들이 잘 맞물려야 가능한데요, 조재현님이 말씀하신 대로 서버의 상태 관리, 고사양의 서버 증설, 대기큐 시스템 등등 다양한 요소들이 있습니다. 이를 조금 더 자세히 설명해 드리겠습니다.

  1. Stateless 설계의 중요성: Stateless 하게 시스템을 설계하면, 각각의 요청이 독립적으로 처리될 수 있어 서버의 확장성이 높아집니다. 즉, 서버가 특정 클라이언트의 상태를 기억할 필요가 없으므로 새로운 서버를 추가하여 쉽게 확장이 가능하게 됩니다. 하지만 로그인 정보나 사용자 세션과 같은 것은 보통 stateful 하게 관리됩니다. 이 부분은 별도의 데이터베이스나 세션 관리 시스템을 통해 유지되어야 합니다.

  2. 서버 증설(Scalability): 대규모 트래픽을 처리하기 위해 Server Load Balancing을 통해 여러 서버로 트래픽을 분산시킬 수 있습니다. 서버 증설을 통해 시스템의 총 처리 용량을 높일 수 있으며, 이는 가용성을 높이는 데에도 기여합니다.

  3. 대기열 시스템: 대기 번호를 부여하는 시스템은 순간적으로 몰리는 요청을 관리하는 데 유용합니다. 이를 통해 사용자가 서버에 직접 과부하를 주지 않고 순차적으로 서버에 요청을 보낼 수 있습니다. 이는 사용자가 시스템의 상태를 이해하고 기다릴 수 있게 하여 사용자 경험을 개선합니다.

또한, 성능 최적화를 위한 추가적인 요소로는 다음과 같은 것들이 있습니다:

  • 캐싱: 정적 콘텐츠를 캐싱하여 서버의 부하를 줄입니다.
  • CDN(Content Delivery Network) 사용: 정적 파일을 위치에 따라 최적의 서버에서 제공하여 로드 시간을 줄입니다.
  • 비동기 프로세싱: 일부 작업을 비동기적으로 처리하여 서버의 응답 속도를 높일 수 있습니다.

유사한 주제의 질문으로 도움이 될 만한 답변들은 아래 링크들을 참고해 주세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

조재현님의 프로필 이미지
조재현

작성한 질문수

질문하기