
이 글에서 다루는 내용
온라인 서비스를 운영하기 시작하면 처음에는 비교적 적은 수의 사용자가 접속합니다.
사용자가 검색하거나 게시물을 열면 클라이언트가 서버에 요청을 보내고, 서버는 필요한 작업을 처리한 뒤 결과를 돌려줍니다.
서비스가 알려지면서 사용자가 늘어나면 같은 종류의 요청이 더 자주 들어오기 시작합니다.
한 시간에 100번 들어오던 요청이 1,000번, 10,000번으로 늘어나고, 특정 시간에는 많은 사용자가 동시에 접속하기도 합니다.
이처럼 처리해야 하는 요청과 데이터의 양이 증가하면 인프라도 더 많은 작업을 처리할 수 있는 구조로 커져야 합니다.
이때 등장하는 개념이 트래픽(Traffic), 확장(Scaling), 분산(Distribution)입니다.
먼저 알아둘 용어
- 트래픽(Traffic): 네트워크를 통해 오가는 요청과 데이터의 양
- 부하(Load): 서버나 시스템이 처리해야 하는 작업의 양
- 확장(Scaling): 증가한 작업량을 처리할 수 있도록 인프라의 처리 능력을 늘리는 것
- 스케일 업(Scale Up): 한 서버의 CPU, 메모리 등의 성능을 높이는 방식
- 스케일 아웃(Scale Out): 서버의 수를 늘려 여러 서버가 작업을 나누어 처리하도록 하는 방식
- 부하 분산(Load Balancing): 들어오는 요청을 여러 서버에 나누어 전달하는 것
- 분산(Distribution): 여러 장비나 시스템이 작업과 역할을 나누어 처리하는 구조
사용자가 늘어나면 서버가 처리할 작업도 늘어난다
온라인 쇼핑몰을 예로 들어보겠습니다.
한 사용자가 상품을 검색하면 서버는 검색 조건에 맞는 상품 정보를 찾고 결과를 전달합니다.
상품 상세 페이지를 열면 상품명, 가격, 재고, 이미지 등의 정보를 다시 가져옵니다. 로그인하거나 장바구니에 상품을 담고 주문하면 또 다른 요청이 발생합니다.
사용자 한 명이 서비스를 이용하는 동안에도 여러 요청이 이어집니다.
100명의 사용자가 동시에 서비스를 이용하면 서버는 여러 사용자의 요청을 함께 처리해야 합니다. 사용자가 1만 명으로 늘어나면 처리해야 하는 작업의 수도 크게 증가합니다.
이때 CPU는 더 많은 요청을 계산하고, 메모리는 더 많은 작업에 필요한 데이터를 보관합니다. 네트워크를 통해 이동하는 데이터의 양도 늘어나고 저장장치에서도 더 많은 데이터를 읽고 쓰게 됩니다.
앞서 살펴본 계산, 연결, 저장 인프라의 사용량이 함께 증가하는 것입니다.
트래픽은 서비스에 들어오는 흐름을 보여준다
서비스를 운영할 때 자주 사용하는 표현 가운데 하나가 트래픽(Traffic)입니다.
트래픽은 기본적으로 네트워크를 통해 오가는 요청과 데이터의 양을 의미합니다.
사용자가 웹페이지를 열거나 검색 버튼을 누르면 요청이 서버로 전달됩니다. 서버가 이미지나 검색 결과를 보내면 데이터가 다시 사용자에게 이동합니다.
사용자가 많아질수록 이런 흐름도 커집니다.
서비스 운영에서는 다음과 같은 상황을 트래픽 증가와 함께 살펴볼 수 있습니다.
- 웹사이트 방문자가 증가한 경우
- 같은 시간에 접속하는 사용자가 증가한 경우
- 동영상이나 이미지 전송량이 증가한 경우
- 검색, 주문, 결제 등의 요청이 증가한 경우
여기서 전체 사용자 수와 동시에 접속하는 사용자 수는 인프라에 서로 다른 영향을 줄 수 있습니다.
하루 동안 10만 명이 방문하더라도 접속 시간이 넓게 나뉘어 있으면 서버가 한 번에 처리하는 요청은 상대적으로 적을 수 있습니다.
콘서트 예매나 한정 상품 판매처럼 많은 사용자가 같은 시간에 접속하면 짧은 순간에 많은 요청을 처리해야 합니다.
기업이 서비스의 트래픽을 살펴보는 이유는 현재 인프라가 어느 정도의 요청을 처리하고 있는지 파악하고 필요한 처리 능력을 준비하기 위해서입니다.
처리할 일이 많아지면 인프라의 처리 능력을 늘린다
서버에는 한 번에 처리할 수 있는 작업량이 있습니다.
사용자가 적을 때는 한 대의 서버로도 서비스를 운영할 수 있습니다. 요청이 증가하면 CPU와 메모리 사용량이 높아지고 처리해야 할 작업이 쌓이기 시작합니다.
이때 인프라의 처리 능력을 늘리는 것을 확장(Scaling)이라고 합니다.
확장은 크게 두 가지 방향으로 생각할 수 있습니다.
- 현재 서버의 성능을 높이는 방법
- 서버의 수를 늘리는 방법
각각 스케일 업(Scale Up)과 스케일 아웃(Scale Out)이라고 부릅니다.

