네이버나 다음, 유튜브 같은 대형 포털들은 어떤식으로 스위칭(로드밸런싱, 이중화)을 하나요?
글쓴이: giveitaway / 작성시간: 금, 2014/12/12 - 11:28오전
안녕하세요?
중소 포털 사이트 개발자로 근무하고 있습니다.
제가 저희 회사 메인 사이트 개발자는 아니고 메인 사이트에서 분기하는 개별 웹솔루션 개발자라서
개별 웹솔루션 사이트에는 스위칭 조차 하지 않고 그냥 단일 서버로 서비스 하고 있습니다.
그래서 L4나 로드밸런싱에는 경험이 전무한 상태인데요
로드 문제도 그렇고 비상시를 대비한 이중화에 대해서도 미리 공부를 좀 해두려고 하는데요
일단 저희 메인 사이트는 L4장비 한대로 4대의 웹서버에 스위칭을 하고 있는데요
이럴 경우 아무리 웹서버가 늘어나도 L4장비 한 대의 대역폭을 넘지는 못하겠죠
그럼 트래픽이 미칠듯이 많은 유튜브나 네이버 다음 이런 곳은 어떤 방식으로 스위칭을 하나요?
L4장비들 상위에 다른 L4를 놓는다고 해도 그 L4의 대역폭을 넘지는 못할테고
뭐 이런 추상적인 궁금증을 가지고 있습니다.
답변이나 아니면 힌트가 될 만한 링크나 구글 검색해볼 검색어나
뭐든 도움 부탁드립니다.
감사합니다.
Forums:
http://helloworld.naver.com/h
http://helloworld.naver.com/helloworld/textyle/284659
감사합니다!
결국 응답은 각 서버가 L4나 프록시를 거치지 않고 하더라도
요청을 받는 장비는 결국 하나인 거군요?
실제로 대형웹사이트들은 병목지점이 네트웍에
실제로 대형웹사이트들은 병목지점이 네트웍에 있지않습니다.
어플리케이션 서버와 DB의 병목현상이 제일큽니다.
유튜브의 경우 vitess (https://github.com/youtube/vitess)를 이용해서 mysql을 주db로 사용하는데,
sharding과, failover, 그리고 re-sharding이 관건입니다.
또한 apache cassandra나 redis등등 필요한곳에 적절히사용합니다.
모든 DB는 나름의 쓰임새와 활용분야가 있습니다. 그래서, 필요에 따라 섞어쓰죠.
어플서버의 경우, 아마존은 scala를 이용해서 서버를 구축했는데,
scala의 경우, await와 async지원이 잘되는 언어입니다.
scala가 아니더라도, python의 gevent나, node.js, erlang, golang같은 async programming 지원이
잘되는 언어들이 대형어플서버를 구축하는데, 잘이용되고있습니다.
좀더
좀더 궁금하면,
http://highscalability.com/ 에 유튜브, 구글, 아마존, 트위터, 페이스북 등등,
유명 웹사이트 구조에 대해서 잘 나와있으니, 잘 살펴보세요.
아주 꿀팁이 많은 곳입니다.
일단 저희 메인 사이트는 L4장비 한대로 4대의
위의 경우에는 L4의 경우 DSR(Direct source routing) 이라는 기능을 사용하여 극복할 수 있습니다. input은 L4를 통해서 들어오고, output은 서버에서 L4를 거치지 않고 direct로 gateway를 통해서 나가는 것이죠. 예를 들어서 image service나 file download service 같은 곳에서 주로 사용을 합니다. 대부분의 L4에서 지원을 하며 단점은 L4와 real server간에 L2로 구성이 되어야 한다는 제약이 있습니다. (요즘 최신형 L4/L7 장비들의 경우에는 L3 구간의 DSR을 지원하는 장비들도 있습니다.)
DSR이라는 용어는 제품에 따라 다른 용어로 사용하기도 합니다.
댓글 달기