본문 바로가기
내일배움캠프/축구팀 관리 프로젝트

축구팀 관리 프로젝트 - 대규모 트래픽 관리 위해 스케일업, 캐싱 적용

by 코드스니펫 2024. 2. 25.
반응형

축구팀 관리 프로젝트 - 대규모 트래픽 관리 위해 스케일업, 캐싱 적용

 

서버 3d 이미지화

 

프로젝트를 하며 가장 큰 문제 중 하나는 '트래픽 관리'입니다. 특히 대규모 이벤트나 프로모션 기간에 서비스가 겪는 트래픽 폭주는 서버에 큰 부담을 주며, 이에 대한 대응 없이는 사용자 만족도 하락은 물론, 비즈니스에 치명적인 타격을 줄 수 있습니다. 본 글에서는 프로젝트의 대용량 트래픽에 대비한 스트레스 테스트 사례를 바탕으로, 서버의 성능 향상 및 가용성 확보를 위한 다양한 전략과 그 실행 결과를 공유하고자 합니다.

 

 

대규모 트래픽 관리 전략

 

트래픽 대응의 필요성과 스트레스 테스트의 중요성

예측 가능한 방향으로 프로젝트를 진행하고 있었지만 트래픽 문제는 배포 후 언제든 예고 없이 찾아올 수 있는 이슈라 판단했습니다. 이를 사전에 파악하고 대비하기 위해, 스트레스 테스트는 필수적이었습니다. 스트레스 테스트를 통해 실제 서비스가 겪을 수 있는 최악의 시나리오를 예측하고, 이에 대응하기 위한 서버의 성능을 측정할 수 있었습니다. 프로젝트에서는 스트레스 테스트를 위해 Node 환경에 친숙한 Artillery를 채택하였습니다.

 

 

Node 환경에서 Artillery 를 활용한 스트레스 테스트

Node 환경에서 아주 가볍게 스트레스 테스트를 구성하고 싶었고 그 요구 사항에 맞는 툴을 리서치하다 third party 로 제공하는 Artillery 를 알게되었다. 본 문서에서는 Artillery 을 통해 스트레스 테스

velog.io

 

 

Artillery를 이용한 부하 테스트

안녕하세요, 백엔드 팀의 윤지원입니다. 어느덧 테이블링의 일원이 된 지 일 년이 넘어가고 있네요. 일 년 동안 많은 경험을 했지만 그중 최근에 제가 겪었던 고민을 바탕으로 간단하게 부하 테

techblog.tabling.co.kr

 

 

서버 성능, 가용성 확보를 위한 전략

 

서버의 성능과 가용성을 확보하기 위한 전략에는 여러 가지가 있습니다. 스케일업, 캐싱, CDN, 비동기 처리, 그리고 스케일아웃이 그것입니다. 각각의 전략이 가진 장단점을 비교한 후, 저희 서비스에 가장 적합한 전략을 선택해야 했습니다.

 

스케일업 (Scale-up)

단일 서버의 성능을 향상시키는 가장 기본적인 접근 방법입니다. 하지만, 무한정 업그레이드할 수는 없기 때문에 확장성에는 한계가 있습니다.

 

서버 도식화

 

캐싱 (Caching)

자주 요청되는 데이터를 빠르게 제공하기 위해 사용합니다. 캐싱은 응답 시간을 단축시키고 서버 부하를 줄이는 효과적인 방법입니다.

 

CDN (Content Delivery Network)

전 세계에 분산된 서버를 통해 콘텐츠를 제공합니다. 이는 사용자에게 빠른 속도로 콘텐츠를 제공하고 대역폭 사용을 줄입니다.

 

비동기 처리 (Asynchronous Processing)

시스템의 비동기적 처리는 사용자 요청에 즉각적인 응답을 가능하게 하고, 복잡한 작업은 백그라운드에서 처리합니다.

 

스케일아웃 (Scale-out)

