스케일 업(Scale-Up), 스케일 아웃(Scale-Out)에 대해 - (2/2)

cotaek2·2024년 10월 21일
0

전편에서는 스케일 업, 스케일 아웃이 뭔지, 장단점, 최적의 서버 확장 선택 전략에 대해서 다뤘다.

전편에서 다뤘던 내용을 가지고 프로젝트를 진행하고 있는 상황에서 어떤 서버 확장 방법이 최적인지 알아보려고 한다.


우선 진행하는 프로젝트에 대해 간단하게 설명하겠다.

CTwait

캐치테이블을 벤치마킹한 프로젝트입니다.

서비스 이용자는 두 분류로 나눠진다.
식당을 운영하는 오너, 식당을 방문하는 손님

오너 같은 경우에는 자신의 음식점을 등록해 언제 오픈, 마감을 하는 지 등록할 수 있다.
또한 식당 운영 중에 손님이 갑자기 많아져 몰릴 것을 대비해 원하는 날짜에 예약할 수 있는 시간대를 등록해서 운영할 수 있다.

손님은 본인이 가고 싶은 식당이나 즐겨가는 식당이 영업 중인지 아닌지 확인할 수 있다.
또한, 오너가 등록한 예약 가능 시간대 중 가고 싶은 시간대를 예약해서 이용할 수 있고 예약 날짜에 맞춰 손님에게 알람을 제공한다.

이처럼 프로젝트는 식당을 예약할 수 있는 서비스이고 프로젝트에 맞는 서버 확장 방법을 선택하기에 어떤 고민을 했는 지, 어떤 결론을 내렸는 지 공유하겠다.


우선 내가 고민한 것은 크게 두 가지이다.

1. 스케일 업을 선택한다면 내 상황은?

PC 사양 부분의 문제로 사용중인 PC는 서버용 PC가 아니다.
CPU는 4코어에 8스레드이고 RAM 16GB, SSD 256GB, HDD 2TB이다.

CPU와 RAM, HDD의 사양은 나쁘지 않을 수 있다. 하지만 나는 업그레이드가 필요하다고 생각했다.

CPU는 코어와 스레드가 높을 수록 더 많은 요청을 동시에 처리할 수 있다.

특히나 예약 서비스 같은 사용자가 몰려 트래픽이 급증했을 때 동시에 많은 요청을 처리해야하기 때문에 업그레이드가 필요한 것 같다.

RAM은 클수록 더 많은 데이터를 메모리에 캐싱할 수 있다.

이 말은 즉, 디스크에 접근할 필요 없이 빠르게 자주 요청되는 데이터들을 응답할 수 있다.
RAM이 충분하지 않으면 시스템이 스왑(디스크) 메모리를 사용하게 되어 성능 저하를 일으킬 수 있다.

HDD가 SSD보다 용량이 더 높은 문제이다.

SSD를 높은 용량으로 사용해야하는 이유는 HDD보다 훨씬 속도가 빠르기 때문이다.
일반적으로 HDD는 기계적인 움직임을 통해 데이터를 읽고 쓴다.
자성을 이용해 데이터를 저장하고 데이터는 회전하는 디스크에 자기 헤드를 통해 기록된다.

반면 SSD는 이 모든 걸 전기 신호로 해결한다.
반도체 칩 내에 데이터를 저장하는 방식으로 HDD처럼 기계적인 움직임이 없어 더 빠르고 안정적이다.
또한, SSD가 HDD보다 랜덤 접근 성능이 훨씬 뛰어나 데이터가 어디에 있든 상관없이 즉시 접근할 수 있다.

때문에 가장 큰 단점으로 물리적 한계에 도달하면 더 이상 성능을 향상시킬 수 없고 당장 고성능 하드웨어로 업그레이를 하려면 비용이 많이 들며, 서버를 업그레이드 하는 과정에서 서비스를 중단하고 다시 시작해야하는 점이다.

2. 배포 후 어떤 문제점이 일어날까?

예약 서비스를 이용하기 때문에 트래픽이 급증하는 문제가 있다.

인기 있는 식당이 여러개가 있고 해당 식당들의 예약이 10시에 열린다고 가정했을 경우 갑작스러운 트래픽 폭주가 발생할 수 있다. 다른 시간대에는 트래픽이 거의 없을 수 있지만 패턴이 불규칙하고 한정된 시간에 트래픽 급증이 예상된다.

트래픽 폭주가 발생하게 된다면 서버 과부하로 인해 장애가 발생하여 서비스가 중단되는 큰 문제를 발생시킬 수 있다.


"그럼 프로젝트에 맞는 최적의 서버 확장 방법은?"

위 고민들을 바탕으로 최적의 서버 확장 방법은 스케일 아웃(Scale-Out)이라고 생각했다.

첫번째로 미래 트래픽 증가 가능성을 염두했을 때 현재 PC의 한계로 당장 업그레드 할 경우 비용의 문제와 스케일 업을 선택했을 경우 추후에 다시 서버를 업그레이드 해야하는 확장성의 한계가 있다.

두번째로 스케일 아웃을 통해 자동 확장을 설정하여, 트래픽이 증가할 경우 서버를 자동으로 추가할 수 있고 트래픽이 많지 않을 때 서버 자원을 줄여서 비용을 절감할 수 있다.

세번째로 스케일 아웃 환경에서는 로드 밸런서를 통해 트래픽을 여러 서버로 분산할 수 있고 이는 서버 부하를 줄여 성능을 최적화할 수 있다.

즉, 서버 과부하로 인해 서비스가 중단되거나 성능이 저하될 수 있는 상황을 방지할 수 있다.

네번째로 예약 서비스를 이용할 경우 사용자 요청이 많아질때 예약관련 쿼리가 많아지면서 데이터베이스에 대한 부하도 증가한다. 때문에 DB에 부하가 집중될 수 있기 때문에 서버뿐만 아니라, 데이터베이스의 읽기/쓰기 작업도 분산할 수 있다.

위와 같은 이유들로 스케일 아웃 방법으로 선택했고 서비스를 운영해 나가야겠다.


참고자료

profile
그냥 해

0개의 댓글