Scale-up vs Scale-out, 비용 관점에서 다시 보기

본문 : 바로가기
"트래픽이 늘면 scale-out이 답이다. scale-up은 비싸고 한계가 있다." 이 문장은 너무 자주 들어서 한 번도 의심해본 적이 없었습니다. 그런데 어느 날 AWS RDS 가격표를 직접 들여다보다가 멈칫했습니다. 서버 사양을 두 배로 올리는 것과 서버를 한 대 더 추가하는 것의 비용이 거의 같았기 때문입니다. 과연 scale-out이 항상 정답일지 비용적인 측면에서 확인해보고 싶어 정리해보려고 합니다.

따져보기

"Scale-out이 더 싸다"는 정말일까?

'큰 서버 한 대를 사는 것보다 작은 서버 여러 대를 운영하는 게 더 저렴하다'는 근거는 보통 고사양 서버는 가격이 비선형적으로 비싸진다는 데서 옵니다. 쉽게 말해, 사양이 두 배가 되면 가격이 두 배가 아니라 세 배, 네 배로 뛴다는 이야기죠. 직접 AWS RDS의 r6g 시리즈(메모리 위주의 서버 종류 중 하나) 가격을 확인해보면 흥미롭습니다. 서울 리전, MySQL 기준 대략값이에요. image 같은 시리즈 안에서는 자원(CPU·메모리) 한 단위당 가격이 거의 일정합니다. 즉, large 두 대를 운영하든, xlarge 한 대로 올리든 서버 요금 자체는 같습니다. "scale-out이 압도적으로 싸다"는 말은 적어도 서버 요금만 보면 사실이 아니었던 거죠.

그럼 왜 사람들은 scale-out이 싸다고 할까?

물론 가격이 비선형적으로 뛰는 구간이 분명히 존재합니다. 중간 구간에서는 두 방식의 서버 요금이 비슷하다는 점, 이게 첫 번째 발견이었습니다.

"비용"이라는 단어가 숨기고 있는 것들

서버 요금 외에 따라붙는 비용들

가격표만 보면 비슷해 보이지만, 실제 청구서는 다르게 찍힙니다. Scale-out에 추가되는 비용 Scale-up에 추가되는 비용 눈에 안 보이는 운영 비용 엔지니어의 시간도 비용입니다. 그리고 종종 서버 비용보다 비쌉니다.

사실 둘은 같은 문제를 푸는 게 아니다

비교 자체가 성립하지 않는 경우도 많습니다. 읽기 요청이 90%, 쓰기 요청이 10%인 서비스에서 쓰기는 여유로운데 읽기 부하만 폭증한다면 복제본 추가가 자연스럽습니다. 반대로 읽기와 쓰기 비율이 5:5에 가까운데 쓰기 응답 속도가 문제라면, 읽기 복제본을 아무리 추가해도 해결되지 않습니다. "어느 게 더 싸냐"는 질문에는 항상 '어떤 종류의 트래픽이냐'라는 전제가 빠져 있습니다.

Scale-up의 진짜 한계

가장 본질적인 차이는 결국 천장입니다. 어떤 서버 시리즈든 살 수 있는 가장 큰 사양이 정해져 있습니다. 거기에 도달하면 그다음은 무조건 여러 대로 나누는 길밖에 없어요. 선택의 여지가 없습니다. 그래서 많은 팀이 "언젠가 분산해야 한다면 일찍 시작하는 게 낫다"는 논리로 scale-out을 택합니다. 이건 비용이라기보다 미래에 닥칠 비용을 미리 분산해두는 보험 관점에 가깝습니다.

마치며

처음에는 단순한 가격 비교 글을 쓰려고 했습니다. 그런데 들여다볼수록 비용이라는 단어가 가리고 있는 게 너무 많다는 걸 알게 됐습니다. 인스턴스 요금, 스토리지, 네트워크, 다운타임, 엔지니어 시간, 미래의 천장까지 이걸 다 합쳐서 단일한 숫자로 비교하는 건 사실 불가능에 가깝습니다. 다만 한 가지는 분명해졌습니다. "scale-out이 무조건 싸다" 혹은 "scale-up은 한계가 있으니 피해야 한다"는 말은 반쪽짜리 진실이라는 것. 중간 트래픽 구간에서는 scale-up이 가장 단순하고 충분히 합리적인 선택일 수 있습니다. 복잡도를 미리 끌어안는 비용이 인스턴스 가격 차이보다 클 수도 있으니까요. 다음번에 인프라 의사결정 회의에서 누군가 "scale-out이 더 쌉니다"라고 말한다면, "어떤 비용 기준으로요?"라고 한 번 되물어볼 수 있게 된 것 같습니다.