서버 인스턴스의 수를 증가시키는 방법으로, 여러 서버를 추가하여 트래픽을 분산시킬 수 있습니다. 이 방법은 클라우드 서비스를 활용하여 쉽게 구현할 수 있으며, 오토스케일링과 함께 사용될 수 있습니다.

 

오토스케일링은 서버 운영을 유연하게 만들어줍니다. 이러한 스케일아웃과 오토스케일링은 비용 효율성과 가용성 향상, 운영의 간소화, 그리고 시스템의 유연성과 확장성을 동시에 달성할 수 있게 해줍니다. 특히, 오토스케일링은 서비스의 트래픽이 예측 불가능한 패턴을 보일 때 빠르게 대응할 수 있는 장점이 있습니다.

 

 

scale out 이미지

 

스케일아웃과 오토스케일링 채택 및 근거

저희 서비스는 특정 시간에 사용자의 급증이 예상되는 상황을 대비하기 위해 스케일아웃과 오토스케일링을 적용하기로 했습니다. 특히 경기 결과 입력, 경기 통계 조회 같은 사용량이 잦은 페이지에 사용자 급증의 상황이 벌어질 것을 예방하기로 했습니다.

 

이러한 시나리오에서는 서버 인스턴스를 즉시 추가하거나 줄이는 유연성이 매우 중요하다 생각했습니다. 오토스케일링을 통해 서버 리소스를 자동으로 조절함으로써, 실시간 트래픽 변화에 즉각적으로 대응하며 서비스 중단 없이 안정적인 운영을 보장할 수 있었습니다.

 

 

트래픽 대응 결과와 그 의미

실제 테스트를 통해 저희 팀의 선택이 옳았음을 증명할 수 있었습니다. AWS EC2 t2.micro 인스턴스에서 오토스케일링 적용 후, 테스트 결과는 사용자 경험의 현저한 개선을 보여주었습니다.

 

스케일 아웃 & 오토 스케일링 전 그래프
스케일 아웃 & 오토 스케일링 전 그래프
스케일 아웃 전
스케일 아웃 & 오토 스케일링 전

 

 

스케일 아웃 & 오토 스케일링 후 그래프
스케일 아웃 & 오토 스케일링 후
스케일 아웃과 오토 스케일링 후
스케일 아웃 & 오토 스케일링 후

 

60초 동안 1500명의 가상 사용자들은 100% 성공률을 보였고, 심지어 1800명의 사용자가 동시에 이용해도 90% 이상의 높은 성공률을 기록했습니다. 이는 트래픽 증가에 대비한 저희의 시스템이 높은 가용성과 성능을 유지할 수 있음을 의미합니다.

 

 

대용량 트래픽 대응을 위한 성공적인 전략 수립

이상의 분석을 통해, 스케일아웃과 오토스케일링을 채택한 결정은 사용자들에게 지속적인 서비스를 제공하면서도 비용 효율적이고, 유연하며, 확장 가능한 서비스 운영을 가능하게 했습니다. 본 프로젝트를 통해, 대용량 트래픽에 대한 신속한 대응 및 서비스의 안정성 확보는 물론, 기술적인 도전에 대한 팀의 역량을 한층 더 높일 수 있었습니다.

 

▼ 이전 진행한 프로젝트 작업 ▼

 

 

축구팀 관리 프로젝트 20일차 - dataSource.query 사용, 부하테스트

축구팀 관리 프로젝트 20일차 - dataSource.query 사용, 부하테스트 벌써 프로젝트 진행한지 3주나 지났습니다. 시간이 어떻게 지나갔는지도 모를만큼 순식간에 3주를 바라보게 되었습니다. 며칠 뒤면

lemonlog.tistory.com

 

 

축구팀 관리 프로젝트 16일차 - 대용량 트래픽을 처리하는 두가지 방법

축구팀 관리 프로젝트 16일차 - 대용량 트래픽을 처리하는 두가지 방법 축구팀 관리 프로젝트를 진행한지도 2주가 지나고 있습니다. 이동안 대략적인 API 설계와 화면이 나타나고 있습니다. 다음

lemonlog.tistory.com