사용자 수에 따른 규모 확장성

개발새발log·2022년 4월 7일
0

가상면접 사례로 배우는 대규모 시스템 설계 기초를 읽고 정리한 내용입니다

1장 요약

단일 서버에서 시스템의 규모를 확장해나가는 과정에서 필요한 요소들을 단계적으로 소개한다.

기본 아키텍처

  • 클라이언트: 웹 브라우저, 모바일 앱
  • 웹서버
  • 데이터베이스: RDBMS, NoSQL(키-값, 그래프, 칼럼, 문서)

로드밸런서

: 웹서버에 트래픽 분산시키는 역할
-> 시스템의 가용성을 높임 (단일 서버의 단점 X)

데이터베이스 다중화

  • master-slave
    - master: insert, delete, update 연산
    - slave (master의 복사본): read 연산

응답시간(latency) 개선하기

  • 캐시와 CDN 활용

캐시

: 자주 참조되는 값 또는 값비싼 연산 결과를 저장하는 임시 메모리

CDN (Content Delivery Network)

: 정적 컨텐츠를 전송하는 데 쓰이는, 지리적으로 분산된 서버의 네트워크

무상태 아키텍처

  • 웹 계층을 수평적으로 확장(scale-out)하기 위해 무상태(stateless)하게 설계
  • 따로 상태 정보를 저장하는 데이터베이스를 두는 게 바람직

데이터 센터

  • 지리적 라우팅: 사용자를 가장 가까운 데이터 센터로 안내

데이터베이스의 규모 확장하기

  • 샤딩: 데이터베이스의 수평적 확장
  • 메시지 큐, 로그, 메트릭, 자동화 + 데이터베이스의 규모를 확장한 디자인
profile
⚠️ 주인장의 머릿속을 닮아 두서 없음 주의 ⚠️

0개의 댓글