스케일 업과 스케일 아웃은 인프라를 확장하기 위한 방법이다.
서버를 운영하다가 이용자가 증가하거나 사업을 확장하게 되면 더 많은 서버 용량과 성능이 필요하게 된다.
이러한 상황에서 두 가지 방법으로 문제를 해결할 수 있다.
기존 서버의 사양을 보다 높은 사양으로 업그레이드해서 시스템을 확장하는 것을 말한다.
하드웨어의 경우 서버에 디스크를 추가하거나 CPU나 RAM을 업그레이드 할 수 있고,
소프트웨어의 경우 AWS의 EC2 인스턴스 사양을 높인다고 생각하면 된다.
하나의 서버의 능력을 업그레이드 하기 때문에 수직 스케일링(Vertical scaling)이라고도 한다.
추가적인 네트워크 연결 없이 용량을 증강할 수 있기 때문에 비교적 쉽고 관리 비용이나 운영 이슈가 적다.
성능 향상에 한계가 있으며, 성능 향상에 따른 비용 부담이 크다.
서버 한 대가 부담하는 양이 많아서 서버에 문제가 생기면 큰 타격을 입게 된다.
기존의 서버를 교체하는 동안 서비스를 이용할 수 없는 다운타임이 불가피하다.
향후 확장 가능성에 대비해 서버를 현재 필요한 만큼보다 더 많은 용량이나 성능을 확보해놓는 경우가 많다.
예상보다 요구되는 정도가 다르거나 확장의 필요성이 없어졌을 경우 추가로 확보해놓은 만큼의 손해가 발생하게 된다.
OLTP는 다수의 작은 트랜잭션을 실시간으로 빠르게 처리하는 데 초점이 맞춰진 데이터베이스 처리 시스템으로, 복잡한 분석 보다는 단순한 CRUD 작업을 주로 처리한다.
트랜잭션이 순차적이고 종종 ACID 특성을 보장해야 하기 때문에, 데이터 일관성을 유지하는 데 고성능의 단일 서버가 유리하다.
MySQL, PostgreSQL, Oracle DB 등이 OLTP로 설계되었다.
장비를 추가해서 시스템을 확장하는 것을 말한다.
비슷한 사양의 서버를 추가로 연결하기 때문에 처리할 수 있는 데이터 용량이 증가되며, 기존 서버의 부하를 분담하므로 성능 향상의 효과를 기대할 수 있다.
각 서버에 걸리는 부하를 균등하게 해주는 로드밸런싱(load balancing)이 필수적으로 동반되어야 한다.
여러 대의 서버로 나눠 시스템을 확장하기 때문에 수평 스케일로 불리기도 한다.
서버를 필요할 때마다 필요한 만큼 추가하면 되기 때문에 장기적인 용량 증가 추이를 예측하지 않아도 된다.
여러 노드를 연결해 병렬 컴퓨팅 환경을 구성하고 유지하기 위해 아키텍처에 대한 높은 이해도가 요구된다.
서버의 수가 늘어날수록 관리가 어려우며, 아키텍처의 설계 단계에서부터 고려되어야 한다.
노드를 확장할수록 문제 발생의 잠재 원인 또한 추가한 만큼 늘어나게 된다.
대규모 데이터 세트를 처리하고 분석하는데 중점을 두는 OLAP의 경우, 여러 노드로 워크로드를 분산시키는 scale-out이 효율적이다.
분산 처리를 통해 대량의 데이터를 동시에 처리할 수 있고, 실시간성보다는 분석 정확성이 더 중요하다.
OLAP는 데이터가 계속 증가하는 환경이기 때문에 scale-out이 비용 및 운영 면에서 유리하다.
Hadoop, Apache Druid, Amazon Redshift와 같은 분산 데이터 처리 플랫폼이 scale-out 기반으로 설계되었다.
https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/