개발자

쿠팡 아이폰 사전예약 같이, 특정 시간대에 순간적인 트래픽이 예상된다면 어떤 아키텍처를 가져가는 것이 좋나요?

2023년 09월 23일조회 161

많은 트래픽을 안정적인 처리를 하기 위해서는 redis를 많이 사용한다고 알고 있습니다. redis의 어떤 점을 활용하는게 좋을까요? 혹은 특정 시간에서만 scale-out이 가능하도록 아키텍처를 설계할 수 있을까요? 많은 트래픽을 경험해보지 못한 뉴비라서 질문드립니다...! (redis 사용 경험도 X)

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

인기 답변

박범수님의 프로필 사진

1. Redis 활용법 Redis는 NoSQL DB, 캐시, 메세지큐 등 여러가지 용도로 사용이 가능합니다. 말씀하신 예에서는 메세지큐로 활용하는 것이 좋아보입니다. - 구매 예약과 같은 중요한 정보는 NoSQL 보다는 RDBMS를 쓰는 것이 일반적입니다. - 캐시의 효과는 읽기 연산이 많을 때 발생합니다. 아이폰 사전 예약 같은 이벤트는 쓰기 연산이 대량으로 발생할 확률이 높아 캐시의 효용이 떨어집니다. 짧은 시간에 대량의 쓰기 연산을 DB로 직접 보낼 경우 과부하가 발생할 수 있습니다. 따라서 Redis에 연산 요청을 잠시 저장해두고 적절한 속도로 요청하는 방법을 사용할 수 있습니다. 질문에 Redis를 언급하고 있어 설명드렸을 뿐 메세지 큐를 꼭 Redis로 사용할 필요는 없습니다. Kafka나 RabbitMQ 같은 다른 솔루션과 비교해 더 적합하다고 판단될 경우에 Redis를 사용하시면 됩니다. 2. 특정 시간대에만 Scale out이 가능한 아키텍처를 설계하는 방법 클라우드의 관리형 서비스를 쓰는게 제일 쉬운 해결책입니다. 예시로 든 redis의 경우 ElastiCache 같은 관리형 서비스를 사용하고 오토 스케일링을 걸면 됩니다. 관리형 서비스를 사용하면 사내 서버를 직접 관리하는 것에 비해 다음과 같은 이점이 있습니다. - 대규모 트래픽이 발생하지 않는 평상시에는 클러스터 규모를 작게 유지해 비용을 절감할 수 있습니다. - 오토 스케일링 기능을 직접 구현할 필요가 없습니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2023년 09월 23일

대량의 트래픽을 처리하기 위한 아키텍처를 구축하는 것은 매우 중요하며, 특정 시간에만 접속이 몰릴 것을 예상한다면 그에 대비한 스케일링 전략이 필요합니다. 1. **분산 시스템**: 아키텍처는 여러 서버에서 작업을 분산시키는 분산 시스템으로 설계되어야 합니다. 이런 방식은 하나의 시스템에 과부하가 걸리는 것을 막아줍니다. 2. **Auto-scaling**: 특정 시간에만 트래픽이 몰릴 경우, 클라우드 서비스에서 제공하는 auto-scaling 기능을 활용할 수 있습니다. 이는 사전에 설정된 메트릭(threshold)에 따라 자동으로 서버 인스턴스를 증가 또는 감소시켜줍니다. 3. **Load Balancer**: 로드 밸런서를 사용하여 트래픽을 여러 서버로 분산시켜주고, 서버 간의 부하를 적절하게 관리해야 합니다. 4. **Caching with Redis**: Redis와 같은 캐시 서버를 사용해서 자주 조회되는 데이터 혹은 정적 파일들을 저장해두면, database server로의 요청 횟수를 줄일 수 있어 효율적으로 시스템 부하를 감소시킬 수 있습니다. 5. **메세지 큐 (Kafka, RabbitMQ)**: 메세지 큐는 트래픽이 몰리는 상황에서도 안정적으로 서비스를 운영할 수 있게해줍니다. 메세지 큐를 사용하면 요청을 일시적으로 저장해두고, 서버가 처리 가능한 속도로 작업을 처리하게 할 수 있습니다. 마지막으로, 서비스의 특성과 필요성에 따라 적절한 아키텍처와 기술 스택을 선택하되, 시스템의 복잡성 또한 고려해야 합니다. 대용량시스템은 설계부터 운영까지 많은 노력이 필요합니다. 다양한 방법론을 학습하고 실험하는 것이 중요합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!