필요성

  • 성능 저하와 사용자 증가
  • 가용성과 신뢰성
  • 비즈니스 성장과 확장성

수직 확장

  • 기존 서버 성능을 업그레이드하여 처리 능력 향상
    • 장점
      • 간단한 적용 : 기존 시스템을 크게 변경하지 않고, 서버의 하드웨어 성능만 업그레이드하면 성능 향상
      • 적은 복잡성 : 시스템 아키텍쳐 변경하지않고 관리 간단
    • 단점
      • 물리적 한계 : 수직 확장은 하드웨어의 물리적 한계에 도달하면 더 이상 확장할 수 없음
      • 단일 장애 지점 : 한 서버에 모든 것을 집중시키면, 그 서버에 장애가 발생하면 전체 시스템이 멈출 수 있음

수평 확장

  • 여러 대의 서버를 추가하여 처리 능력을 분산시키는 방식
  • 각 서버가 동일한 작업을 수행하며, 로드 밸런서를 통해 요청을 여러 서버에 분산하여 처리
    • 장점
      • 무한한 확장성 : 트래픽 증가에 유연하게 대응
      • 고가용성 : 한 서버에 문제 생겨서 나머지 서버가 계속 운영가능
    • 단점 
      • 복잡한 아키텍쳐 : 서버 간 데이터 동기화나 일관성 문제를 해결해야함
      • 데이터 일관성 문제 : 여러 서버에서 동시에 데이터를 처리할 때 일관성 문제가 발생할 수 있음

 

결국

데이터 일관성, 복잡성 증가, 비용문제를 해결해야함

 

소규모에서 대형으로 발전하기

  1. 소규모는 Monolithic 구조로 시작 (사용자가 증가할수록 시스템 성능이 떨어짐)
  2. 수직 확장 적용 : cpu, 메모리, 디스크 용량 등을 업그레이드 (트래픽 증가계속하면 서버 성능을 더이상 업그레이드할수없음 (물리적한계)
  3. 수평 확장 적용 : 여러대 서버로 트래픽 분산, 로드 밸런서를 사용해 사용자 요청을 여러 대의 서버로 분산 (고가용성, 서버 유연하게 확장)
  4. 데이터베이스 분산 및 샤딩 : 데이터베이스 병목현상 해결, 각 샤드가 독립적으로 데이터 처리
  5. 캐싱 적용 : 자주 사용되는 데이터 최적화 (Redis, Memcached같은 시스템 사용) : 사용자 응답시간 빠르고 데이터베이스 요청 줄어듬
  6. 마이크로 서비스 도입 : 각 기능을 독립적인 서비스로 분리 운영, 각 서비스가 독립적으로 배포, 확장가능, 유연성 증가
  7. 비동기 이벤트 처리 : 실시간으로 처리하지 않고 비동기적으로 처리, 주요 트랜잭션이 완료된 후 시간이 오래 걸리는 작업은 메시지 큐로 전달, 응답성을 높이고 시스템을 효율적으로 운영

'Backend' 카테고리의 다른 글

카프카  (5) 2025.02.13
Redis 개념  (0) 2025.02.09
분산 시스템  (0) 2025.02.03
대규모 트래픽 처리  (0) 2025.02.03
비동기 처리 시스템의 이해  (2) 2025.02.02

+ Recent posts