서비스를 운영하다 성장을 하게 되어 점점 많은 부하를 견뎌야 하게 되면
서버를 확장해줘야한다
이때 확장하는 방식에는 수직적 확장과 수평적 확장으로 나눌 수 있다
1. 수직적 확장 (Scale up)
서버의 스펙을 더 좋은것으로 업그레이드 하는것을 뜻한다
예를 들어 램 32GB 를 쓰다가 64GB로 늘린다거나
CPU를 더 좋은것으로 바꿔주는것을 말할 수 있다
수직적 확장은 확장 과정이 비교적 간단하다는 장점이 있다
하나의 서버를 관리하기 때문에 여러 서버를 클러스터링 하고
데이터 일관성을 유지하기 위한 비용이 필요없다
단점도 존재하는데 컴퓨터의 스펙을 더 좋게 하는것에는 한계가 있고
스펙이 좋을 수록 더 많은 비용을 지불하게 된다
또한 CPU 업그레이드 시 메인보드와의 호환성 체크
특정 제조사의 제품만을 사용해야하는 등의 문제도 발생한다
그리고 스펙을 업그레이드 하는동안 다운타임이 발생한다
하지만 더 중요한건 단일 서버이기에 서버의 부하가 집중되는것이 큰 문제다
또한 하나의 시스템에 문제가 발생시 모든 시스템 사용이 불가능해 장애에 치명적이다
따라서 수직확장은 데이터의 일관성, 무결성이 중요한 데이터베이스 서버에 적합하다
2. 수평적 확장 (Scale out)
서버의 스펙을 업그레이드 하는 대신에
여러대의 서버를 추가로 설치하는것을 수평적 확장이라고 한다
즉 하나의 서버가 처리하는 일을 여러대가 나눠서 처리하는것이다
여러 서버를 운영하다 보니 클러스터링 작업에 추가 비용이 든다
예를 들어 로드 밸랜서가 있다
따라서 기술적으로나 관리적으로나 수직적 확장에 비해 까다롭고 어렵다
또한 여러 서버들은 네트워크를 통해 연결되므로
네트워크 상황에 따라 확장을 해도 원하는 성능을 못 낼 수도 있다
하지만 장애에 치명적이지 않고 이론적으로는 확장에 제한이 없어서
무한대로 확장이 가능하다
일반적으로 사용자의 수를 예측할 수 없는 상황들
블랙프라이데이 같은 이벤트를 했을때 를 예를 들면
특정 기간, 특정 시간에만 유저가 급격하게 증가하는
그러한 특성을 가진 웹(앱) 서비스에는 수평적 확장이 잘 맞는다
유저가 급격하게 늘었을때 미리 서버 여러대를 확보해 뒀다가
풀어서 쓰고 유저가 줄어들면 서버를 줄이면 되기 때문이다
스펙을 업그레이드 한거라면 스펙을 다시 낮춰야하는게 어려울것이다
'DataBase' 카테고리의 다른 글
[DataBase] JPA N+1 문제 원인과 해결 방법 (0) | 2023.04.29 |
---|---|
[DataBase] PostgreSQL 설치 및 트러블슈팅 (0) | 2023.03.07 |
[DataBase] JPA 관련질문 (꼬꼬무 대비 정리) (0) | 2023.01.09 |
[DataBase] DB관련질문 (꼬꼬무 대비 정리) (0) | 2023.01.06 |
[DataBase] 조인 (0) | 2022.11.26 |