1. 대량의 액세스가 있는 서비스에서 서버 1대로 처리할 수 없는 부하를 처리하는 방법
1) Scale-out : 저가의 하드웨어를 횡으로 나열해서 확장성 확보하는 전략
※ scale-out 전략 도입 시 발생 가능한 문제 : 로드밸런서 사용에 따른 데이터 동기화 처리 문제, 네트워크 통신의 지연시간 발생 문제
2) Scale-up : 하드웨어의 성능을 높여 처리능력을 끌어올리는 방법
2. 다중성 확보
- 특정 서버가 고장 나거나 성능이 저하될 때 서비스를 계속할 수 있도록 구성해야 함.
3. 서버가 100대일 경우
- 어떤 서버가 무슨 역할을 하는지 파악 어렵다.
- 뿐만 아니라 각 서버가 어떤 상황에 처해있는지 이를 테면 해당 서버에 대한 부하가 괜찮은지, 디스크 용량이 충분한지, 보안 설정에 미비한 점은 없는지 등 파악이 어렵다.
-> 물론 감시용 소프트웨어, 정보관리 툴 등을 사용해 파악할 수 있음
4. 대규모 데이터량에 대한 대처
- 컴퓨터의 데이터 처리 구조 :
1) 하드디스크에서 데이터를 로드해서 메모리에 저장 :
하드디스크에서 데이터를 읽어올 때는 헤드 이동이나 디스크 원반의 회전이라는 물리적 동작이 수반된다. 따라서 전기적으로 읽어들이기만하면 되는 메모리나 캐시 메모리에 비해 10의 6승~10의 9승이나 되는 속도 차이가 발생한다.
2) 메모리에 저장된 데이터를 CPU가 패치(fetch)해서 특정 처리를 수행
3) 메모리에서 패치된 명령은 보다 빠른 캐시(cache) 메모리에 캐싱된다.
--> 디스크 -> 메모리 -> 캐시 메모리 -> CPU
* 디바이스 간 속도차를 흡수하기 위해 OS는 데이터를 메모리에 캐싱해둠으로써 문제를 해결함. 그러나 데이터량이 많아지면 처음부터 캐시 미스가 많이 발생하고 그 결과 디스크로의 I/O가 많이 발생한다. 디스크 I/O가 대기에 들어선 프로그램은 다른 리소스가 비어있어도 읽기가 완료되기까지는 다음 처리를 수행할 수 없고 이것은 시스템 전체의 속도 저하를 초래한다.
'개발관련 도서 > 대규모 서비스를 지탱하는 기술' 카테고리의 다른 글
3-1. OS 캐시 (0) | 2021.05.03 |
---|---|
3장. 대규모 데이터를 다루기 위한 기초지식(#대규모 서비스를 지탱하는 기술) (0) | 2021.05.03 |
2-1.규모조정, 확장성(#대규모 서비스를 지탱하는 기술) (0) | 2021.05.02 |
2장. 대규모 데이터 처리 입문(#대규모 서비스를 지탱하는 기술) (0) | 2021.05.01 |
웹 개발자를 위한 대규모 서비스를 지탱하는 기술 (0) | 2021.05.01 |