books/Infrastructure

대규모 데이터 처리 입문

836586697769 2024. 8. 19. 17:48

메모리와 디스크, 웹 애플리케이션과 부하

「대규모 서비스를 지탱하는 기술」 Chapter 02


  • 대규모 데이터의 어려움 → 메모리 내에서 계산할 수 없음 → 디스크에 있는 데이터를 검색해야함 → 디스크는 느리므로 I/O 시간이 걸림 → 어떻게 대처할 것인가?
  • DB 확장성 확보의 어려움 (웹 애플리케이션 3단 구조 프록시 ↔ AP서버 ↔ DB 에서)
    • AP 서버는 CPU 부하만 걸리므로 분산이 간단함 → 데이터를 분산해서 갖고 있는 것이 아니므로 새로운 서버를 추가하고자 한다면 원래 있던 서버와 완전히 동일한 구성(복사본)을 갖는 서버의 대수를 늘리기만 하면 간단히 확장 가능 → 요청을 균등하게 분산하는 것은 로드밸런서가 해줌
    • I/O의 부하에는 문제가 있음 → DB와 DB’(복사본)의 데이터 동기화 문제
    • AP 서버는 디스크를 거의 사용하지 않지만 DB는 디스크를 많이 사용함
    • 정리
      • CPU 부하의 규모조정은 간단함 → 같은 구성의 서버를 늘리고 로드밸런서로 분산 (e.g. 웹, AP 서버, 크롤러)
      • I/O 부하의 규모조정은 어려움 (e.g. DB, 대규모 데이터)
  • 대규모 데이터를 다루기 위한 급소
    1. “어떻게 하면 메모리에서 처리를 마칠 수 있을까?” 고민하기 → 디스크 seek 횟수 최소화
    2. 데이터량 증가에 강한 알고리즘 사용
    3. 데이터 압축이나 검색기술과 같은 테크닉 활용 → 디스크 읽는 횟수 최소화 가능, 메모리에 캐싱 쉬워짐
  • 대규모 데이터를 다루기 전 3대 전제지식
    1. OS 캐시
    2. 분산을 고려한 RDBMS 운용
    3. 알고리즘과 데이터 구조

'books > Infrastructure' 카테고리의 다른 글

알고리즘 실용화  (0) 2024.09.01
대규모 데이터 처리 실전 입문  (0) 2024.08.21
분산을 고려한 MySQL 운용  (0) 2024.08.20
OS 캐시와 분산  (0) 2024.08.20
대규모 웹 서비스 개발 오리엔테이션  (0) 2024.08.19