스케일 업 — 한 서버를 더 강하게 만든다
스케일 업(Scale Up)은 현재 사용하는 서버의 성능을 높이는 방식입니다.
예를 들어 CPU의 처리 능력을 높이거나 메모리 용량을 늘릴 수 있습니다.
기존 서버가 다음과 같은 구성이라고 생각해 보겠습니다.
- CPU 4코어
- 메모리 16GB
처리해야 하는 작업이 증가하면 다음과 같이 더 높은 성능의 서버를 사용할 수 있습니다.
- CPU 8코어
- 메모리 32GB
한 대의 서버가 사용할 수 있는 자원이 늘어나면서 더 많은 작업을 처리할 수 있게 됩니다.
서비스 초기에는 이런 방식으로 필요한 처리 능력을 확보하는 경우가 많습니다. 기존 구조를 유지하면서 서버의 성능을 높일 수 있기 때문입니다.
서비스 규모가 계속 커지면 한 대의 서버에서 사용할 수 있는 자원의 범위도 고려해야 합니다.
이때 여러 서버가 함께 요청을 처리하는 스케일 아웃으로 확장할 수 있습니다.
스케일 아웃 — 여러 서버가 작업을 나누어 처리한다
스케일 아웃(Scale Out)은 같은 역할을 수행하는 서버를 추가하는 방식입니다.
처음에는 서버 한 대가 사용자의 요청을 처리했다고 생각해 보겠습니다.
사용자가 계속 증가하면 서버를 두 대, 세 대, 네 대로 늘려 여러 서버가 요청을 나누어 처리할 수 있습니다.
구조를 간단하게 표현하면 다음과 같습니다.
사용자 요청
↓
서버 A / 서버 B / 서버 C
한 서버에 모든 요청을 보내는 구조에서 여러 서버가 함께 처리하는 구조로 확장된 것입니다.
예를 들어 쇼핑몰에 많은 사용자가 접속했을 때 일부 사용자의 요청은 서버 A가 처리하고, 다른 사용자의 요청은 서버 B와 서버 C가 처리할 수 있습니다.
서버를 추가하면 전체 시스템이 사용할 수 있는 CPU와 메모리도 함께 늘어납니다.
서비스 규모가 더 커질 때 서버를 추가해 처리 능력을 넓혀 갈 수 있다는 점이 스케일 아웃의 중요한 특징입니다.
여러 서버에 요청을 나누어 보내는 부하 분산
서버가 여러 대 있다면 들어오는 요청을 각 서버에 나누어 전달하는 과정이 필요합니다.
이를 부하 분산(Load Balancing)이라고 합니다.
부하 분산을 담당하는 시스템이나 장치를 로드 밸런서(Load Balancer)라고 부릅니다.
구조는 다음과 같이 이해할 수 있습니다.
사용자
↓
로드 밸런서
↓
서버 A / 서버 B / 서버 C
사용자의 요청은 먼저 로드 밸런서에 도착합니다.
로드 밸런서는 요청을 여러 서버에 나누어 전달합니다. 서버 A가 일부 요청을 처리하고 서버 B와 서버 C도 각각 다른 요청을 처리합니다.
이렇게 요청을 나누면 여러 서버의 처리 능력을 함께 사용할 수 있습니다.
한 서버에 요청이 집중되는 상황도 줄어듭니다.
앞서 #04에서 살펴본 병목의 관점으로 보면, 부하 분산은 특정 서버에 작업이 지나치게 몰려 전체 서비스의 처리 흐름이 느려지는 상황을 관리하는 방법 가운데 하나입니다.

