전편에서는 스케일 업, 스케일 아웃이 뭔지, 장단점, 최적의 서버 확장 선택 전략에 대해서 다뤘다.
전편에서 다뤘던 내용을 가지고 프로젝트를 진행하고 있는 상황에서 어떤 서버 확장 방법이 최적인지 알아보려고 한다.
우선 진행하는 프로젝트에 대해 간단하게 설명하겠다.
CTwait
캐치테이블을 벤치마킹한 프로젝트입니다.
서비스 이용자는 두 분류로 나눠진다.
식당을 운영하는 오너
,식당을 방문하는 손님
오너
같은 경우에는 자신의 음식점을 등록해 언제 오픈, 마감을 하는 지 등록할 수 있다.
또한 식당 운영 중에 손님이 갑자기 많아져 몰릴 것을 대비해 원하는 날짜에 예약할 수 있는 시간대를 등록해서 운영할 수 있다.
손님
은 본인이 가고 싶은 식당이나 즐겨가는 식당이 영업 중인지 아닌지 확인할 수 있다.
또한, 오너가 등록한 예약 가능 시간대 중 가고 싶은 시간대를 예약해서 이용할 수 있고 예약 날짜에 맞춰 손님에게 알람을 제공한다.
이처럼 프로젝트는 식당을 예약할 수 있는 서비스이고 프로젝트에 맞는 서버 확장 방법을 선택하기에 어떤 고민을 했는 지, 어떤 결론을 내렸는 지 공유하겠다.
우선 내가 고민한 것은 크게 두 가지이다.
1. 스케일 업을 선택한다면 내 상황은?
PC 사양 부분의 문제로 사용중인 PC는 서버용 PC가 아니다.
CPU는 4코어에 8스레드이고 RAM 16GB, SSD 256GB, HDD 2TB이다.
CPU와 RAM, HDD의 사양은 나쁘지 않을 수 있다. 하지만 나는 업그레이드가 필요하다고 생각했다.
특히나 예약 서비스 같은 사용자가 몰려 트래픽이 급증했을 때 동시에 많은 요청을 처리해야하기 때문에 업그레이드가 필요한 것 같다.
이 말은 즉, 디스크에 접근할 필요 없이 빠르게 자주 요청되는 데이터들을 응답할 수 있다.
RAM이 충분하지 않으면 시스템이 스왑(디스크) 메모리를 사용하게 되어 성능 저하를 일으킬 수 있다.
SSD를 높은 용량으로 사용해야하는 이유는 HDD보다 훨씬 속도가 빠르기 때문이다.
일반적으로 HDD는 기계적인 움직임을 통해 데이터를 읽고 쓴다.
자성을 이용해 데이터를 저장하고 데이터는 회전하는 디스크에 자기 헤드를 통해 기록된다.
반면 SSD는 이 모든 걸 전기 신호로 해결한다.
반도체 칩 내에 데이터를 저장하는 방식으로 HDD처럼 기계적인 움직임이 없어 더 빠르고 안정적이다.
또한, SSD가 HDD보다 랜덤 접근 성능이 훨씬 뛰어나 데이터가 어디에 있든 상관없이 즉시 접근할 수 있다.
때문에 가장 큰 단점으로 물리적 한계에 도달하면 더 이상 성능을 향상시킬 수 없고 당장 고성능 하드웨어로 업그레이를 하려면 비용이 많이 들며, 서버를 업그레이드 하는 과정에서 서비스를 중단하고 다시 시작해야하는 점이다.
2. 배포 후 어떤 문제점이 일어날까?
"그럼 프로젝트에 맞는 최적의 서버 확장 방법은?"
즉, 서버 과부하로 인해 서비스가 중단되거나 성능이 저하될 수 있는 상황을 방지할 수 있다.
참고자료