HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
🪵
대규모 서비스를 지탱하는 기술
/
2️⃣
챕터 02 대규모 데이터 처리 입문
2️⃣

챕터 02 대규모 데이터 처리 입문

강의 5 대규모 데이터 처리의 어려운 점

대규모 데이터의 어려움은 메모리 내에서 계산할 수 없다는 점

  • 메모리 내에서 계산할 수 없개 되면 디스크에 있는 데이터를 검색할 필요가 있다.
  • 하지만 디스크는 느리다 → I/O에 시간이 걸린다
 

디스크는 왜 느릴까?

notion image
 
메모리는 전기적인 부품이므로 물리적 구조는 탐색속도와 그다지 관계없다.
마이크로초(10^-6초)단위의 포인터 이동으로 탐색이 수행된다.
 
한편 디스크는 헤드의 이동, 원반(디스크)의 회전 이라는 물리적인 동작을 수반한다.
각각 수 밀리초(10^-3초)가 걸리는 동작이다.
 
다음으로 탐색에 사용되는 것이 CPU 의 캐시에 올리기 쉬운 알고리즘이나 데이터 구조라면 메모리 내용이 CPU캐시에 올라가므로 더욱 빨라져 나노초(10^-9초) 단위로 처리할 수 있다.
 

OS 의 도움!

os 는 디스크의 단저인 물리적 동작에 따른 시간 소요를 커버하기 위해 연속된 데이터를 같은 위치에 쌓고 데이터를 읽을때 페이지 단위로 읽음으로써 디스크의 회전을 최소화 합니다.
 

강의 6 규모조정의 요소

규모조정 (Scaling)
  • Scale Out - 동일한 성능의 하드웨어를 여러대 배치하는 것
  • Scale Up - 단일 하드웨어의 성능을 높이는것
 

웹 애플리케이션과 부하의 관계

  • 애플리케이션 서버 - CPU bound
    • 서버를 여러대 두고 로드밸런싱을 적용한다.
  • DB 서버 - I/O bound
    • I/O 부하는 더 복잡하다
    • 강의 7
 

강의 7 대규모 데이터를 다루기 위한 기초지식

1 프로그램을 작성할 때의 요령
1) 메모리에서 처리를 마칠 수 있도록
  • 디스크 seek 횟소 최소화
  • 국소성을 활용한 분산
2) 데이터량 증가에 강한 알고리즘을 사용
  • O(n) → O(logn)
3) 데이터 압축, 정보검색 기술
 
2 프로그램 개발의 근간이 되는 기초
1) OS 캐시 - 3장
2) 분산을 고려한 RDBMS - 4장
3) 대규모 환경에서 알고리즘과 데이터 구조 - 5장