brunch

트래픽 급증,대비 안 하면 이렇게 됩니다 (실제 사례)

트래픽 폭증에 의한 처리방법

by 개발개발빔
getty-images-YXC9PuBblTA-unsplash.jpg

예상치 못한 트래픽 폭증, 서버가 멈춰버렸다.

5년 차 개발자라면 한 번쯤은 겪어봤을 ‘그 사건’.

저 역시 프로젝트 중 뜻밖의 트래픽 폭증으로 인해 백엔드 서버가 다운되는 경험을 했습니다.

클라이언트는 마케팅 캠페인과 동시에 사용자 유입이 폭발적으로 늘어날 거라고만 말했지, 트래픽 처리 전략은 고려하지 않은 상태였어요.

당시 맡았던 프로젝트는 중고 명품 거래 플랫폼이었는데, TV 광고까지 타고 갑작스러운 실사용자가 몰리면서 서버는 감당하지 못하고 몇 차례 장애가 발생했습니다. 고객 입장에서는 “왜 안 되지?”라는 단순한 의문이었겠지만, 개발자인 제 입장에서는 “이걸 어떻게 막지?”라는 복잡한 질문이 쏟아지던 순간이었죠.



philip-oroni-BgolO5-9GB4-unsplash.jpg

트래픽 장애의 원인, 병목은 데이터베이스였다.

서버 자원은 오토스케일링으로 어느 정도 버텨냈습니다.

문제는 DB였습니다.

당시 사용하고 있던 RDBMS는 단일 인스턴스로 운영되고 있었고, Read 트래픽이 많았음에도 별도의 Replica 구성 없이 운영 중이었죠.


정확히 말하면, 조회수가 많은 상품 상세 페이지와 마이페이지 조회 요청이 몰리면서 DB의 CPU가 100%를 찍고 있었고, 그 여파로 전체 서비스가 지연되기 시작했습니다.


특히 사용자별 데이터를 너무 상세하게 저장하고 있었는데, 이게 오히려 쿼리 병목을 불러일으키는 원인이 됐습니다. 그제서야 "지금 우리가 잘못 설계한 게 뭔지" 하나씩 드러나기 시작했습니다.



philip-oroni-zRd5mRv0Txo-unsplash.jpg

긴급 대응, 결국 DB 마이그레이션을 결정하다.

문제를 일시적으로 해결하기 위해 일부 데이터를 캐싱하고, 로직 단에서 조회 요청을 줄이려는 시도를 했지만, 이미 구조적으로 한계가 있었습니다.

결국 클라이언트와 논의 끝에 DB 마이그레이션을 결심하게 됩니다.


우선 읽기와 쓰기 부하를 분리하는 구조로 리팩토링을 진행했고, 데이터 저장소도 기존 RDBMS에서 Amazon Aurora로 이전했습니다. 이 과정에서 데이터 정규화 수준을 조절하고, 자주 조회되는 테이블은 별도로 캐시 서버(Redis)에 올리는 식으로 트래픽 분산을 유도했습니다.


데이터 이전 중에는 다운타임을 최소화하기 위해 점진적 마이그레이션 전략을 사용했고, CloudWatch와 NewRelic을 통해 실시간 모니터링하면서 위험 구간을 조정해가며 안정적으로 이전을 마칠 수 있었습니다.




toa-heftiba-WbGOzwiN-oA-unsplash.jpg

경험을 통해 배운 것들, 성능은 설계에서 시작된다.

그 프로젝트를 통해 다시 한 번 뼈저리게 느꼈습니다.

성능 최적화는 ‘나중에 하는 것’이 아니라 ‘처음에 설계할 때부터 고려해야 하는 것’이라는 걸요.

트래픽이 몰릴 수 있는 타이밍을 예상하고, 캐싱 구조나 DB 리드/라이트 분리, 스케일 아웃 설계 등은 반드시 사전에 준비돼야 합니다.


그리고 무엇보다 중요한 건, 프로젝트라고 해서 “일단 완성하고 보자”는 접근은 위험하다는 점이에요.

저는 이제 클라이언트가 감당할 수 있는 트래픽 규모나 성장 가능성까지도 반드시 질문하고, 지속적인 성장을 염두에 둔 아키텍처 설계를 제안하려고 합니다.



juanjo-jaramillo-mZnx9429i94-unsplash.jpg

외주 개발, 기술 대응까지 신뢰할 수 있어야 한다.

많은 분들이 외주 개발사를 선택할 때 단순히 단가나 일정만 보고 결정하곤 합니다.

하지만 정말 중요한 건, 위와 같은 기술적 위기가 왔을 때 얼마나 빠르게, 얼마나 정확하게 대응할 수 있는지입니다.

제가 몸담았던 그 프로젝트도, 결국은 제대로 된 기술 대응이 있었기에 다시 안정화될 수 있었고, 클라이언트와의 신뢰도 이어질 수 있었어요.



외주 개발 파트너, ‘똑똑한개발자’를 추천하는 이유

만약 여러분이 외주 개발을 고려하고 계신다면,

단순히 개발만 잘하는 팀이 아니라 장기적인 운영과 위기 대응까지 신뢰할 수 있는 팀을 만나야 합니다.


똑똑한개발자는 그런 면에서 좋은 파트너가 되어줄 수 있는 개발사라고 생각합니다.

실제 실무 중심의 설계, 트래픽 대응 경험, 클라이언트와의 긴밀한 커뮤니케이션까지 갖춘 팀이기 때문에, 기술적 위기를 기회로 바꿔낼 수 있다고 생각합니다.


외주 개발이 고민이라면, ‘똑똑한개발자’를 한 번 추천드려요.


똑똑한개발자 홈페이지 :


keyword
작가의 이전글생산성을 높여주는 IDE 플러그인 추천