-
스케일업(Scale-up)과 스케일아웃(Scale-out)데이터베이스/SQL 2022. 3. 1. 18:29
<SQL 첫걸음>이라는 책을 읽기 시작했는데 "스케일 아웃"에 대해 막연하게만 알고 있어서
"스케일 업"과 "스케일 아웃"에 대해서 정리하고자 합니다.
스케일 업 (Scale-up)
- 물리적인 성능 향상 (cpu나 memory 등)
- 고비용, 고효율
- 수직 스케일링 (vertical scaling)
- 단순하거나 빠른 작업(DB 갱신 자주 일어나야 하는 경우)에 적합
- 이런 경우 스케일 아웃에서는 데이터 정합성을 유지하기 어렵기 때문이다
<장점>
- 상대적으로 쉽다 (사양만 올리면 되기 때문에)
- 낮은 관리 비용
- 적은 관리 이슈
- 데이터 정합성 이슈 발생 가능성이 적다
<단점>
- 성능 향상에 한계가 있다
- 서버 1대가 분담하는 양이 많아져서 문제가 생기면 큰 타격
- 서버 교체나 업그레이드 시에 서비스 이용이 어려울 수 있다 (다운타임)
스케일 아웃 (Scale-out)
- 비슷한 사양의 서버를 추가로 연결
- 데이터 분석처럼 복잡한 작업에 더 적합
- 수평 스케일링 (horizontal scaling)
<장점>
- 확장에 용이 (확장의 유연성, 단계적인 확장 가능)
- 확장 비용이 상대적으로 적다
<단점>
- 관리하기 어렵고 관리 비용이 많이 든다 (데이터 정합성을 유지하기 위한 설계, 구축 비용 크다)
- 노드를 병렬 구조로 연결하기에 아키텍처에 대한 높은 이해도를 필요로 하고 이를 위해 로드 밸런싱이 필수다
- 데이터 정합성 이슈 발생 가능성이 커진다 (모든 서버에서 데이터 일관성 유지해야 하므로)
읽어보니 전체적인 설명은 쉽게 이해가 되지만 이를 현업에서 적용하려고 생각해보니 아직 어렵게 느껴집니다.
그렇지만 키 포인트는 "데이터 정합성"과 "의존성"이라고 생각합니다.
따라서 데이터가 빈번하게 바뀌는 경우에는 "스케일 아웃"에서는 데이터 정합성을 유지하기 어렵기에 "스케일 업"이 더 적합하다고 볼 수 있습니다.
반대로 데이터의 변화가 적은 웹 서버와 같은 경우에는 "스케일 아웃"이 더 합리적인 방법일 수 있습니다.
이는 의존성과도 같은 결을 가지고 있다고 생각합니다.
의존성이 없는 작업들의 경우에는 스케일 아웃을 통해서 성능 향상을 도모할 수 있고
의존성이 큰 작업의 경우에는 스케일 업을 통해서 성능 향상을 도모할 수 있다고 생각합니다.
물론 전자의 경우일 것이라 생각하지만 다소 헷갈리는 것은 데이터의 변화가 적은 웹 서버의 경우에 소규모의 사이트를 의미하는 것인지 아니면 웹 서버가 다른 것들에 비해 데이터의 변화가 적다는 의미인지 다소 헷갈립니다.
우선 이렇게 알아두고 실제로 회사에서 프로젝트를 진행해보면 어떤 경우에 어떤 방식이 더 적합한지에 대한 경험을 쌓을 수 있을 것이라 생각합니다.
<참고한 사이트>
https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/
https://junghyungil.tistory.com/151
'데이터베이스 > SQL' 카테고리의 다른 글
JOIN - Left Outer Join (0) 2022.05.30 COUNT와 그룹핑 - DISTINCT & GROUP BY (0) 2022.04.01 프로그래머스 SQL SELECT 정리 (0) 2022.03.24