시스템 설계 기본: 시스템이 실제로 스케일링되는 방식

발행: (2026년 4월 9일 AM 06:22 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

System Design Basics

대부분의 시스템은 분산된 형태로 시작하지 않는다. 간단하게 시작해서 규모가 커짐에 따라 진화한다.

1. 단일 서버

모든 것이 한 대의 머신에서 실행된다:

  • 애플리케이션
  • 데이터베이스

구축은 쉽지만, 깨지기 쉽다.

2. 애플리케이션과 데이터베이스 분리

데이터베이스를 별도의 서버로 옮긴다.

이점

  • 성능 향상
  • 독립적인 확장 가능

3. 수평 확장

여러 대의 애플리케이션 서버를 추가한다. 이제 시스템은 더 많은 트래픽을 처리할 수 있다.

문제

사용자는 어떻게 올바른 서버에 도달할까?

4. 로드 밸런서

들어오는 요청을 서버들에 고르게 분배한다.

이점

  • 과부하 방지
  • 가용성 향상

5. 데이터베이스 복제

  • 기본(Primary) 데이터베이스는 쓰기 담당
  • 복제본(Replica)은 읽기 담당

이점

  • 기본 데이터베이스 부하 감소
  • 읽기 성능 향상

6. 캐싱

Redis 혹은 인‑메모리 캐시를 사용한다.

저장 대상

  • 자주 접근되는 데이터
  • 세션 데이터

이점

  • 응답 속도 향상
  • 데이터베이스 쿼리 감소

7. CDN

정적 파일을 사용자와 가까운 위치에서 제공한다.

이점

  • 지연 시간 감소
  • 백엔드 부하 감소

8. 메시지 큐

비동기 작업을 위해 큐를 사용한다. 예:

  • 이메일
  • 알림
  • 백그라운드 작업

이점

  • 시스템 구성 요소 간 결합도 감소
  • 신뢰성 향상

9. 데이터베이스 샤딩

데이터를 여러 데이터베이스에 분산한다.

이점

  • 대규모 처리 가능

트레이드‑오프

  • 복잡성 증가

10. 모니터링

다음 항목을 추적한다:

  • 지연 시간
  • 오류
  • 트래픽

모니터링 없이는 눈이 먼 것이다.

핵심 아이디어

시스템은 처음부터 규모에 맞춰 설계되지 않는다. 병목 현상이 나타날 때마다 점진적으로 진화한다.

0 조회
Back to Blog

관련 글

더 보기 »

Event-Driven Architecture(EDA) — 개요

Event‑Driven Architecture(EDA)란 무엇인가? Event‑Driven Architecture는 사용자 활동을 실시간으로 처리하도록 설계된 확장 가능한 시스템으로, 분산된 …