공통/인프라 & 시스템 설계
[대규모 서비스를 지탱하는 기술] 대규모 데이터 처리를 지탱하는 서버/인프라
엔터프라이즈 vs 웹 서비스 트래픽 트래픽의 경우 엔터프라이즈에서는 극히 거대한 규모가 되는 경우는 드물지만, 웹 서비스의 경우는 특히 글로벌하게 전개되고 있는 서비스에서는 어마어마한 트래픽이 발생할 가능성이 있다. 성장성 엔터프라이즈에서는 실제 비즈니스와 연계되어 있으므로 그다지 급격하게 성장하는 것은 아니다. 반면, 웹 서비스의 경우는 폭발적으로 성장할 가능성이 있어서 전년대비 100%, 200%, 300% 증가와 같은 일도 드물지 않다. 신뢰성 엔터프라이즈에서는 사수라고 적혀있는데 장애가 발생해서 데이터가 없어지거나 하면 실제로 돈이 사라지기도 한다. 이처럼 굉장히 높은 신뢰성을 요구한다. 그러나 웹 서비스는 신뢰성에서는 대부분 비교적 그렇게 높은 레벨이 요구되지 않는다는 특징이 있다. 트랜잭션 엔..
[대규모 서비스를 지탱하는 기술] 알고리즘 실용화
알고리즘 실용화 알고리즘과 평가 속도를 중시하는 프로그램을 작성할 경우에 알고리즘과 데이터 구조의 선택은 중요하다. 이때 대상이 되는 데이터가 크면 클수록 선택에 따른 차이가 현저해진다. 예를 들어서 데이터 내에서 필요한 데이터를 처음부터 순차적으로 찾아가는 선형 탐색(Linear Search)은 1,000건의 데이터가 있을 때 원하는 데이터를 찾기까지 탐색을 반복하면서 최대 1,000번을 탐색하는 알고리즘이다. n건에 대해 n번의 탐색이 필요하므로 O(n)의 알고리즘이라고 한다. 반면에 이분탐색은 (Binary Search)은 n건의 데이터에서 log n번 만에 목적 데이터를 찾는 알고리즘으로, O(log n)이다. 이분 탐색에서는 1,000건에 대해 최대 10번 만에 탐색이 완료된다. 이는 데이터의 ..
[대규모 서비스를 지탱하는 기술] DB 스케일아웃 전략
DB 스케일아웃 전략 1. 인덱스의 효과 인덱스는 색인으로 저장 공간과 쓰기 성능을 희생하면서 검색 속도를 높이기 위한 자료구조이다. MySQL에서는 기본적으로 B-Tree를 인덱스 알고리즘으로 사용한다. B-Tree는 이론적으로 탐색 계산량이 O(log n)으로 보장되므로 선형 탐색에서 O(n)으로 찾는 것보다 B-Tree로 찾는 것이 더 빠르다. 이러한 이유로 인덱스로 탐색하면 검색 속도가 빨라지는 이유이다. 이처럼 계산량 측면에서 개선될 뿐만 아니라 디스크 구조에 최적화된 인덱스를 사용해서 탐색함으로써 디스크 Seek 횟수면에서도 개선된다. 책에서 인덱스 및 실행계획에 대해서 간단하게 다루고 있는데.. 이 부분은 Real MySQL 정리한 것이 더 유용하다고 생각해서 이정도만 정리하였습니다. cf)..
[대규모 서비스를 지탱하는 기술] OS 캐시 구조
OS 캐시 구조 페이지 캐시 OS에는 디스크 내의 데이터에 빠르게 액세스 할 수 있도록 하는 구조가 갖춰져 있다. OS는 메모리를 이용해서 디스크 액세스를 줄인다. ⇒ OS 캐시 Linux의 경우는 페이지 캐시라고 하는 캐시 구조를 갖추고 있다. 페이지 구조 가상 메모리 OS는 가상 메모리 구조를 갖추고 있다. 가상 메모리 구조는 논리적인 선형 어드레스를 물리적인 물리 어드레스로 변환하는 것. 가상 메모리 구조가 존재하는 가장 큰 이유는 물리적인 하드웨어를 OS에서 추상화하기 위해서이다. 가상 메모리를 통해 OS가 커널 내에서 메모리를 추상화하고 있다. 이러한 이유로 프로세스에서 메모리를 다루기 쉽게하는 이점을 제공한다. (프로세스에게는 0x000과 같이 반드시 메모리의 특정 번지부터 시작한다고 정해져 ..
[대규모 서비스를 지탱하는 기술] 메모리와 디스크
대규모 데이터 처리의 어려운 점 메모리 내에서 계산할 수 없다. 데이터가 너무 많아서 메모리 내에서 계산할 수 없게 되면 디스크에 있는 데이터를 검색하게 된다. 하지만 디스크는 메모리에 비해 상당히 느리며, I/O에 시간이 걸린다. 메모리 vs 디스크의 속도 차 탐색 속도 메모리는 전기적인 부품으로 물리적 구조는 탐색 속도와 그다지 관계없다. (데이터가 메모리상에 있다면 탐색할 때 물리적인 동작 없이 실제 데이터 탐색 시의 오버헤드가 거의 없으므로 빠른 것이다.) 반면에 디스크는 헤드의 이동과 원반의 회전이라는 두 가지 물리적인 동작을 수반하고 있다. 이러한 물리적인 구조가 탐색 속도에 영향을 준다. OS 레벨에서의 디스크의 탐색 속도 개선 사항 디스크는 느리지만 OS는 이러한 점을 어느 정도 커버하는 ..