
스케일 업(Scale-Up)
정의
하나의 서버 성능을 더 키우는 방식
예시
- CPU 더 좋은 걸로 교체
- RAM 추가
- SSD 더 빠른 걸로 교체
- GPU 넣기
장점
- 구조가 단순하다(인프라 복잡도가 낮다)
- 애플리케이션 수정이 거의 없다.
- DB처럼 수평 확장 어려운 경우에 유용하다
단점
- 물리적으로 성능의 한계가 존재한다.
- 아무리 CPU나 RAM을 추가해도 결국에는 가격대비 성능 효율이 떨어지게 된다.
- 서버에 장애가 발생 시 전체 서버가 다운된다.
스케일업이 적합한 경우
- 강한 단일 스레드 연산
- 데이터 일관성 최우선(DB OLTP)
- 리소스 공유 큰 작업
스케일아웃(Scale-Out)
정의
서버 개수를 여러 개로 늘려서 처리
예시
- 사양이 낮은 서버들을 여러 개 돌리는 경우
장점
- 이론 상 확장이 무한으로 가능하다
- 가격 대비 성능 효율이 좋다
- 장애가 발생해도 나머지로 처리가 가능하다
단점
- 시스템 구조가 복잡해진다.
- 동기화/일관성 이슈가 많아진다. 특히 DB에서
- 설계의 중요성이 커진다.
스케일아웃이 적합한 경우
- 웹 서버
- API 서버
- 캐시 서버
- 메시지 처리
- 검색 시스템
MVC 패턴을 사용하거나 작은 팀 프로젝트 단위에서는 스케일업이 좋고
MSA 패턴을 사용하면 스케일 아웃으로 개발하는게 좋다.
결국에는 스케일업으로 서비스를 하다가 서비스가 커지는 경우에 스케일아웃을 진행하는 게 좋다.