분산은 여러 시스템이 일을 나누는 구조다
서비스 규모가 커지면 서버뿐 아니라 인프라의 여러 부분에서도 일을 나누는 구조가 사용됩니다.
이를 넓게 분산(Distribution)이라고 합니다.
가장 이해하기 쉬운 예가 여러 서버가 사용자의 요청을 나누어 처리하는 구조입니다.
파일을 전달하는 작업도 여러 시스템에서 나누어 처리할 수 있습니다.
예를 들어 많은 사용자가 사진이나 동영상을 보는 서비스에서는 모든 파일을 한 장소에서 보내기보다 여러 지역에 준비된 서버를 이용해 사용자와 가까운 곳에서 전달할 수 있습니다.
이때 활용되는 대표적인 기술이 CDN(Content Delivery Network)입니다.
한국에 있는 사용자는 한국이나 가까운 지역의 서버에서 파일을 받고, 미국에 있는 사용자는 미국과 가까운 서버에서 파일을 받을 수 있습니다.
서비스가 커질수록 계산, 연결, 저장과 같은 인프라의 여러 영역에서 필요한 작업을 나누어 처리하는 구조가 활용됩니다.
확장하면 새로운 병목도 함께 살펴봐야 한다
서버를 여러 대 추가하면 더 많은 요청을 처리할 수 있습니다.
서버가 많아지면 다른 인프라가 처리해야 하는 작업도 함께 증가합니다.
예를 들어 애플리케이션 서버가 세 대로 늘어나면 세 서버가 데이터를 읽기 위해 저장 시스템에 요청할 수 있습니다. 사용자에게 전달하는 데이터가 늘어나면 네트워크 사용량도 증가합니다.
#04에서 살펴본 병목과 균형이 다시 연결되는 지점입니다.
서버의 처리 능력을 늘린 뒤에는 저장장치, 네트워크, 전력과 같은 다른 인프라가 증가한 작업량을 함께 처리할 수 있는지도 살펴봐야 합니다.
인프라는 여러 구성 요소가 연결되어 하나의 서비스를 운영하기 때문에 확장도 전체 흐름을 기준으로 진행됩니다.
클라우드에서는 필요한 만큼 자원을 늘리고 줄일 수 있다
클라우드는 서버, 저장 공간, 네트워크 같은 컴퓨팅 자원을 필요한 규모로 사용할 수 있는 환경을 제공합니다.
기업은 서비스를 운영하면서 필요한 서버의 수를 늘리거나 줄일 수 있습니다.
트래픽이 증가하는 시간에는 서버를 추가하고, 트래픽이 줄어들면 사용하는 서버의 수를 줄이는 방식입니다.
이 과정을 자동으로 조정하도록 설정하는 기능을 오토 스케일링(Auto Scaling)이라고 합니다.
예를 들어 평소에는 두 대의 서버로 서비스를 운영하다가 많은 사용자가 접속하는 시간에는 네 대나 여섯 대로 늘릴 수 있습니다. 접속량이 다시 줄어들면 필요한 규모에 맞춰 서버 수도 줄일 수 있습니다.
이런 방식은 서비스가 처리해야 하는 작업량의 변화에 맞춰 인프라 규모를 조정하는 데 활용됩니다.
서비스의 성장은 인프라의 규모와 구조도 바꾼다
작은 서비스에서는 한 대의 서버가 많은 역할을 담당할 수 있습니다.
사용자가 늘어나면서 서버가 처리해야 하는 요청이 많아지면 더 높은 성능이 필요해집니다.
한 서버의 성능을 높이는 스케일 업을 사용할 수 있고, 여러 서버를 추가하는 스케일 아웃으로 처리 능력을 넓힐 수도 있습니다.
서버가 여러 대가 되면 로드 밸런서가 요청을 나누어 전달하고, 서비스 규모가 커질수록 인프라의 여러 영역에서도 작업을 분산하는 구조가 활용됩니다.
이 과정에서도 계산, 연결, 저장, 배치·제공, 운영 환경은 계속 함께 움직입니다.
디지털 인프라의 규모가 커진다는 것은 더 많은 사용자의 요청을 처리할 수 있도록 필요한 자원을 늘리고, 여러 장비와 시스템이 작업을 나누어 처리할 수 있는 구조를 만드는 과정입니다.
DANA NOTES 한 줄 정리
사용자가 늘어나면 인프라는 더 많은 트래픽을 처리할 수 있도록 확장되며, 서비스 규모가 커질수록 여러 서버와 시스템이 요청과 작업을 나누어 처리하는 분산 구조가 활용됩니다.


