대규모 서비스를 지탱하는 기술, 6강 규모 조정의 요소 요약
스케일 업과 스케일 아웃 전략
- 스케일 업보다는 스케일 아웃이 주류
- 하드웨어 가격 차이가 아주 많이 난다.
- 시스템 구성에 유연성이 크다.
CPU 부하와 I/O 부하
- 데이터와 관련된 작업 ex.DB 에 질의하는 부분 등을 빼면 나머지는 CPU 부하
- 데이터 작업을 수행하는 경우 DB 서버 측면에서는 I/O 부하
- 애플리케이션에 걸리는 부하는 단순히 애플리케이션 서버를 더 늘리고 로드밸런서로 부하 분산을 해주면 됨
- DB 에 걸리는 I/O 부하는 단순하지 않음
- DB 를 여러개 클러스터링해서 사용하려면 DB 에 있는 데이터 쓰기 내역을 매번 동기화해줘야 함
정리
- CPU 부하의 규모 조정은 간단하다.
- 서버를 늘리고 로드 밸런서로 분산
- 웹, AP 서버, 크롤러
- I/O 부하의 규모 조정은 어렵다.
- DB
- 대규모 데이터
CPU Bound 프로그램과 I/O 바운드 프로그램
- CPU Bound 프로그램: 계산을 많이 하는 프로그램
- I/O Bound 프로그램: 파일 검색 등을 하는 프로그램
멀티 태스킹 OS 와 부하
- OS 에서 지원하는 멀티 태스킹은 실제로는 여러 태스크를 전환해가며 작업을 처리하는 것
- 이 과정에서 대기 상태의 태스크가 늘어나면 Load Average 가 높아지게 됨
- Load Average: 처리를 실행하려고 해도 실행할 수 없어서 대기하고 있는 프로세스의 수
Load Average 대상 프로세스
- CPU 의 실행 권한이 부여되기를 기다리고 있는 프로세스
- 디스크 I/O 가 완료하기를 기다리고 있는 프로세스
단, Load Average 자체는 대기 태스크 수만 나타낸다.
이를 보는 것만으로 CPU 부하, I/O 부하 중 어떤 것이 높은지 알 수 없다.
리소스 중 어디가 병목인지 판단하려면 좀 더 자세하게 조사해야 한다.
데이터 읽는 태스크가 많이 쌓이면 시스템이 느려지지만, 키보드 입력 태스크는 많이 쌓여도 시스템이 느려지진 않는다.
반응형
'인프라 > 대규모 서비스를 지탱하는 기술' 카테고리의 다른 글
대규모 서비스를 지탱하는 기술, 8강 OS의 캐시 구조 요약 (0) | 2023.06.23 |
---|---|
대규모 서비스를 지탱하는 기술, 7강 대규모 데이터를 다루기 위한 기초 지식 요약 (0) | 2023.06.23 |
대규모 서비스를 지탱하는 기술, 5강 대규모 데이터 처리의 어려운 점 요약 (0) | 2023.06.23 |
대규모 서비스를 지탱하는 기술, 4강 대규모 데이터란 요약 (0) | 2023.06.23 |
대규모 서비스를 지탱하는 기술, 3강 서비스 개발의 현장 요약 (0) | 2023.06.23 |