도메인 샤딩
브라우저가 웹 사이트의 에셋을 다운받을 때 해당 웹 사이트의 도메인으로부터 모든 에셋을 다운받지 않고 여러 개의 서브 도메인으로 에셋을 나눠 다운받는 방법
shard는 조각, 파편이라는 뜻으로
도메인 샤딩이라는 것은 곧 하나의 도메인을 여러 개의 도메인으로 조각낸다는 의미이다.
이때 굳이 하나의 도메인을 여러 개의 도메인으로 조각내는 이유는
하나의 도메인으로부터 모든 에셋을 다운받지 않고 여러 개의 서브 도메인으로 에셋을 나누어 다운받음으로써
동시에 더 많은 에셋을 병렬로 다운받을 수 있게끔 하고 결과적으로 페이지 로딩 속도와 시간을 향상시키기 위함이다.
이때 에셋이란 CSS, JavaScript, 폰트, 이미지 등의 정적 파일을 뜻한다.
등장 배경
HTTP/1.x는 하나의 도메인이 한 번에 다운받을 수 있는 자원의 개수에 제한을 두기 때문에*
하나의 도메인은 대부분의 모던 브라우저에서 한 번에 6~8개, IE 하위 버전에서 한 번에 2개까지의 자원만 다운받을 수 있다.
때문에 다운받아야 할 자원이 많은 경우 페이지 로딩 속도 저하가 발생하고,
이를 해결하고자 자원을 다운받는 도메인 개수 자체를 늘려버린 것이 도메인 샤딩이다.
예를 들어 24개의 자원을 다운받아야 한다고 할 때,
하나의 도메인은 6개의 자원을 4번에 걸쳐 다운받아야 하지만
4개의 도메인은 각각 6개씩 한 번에 다운받을 수 있는 것이다.
* 이때 한 번에 다운받을 수 있는 자원의 개수를 동시 요청 개수, 활성 연결 개수라고도 한다.
장점
도메인 샤딩은 동시에 더 많은 에셋을 병렬로 다운받을 수 있게끔 함으로써 페이징 로딩 속도와 시간을 향상시킬 수 있다.
단점
하지만 DNS 조회가 여러 개의 서브 도메인에 대해 이루어지면서 DNS 조회 비용이 증가하고
각 서브 도메인과 tcp 연결을 설정하기 위한 비용이 증가한다는 단점이 있어
너무 많은 서브 도메인은 오히려 성능 저하를 불러일으키기도 한다.
때문에 도메인 샤딩은 서브 도메인의 개수를 2~4개로 유지하거나
이미지 자원이 많고 자주 업데이트되는 동적 웹사이트에 사용하는 것이 적합하고*
경우에 따라 동시 요청 개수에 제한이 없는 HTTP/2를 사용하는 것이 더 효과적일 수 있다.
* 브라우저 캐시에 캐싱이 되므로 정적 웹사이트에서 도메인 샤딩은 유용하지 못하다.
다음 자료를 공부하여 정리한 글로, 아직 많이 부족해 틀린 내용이 있을 수도 있습니다.
혹시 있다면 댓글로 알려주세요. 수정하고 더 공부해나가겠습니다-
'Computer Science > FAQ' 카테고리의 다른 글
기능이 제약된 웹 브라우저를 위해 웹 페이지를 어떻게 만드나요? (1) | 2024.10.29 |
---|---|
DOMContentLoaded 이벤트와 load 이벤트의 차이점은 무엇인가요? (4) | 2024.10.05 |
웹 브라우저 스펙 차이에 따른 스타일링 이슈는 어떻게 해결하나요? (0) | 2024.09.17 |
XML과 XHTML의 차이점은 무엇인가요? (0) | 2024.09.15 |
URL 입력부터 화면에 웹 사이트가 나타나기까지의 과정은 어떻게 되나요? (1) | 2024.09.12 |