Extra Form
PHP PHP 7.1
CMS Rhymix

서버에 대한 질문입니다.

 

큰 웹사이트나 커뮤니티는 하나의 대형 서버보다는 여러개의 서버 중소규모 서버를 이용하는걸로 알고있는데요.

 

이게 하나의 대형 서버를 운영하는것 보다 얼마나 효과가 있을까요?

 

그리고 이렇게 여러대의 서버를 이용했을 때, 파일 처리는 어떻게 하나요? A부터 D까지 서버가 있을때, 사용자가 C서버에 접속해서 게시물이나 댓글, 파일을 업로드하면 실시간으로 A부터 D서버에 복제가 되는건가요? 아니면 모든 서버가 하나의 디스크(저장장치)를 사용하는건가요?

 

옛날부터 궁금했었습니다 ㅎㅎ

  • profile

    그정도 까지 하는건 서버 1대로 안되거나 할 경우 입니다. 1대로 가능하면 1대로 운영하는게 쉽고 효율적입니다.
    여러대의 서버로 사용자를 분산하는 만큼 모든 서버가 똑같은 데이터를 공유하고 세션까지 다 공유해야 할 겁니다.

     

    1대의 저장장치를 사용하는게 아니구요. 쌍둥이 서버들이 동시에 돌고 있는겁니다.
    1대의 서버라면 전혀 필요없는 일이죠.

    1대로 가능한데 일부러 작은 서버 여러대로 하는 경우는 없을 겁니다. 그럴 이유가 없다라고 하는게 더 쉽겠군요.

     

    장애용 백업전환을 위해 하는 경우는 있구요.

     

     

    이런 경우도 있습니다. 트래픽이 서버단위로 할당되니 트래픽이 부족해서 서버 한대를 증설해서 트래픽 제공량을 확보하는 경우 입니다. 이 경우도 사용자를 양쪽으로 보내야 트래픽 부족을 해결할 수 있구요.

     

    저희의 경우는 트래픽 때문에 말씀하신 방법과 다른 방법으로 파일들만 캐시해서 제공하는 전담서버를 별도로 두었습니다. 캐시서버에 제공되는 트래픽이 저렴하고 양이 충분해서 트래픽을 저렴한 트래픽쪽으로 이동시킨 것 입니다.

  • profile profile
    캐시서버만 따로 빼는것도 좋은 방법이네요.
    답변 감사합니다 :)
  • ?
    rsync등으로 처리하고 있는걸로 압니다..파일 변경이 없는 사이트는
    웹서버 + 웹서버 + DB 서버 1개 이렇게 3개로 구동해서 별도 작업없이 운영하기도 하더군요
  • ? profile
    오..그렇군요
    답변 감사합니다 :)
  • profile

    대형 사이트는 여러 대의 대형 서버를 사용합니다. 중소규모 서버 여러 대를 사용할 수준은 이미 오래 전에 넘었죠.

     

    대형의 기준도 예전과는 다릅니다. 몇 년 전까지만 해도 8코어 정도면 대형 서버라고 했지만, 이제는 32코어도 있고 64코어도 있으니까요. 램도 64~128기가를 기본 장착할 수 있고, 돈만 있으면 1테라도 됩니다. 2테라짜리 SSD와 10테라짜리 HDD를 여러 개씩 장착할 수 있고, 해외에서는 10기가 랜카드도 흔히 볼 수 있어요. 요즘 대형 서버들은 평범한 서버나 PC들과는 성능의 차원이 달라요. 1~2코어짜리 가상서버는 뭐... 아이들 장난 수준이고요.

     

    서버와 서버 사이의 통신과 잦은 동기화 작업 때문에 낭비되는 자원을 생각하면 4코어×10보다는 20코어×2가 더 효율적일 수밖에 없습니다. 그럼에도 불구하고 더 많은 숫자의 서버를 사용한다면 장애가 발생했을 때 즉시 넘어갈 수 있도록 대비한다거나, 뭐 그런 목적이 있는 거고요. 장애 대응을 위해 성능을 손해보는 셈이지요. 절대로 성능을 위해 그렇게 하는 게 아닙니다.


    파일은 실시간으로 복제하는 방법도 있고, 하나의 파일서버에 몰아넣고 다른 서버들은 원격으로 불러다 쓰도록 하는 방법도 있고, 일정 간격으로 동기화하는 방법도 있습니다. 어느 방법이 옳은지는 사용하는 CMS의 특성에 따라 다릅니다. XE는 캐시파일을 수시로 읽고 쓰기 때문에 동기화 간격이 길면 여러 가지 문제가 생깁니다. 아마존에서 오토스케일링으로 서버를 마구 늘려 쓰는 어플리케이션들은 처음부터 서버 간의 동기화가 거의 필요하지 않도록 설계되었기 때문에 그게 가능한 겁니다. 모든 사람이 동일한 DB를 보고 있어야 하는 커뮤니티 CMS에는 그 방법을 적용하기 어렵습니다.

     

    XE 기반의 커뮤니티 사이트 기준으로, 나름 소규모라고 할 수 있는 4코어/8쓰레드 서버 1대는 동접 2~3천 명 정도를 감당할 수 있고, 잘 튜닝된 16코어/32쓰레드 서버 1대는 1만 명 정도를 감당할 수 있습니다. 파일 동기화와 무관한 디비서버나 캐시서버, 검색서버 등을 분리하여 2~3대 돌리면 동접 2~3만 명도 거뜬해요. 그래도 안 되면 32코어/64쓰레드로 올라가면 되고요. 그 정도면 국내에서 한 손으로 셀 수 있는 극소수의 커뮤니티들 외에는 모두 커버되는 사양이지요. rsync니 뭐니 도무지 신경쓸 필요가 없습니다.

  • profile profile
    오...그렇군요!!
    장문의 답변 감사드립니다!

    궁금한게 다 해결됐네요 ㅎㅎ