대규모 시스템이란? 그리고 우리가 왜 고민해야 하는가
2025. 4. 21. 20:51ㆍBack-End/대규모 시스템 설계
반응형
대규모 시스템이란?
"대규모 시스템"이라는 말을 들으면 많은 데이터를 다루는 시스템이라고만 생각하기 쉽다. 하지만 실제로는 단순히 데이터 양이 많은 것만이 아니다. 다음과 같은 고민이 함께 들어가야 한다:
- 수많은 요청을 동시에 처리할 수 있는 병렬 처리
- 특정 부분에서 시스템 전체의 성능을 떨어뜨리는 병목 지점 최소화
- 사용자가 많아져도 쉽게 대응 가능한 확장성 있는 구조
- 기능이 많아지고 복잡해질수록 유지보수가 가능한 설계
그럼 이런 시스템은 언제부터 "대규모"일까?
정확한 기준은 없다. 단일 서버로 운영하다가 더는 감당이 되지 않아 서버를 수평으로 확장(Scale-Out)하기 시작했다면, 그때부터 대규모 시스템을 고려해야 할 때다.
예시: 게시판 시스템의 진화
- 초기 구조
- 사용자가 많지 않아 서버 한 대에 DB도 같이 있음
- 트래픽 증가
- 게시판 글 조회가 많아지면서 서버 부하 발생
- 처음 시도한 해결책
- 서버 성능 업그레이드 (Scale-Up)
- 한계 도달
- 더 이상 하드웨어로는 해결 불가, 수평 확장(Scale-Out) 필요
- 시스템 분리
- 게시글, 댓글, 좋아요 등 기능을 나누어 여러 애플리케이션으로 구성 (Microservice Architecture)
왜 이걸 알아야 할까?
우리는 지금까지 단일 서버 구조에 익숙했을 수 있다. 하지만 실무에서는 사용자 수나 트래픽이 늘어나면서 이러한 확장성, 장애 대응, 캐시 설계, 데이터 분산 저장 등에 대해 끊임없이 고민하게 된다.
이 강의에서는 실제로 게시판 기능을 만들면서 아래와 같은 현실적인 문제를 다룬다:
- 사용자 수가 늘어나면 어떻게 서버를 늘릴 것인가?
- 게시글 수가 많아지면 DB를 어떻게 나눌 것인가?
- 조회수, 좋아요 수를 빠르게 카운트하려면 어떤 전략이 필요할까?
- 장애가 났을 때 서비스를 계속 운영할 수 있는 방법은?
반응형
'Back-End > 대규모 시스템 설계' 카테고리의 다른 글
성능과 안정성을 높이는 비동기 처리: 메시지 큐(Message Queue)의 이해와 활용 (1) | 2025.04.22 |
---|---|
데이터베이스를 빠르게 만드는 마법, 캐싱(Caching)의 기본 개념과 전략 (0) | 2025.04.21 |
DB가 커졌을 때 꼭 알아야 할 '샤딩(Sharding)'의 개념과 방법들 (0) | 2025.04.21 |
Monolithic과 Microservice 구조의 차이: 언제, 왜 나눠야 할까? (1) | 2025.04.21 |