타운광장토픽게시판

학교에서 1인 1프로젝트를 필수로 하라고 해서, 클라우드 플레어를 구축해봤습니다.

 

클플에서 하는것처럼 중간에 캐시서버를 두고, 캐시 서버와 실서버가 통신하는 형식으로 구현해보았습니다.

 

이렇게 라이믹스 설치페이지로 예시를 들어봤는데, 세션이 겹치는 오류가 있어서 아직 설치 진행은 안되네요;;

 

img1.PNG.jpg

 

아래는 /cdn-cgi/trace를 구현해본 모습입니다.

 

아직은 별거 없지만, 나중에 좀더 생기겠죠..?

 

img2.PNG

 

request url을 읽어와 뒷부분이 png,jpg같은 이미지 파일이면, 서버에 캐시를 해서 좀 더 빠르게 접속하게 해주고요

추후에는 header를 뜯어서 mime가 img형식이면 캐시하는 형식으로 갈거 같기도 합니다.

 

HTTP 접속을 통해 캐시 서버와 본서버가 통신하니 이론상으로 직접 접속보다 2배 이상의 시간이 걸린다고 하시네요

그래서 이번기회에 캐시 서버를 PHP에서 Go로 다시짜서 클플에 Railgun 같은 기능도 만들어보려고 합니다.

 

그다지 CPU를 먹는 작업이 아니다보니 대역폭 많이 주는 라이트세일에서 서버를 얻어서 실서비스도 해볼까 하는데, 어떻게 생각하시나요

중대형 커뮤니티의 트래픽이 어느정도 나오는지 감이 안잡혀서 결정을 해봐야 할거 같은데..

 

클플에 있는 기능들은 대부분 구현해볼 생각입니다. (자본이 심히 들어가는건 제외... DDOS..?)

클플과 달리 한국 서버를 고정으로 잡아주니까 속도도 빠르고, 생각해둔 레일건 기능 활용하면 다른것 보다 좀 더 빨리 접속할 수 있을거 같은데, 상업성이 있을까요? (사실 캐시서버 비용만 나와도 되는데..)

 

글쓴이 리버스

profile
모듈 제작하는 현역 故3 리버스입니다!

== 판매중인 모듈 ==
미션] https://xetown.com/thirdparties/1511787
길드] https://xetown.com/thirdparties/1387146
게시판] https://xetown.com/thirdparties/1481847
  • profile

    사이트 특성에 따라 다르지만, 이미지만 잘 캐싱해 줘도 최소 70%에서 최고 97%까지 트래픽 절약이 됩니다. 물론 후자는 이미지 비율이 아주 높은 사이트이겠지요.

     

    국내라면 레일건은 큰 의미가 없습니다. 클플서버와 본서버가 멀리 떨어져 있는 경우 접속시간을 단축하는 데 도움을 주는 기능이니까요. 이미 어마어마하게 줄어든 트래픽을 조금 더 줄여 주는 효과는 있지만, 본서버의 CPU를 너무 많이 사용해서 계륵같은 놈입니다. 대형 커뮤니티는 레일건 혼자서 코어를 10개 이상 씹어먹기도 합니다. ㄷㄷㄷ

     

    비용면에서 국내서버를 고집하신다면 클플 엔터프라이즈보다 싸게 하기는 어려울 듯 합니다. 대형 커뮤니티는 월 트래픽이 테라 단위를 훌쩍 넘어 페타 단위에 근접하는 경우도 있으니까요. 서버 비용은 걱정할 필요조차 없을 만큼 트래픽 비용이 압도적으로 많이 나올 거예요. 오히려 클플을 사용하면 해외로 연결되어서 불편한데 그렇다고 엔터프라이즈를 결제하고 싶지는 않은 중소형 사이트를 타겟으로 잡으시는 편이 나을지도...

  • profile profile
    일단 그런 부분을 타겟으로 잡고 있습니다.
    이미 거대한 커뮤니티는 수익도 잘나고, 매달 20만원정도야 투자할 만할텐데, 굳이 모험을 할 이유는 없겠죠;;
    만약 온다고 해도, 제가 무서워서 못받을거 같습니다.. 그정도 트래픽을 처리할만큼 잘 짜지도 못할거 같은데.. ㄷ..

    클플 엔터프라이즈를 결제하기는 힘든 중소~중형 사이트를 대상으로 해서 만들어 보려고 합니다.
    중소~중형정도 까지는 한달에 100~300G, 많아야 1테라 미만 정도 나온다고 생각하는데, 이정도면 성능 상관 안한다면 라이트세일 3.5달러 짜리 사서 늘려도 상관이 없으니..

    레일건에 대해서도 뭔가 공개된 정보가 없어서, 이름만 레일건이지 단순히 제가 생각한 방법으로 사이 통신에 약간의 시간을 줄이는 용도로 만들어 보려는겁니다.
    CPU를 많이 사용하는걸 보니 압축을 엄청나게 해대는것 같은 느낌이 드네요 ㄷㄷ;;

    일단 그래도 잘 만든다는 가정 하에(?), 비교적 싼 가격에 클플이랑 비슷한 기능을 제공하니 메리트는 있어 보일것 같은데, 좀 더 고민을 해봐야겠습니다! 감사합니다~
  • profile profile
    클플 엔터프라이즈는 월 20만원이 아니고 300만원 이상입니다. ㅎㅎ

    20만원짜리는 비즈니스 플랜인데, 몇 년 전부터 비즈니스도 더이상 ICN으로 연결해 주지 않기 때문에 한국 사용자들에게는 아무 의미가 없습니다. 월 300만원 이상 투자할 수 있는 대형 커뮤니티 외에는 얄짤없이 미국이나 일본 서버를 경유하고 있습니다. 거꾸로 말하면 월 300만원 미만 가격대에 얼마든지 다른 서비스가 끼어들 공간이 있다는 뜻이겠지요.^^

    레일건을 제외하고 "HTML은 그냥 통과, 나머지는 모두 캐싱" 정책으로 간다면 nginx에 내장된 proxy cache 기능만으로도 충분히 가능합니다. 다른 언어를 쓸 필요가 없어요. 실제로 nginx를 사용하여 월 10~20테라 정도의 트래픽을 라이트세일로 넘기는 방식을 제가 여러 차례 세팅해 드린 적이 있고, 매우 안정적으로 작동합니다.
  • profile profile
    Nginx에 그런 기능이 있다는건 모르고 있었네요. 공식문서를 깊게 읽지 않아서 좀 놓치는게 있었는데, 이번 기회에 쫙 읽어봐야겠습니다

    클플 가격이 왜 저렇게 됬는진 모르지만, 엔터프라이즈는 컨택하라고 해서 가격이 안나온줄 알았는데, 최소 300이면 엄청 거대한 사이트 아니면 꿈도 못꾸겠네요 ㄷㄷ...

    20~300사이의 니즈를 얻을 수 있다는 점은 매우 끌리지만, 일단은 작은 사이트부터 차근차근 해결해가면서 올라가야겠네요. 일단 클플의 하위호환정도는 되야 할테니까요.

    정말 갈피를 잡는데 도움이 많이 된것 같습니다!
    참 궁금한건데 기진곰님은 어째 그렇게 자세한것도 아시고 모르는게 없는것 같네요 ㄷㄷ
    역시 기진곰님입니다 ㅋㅋ
  • profile profile
    "HTML은 그냥 통과, 나머지는 모두 캐싱" 정책으로 간다면 nginx에 내장된 proxy cache 기능만으로도 충분히 가능

    이 방법 어디서 힌트를 얻어볼 수 있을까요?

    저도 프록시 캐시 써봤는데 모든 내용 전부 캐시하는 것은 해봤지만 선택적으로 캐시하는 것은 안해봤네요 ㅜㅜ
  • profile profile

    location ~ 구문을 사용해서 확장자에 따라 proxy cache 설정을 다르게 적용할 수 있습니다.

  • profile profile
    오 좋네요. 감사합니다. 적용해봐야겠네요.
  • profile
    글밑에 고등학생입니다라는 글이 눈에 띄는데
    전 클라우드 플레어 그런거 알지도 못하는데
    고등학생인 리버스님이 그런거 만들어 내다니 참 대단하네요.
  • profile profile
    초등학교때부터 이런쪽에 관심이 많아서 쭉 오다보니 어디서 주워들은게 많은거죠 ㅎㅎ
    그러다보니 IT관련 고등학교에 진학해서 이런것도 만들어보네요 ㅋㅋ

    제이엔지님도 XE타운에서 열심히 활동하시는데, 그런 꾸준함이 엄청 본받고 싶습니다 ㅎㅎ
    꾸준히 노력해서 엔지없는 프로그램을 만들어보는게 꿈입니다 ㅋㅋ
  • profile profile
    엔지없는 프로그램이란 표현 참 재밌어요.
    진짜 그런 프로그램 만들고
    리버스님 잘되기만 바라네요.
  • ?

    하하.. 제가 알고 있는 선에서 잡다한건 좀 설명드리지요
    클플과 같은 서비스를 통칭 [리버스 프록시]라고 합니다
    리버스 프록시는 말씀하시는대로 트래픽을 중계하면서 캐쉬서버 역할도 하지만 그외에도 방화벽 역할을 하거나 DDoS 공격 방어도 하는 등의 기능도 제공합니다. 거기에 대해서 서버의 IP를 숨기는 부가적인 효과도 꽤 중요하게 여겨지지요.
    기본적으로 웹서버들은 간단한 리버스 프록시 기능을 수행할 수 있습니다. 아파치도 nginx도 가능하죠. 거기에 캐쉬도 가능하구요. 다만 아파치보다는 nginx가 좀더 상세하게 설정할 수 있으므로 아파치를 리버스 프록시로 쓰는 경우는 거의 없을겁니다. (nodejs 연동할때나 어쩔 수 없이 쓰려나요)
    그외엔 varnish 라던가 squid 같은 보다 전문적인 프로그램도 있습니다. squid는 저도 전혀 안써봐서 모르겠고 (이건 누구한테 서버 털렸던 경험으로 이런것도 있다는걸 알게된 정도입니다) varnish는 레일건과도 비슷하게 중복되는 부분은 보내지 않고 달라진 부분만 보내서 트래픽을 줄이는 기능이 있습니다만 설정이 복잡하고 까다로워서 요즘은 거의 안쓰이는 것 같습니다.
    참고로 레일건에 대해서 아는대로 설명드리면 리눅스에서 쓸 수 있는 유틸중에 diff라는게 있습니다. 2파일을 비교해서 서로 다른 점만 추출해내는건데 레일건이 쓰는 압축원리는 기본적으로 diff와 똑같을겁니다. 뭐 구체적으로 어떤 포맷으로 diff된 데이터를 주고받는지는 모르겠지만요.
    무조건 모든 HTML을 diff하는건 아니고 일단 전송할 크기가 너무 작으면 diff 안하구요... diff 결과가 일정 수준 이상 크면 그냥 gzip 전송하는걸로 알고 있습니다. 레일건 설정파일에 대한 설명이 클플 웹사이트를 뒤져보면 나오는데 그 문서만 봐도 레일건에 대한 이해도가 증가합니다.
    그럼 어떤 데이터와 diff 하느냐가 문제인데.. 추측컨데 url별로 바로 직전에 전송했던 HTML과 이번에 전송하려는 HTML을 서로 비교하는게 아닐까... 생각하고 있습니다.

    그리고 이런 류의 서비스에 대한 상업화는... 트래픽 비용을 고려하면 어차피 클플보다 가성비에서 우수하기가 쉽지 않을겁니다. 물론 클플은 비즈니스플랜과 엔터플랜 사이의 간격이 크기 때문에 그 중간에 수요가 약간은 있을지도 모르지만... 어쨌던 최소한의 수지를 맞추려면 서버룸을 직접 운영하고 선을 끌어와서 운영해야 할겁니다. 라이트세일로는 좀 무리지요... 라이트세일에는 인스턴스 갯수 제한이 있습니다 25개였나요... 

    참고로 자바로 개발된 윈도우 설치형 리버스 프록시 프로그램을 배포하고서 분산된 다수 사용자들의 집인터넷을 이용해서 십시일반으로 트래픽을 만들어내려는 아이디어를 제가 몇년전에 생각한 적이 있는데 기진곰님한테 개까였습니다. 해킹 위험이 있기 때문에 상업용 서비스로는 아무래도 무리일꺼 같더군요.

  • ? profile

    그런 일이 있었던가요? 저한테 개까이셨다니 ㅋㅋㅋ

    사용자들의 컴퓨터에 직접 설치해서 쓰는 윈도우용 프로그램이 아니라 한 사람이나 회사가 전문적으로 관리하는 서버의 대역폭을 활용하는 리버스 프록시라면 문제 없다고 생각합니다.

    문제는 트래픽 가격이지요. 흔히 쓰는 카페24 웹호스팅 기준으로 월 1만원에 100~150기가 정도 쓸 수 있습니다. 이론적인 최대치는 7.5x30=225기가이지만 매일 꽉 채울 수는 없는 일이니까요. Vultr의 서울지역 트래픽 초과 요금이 1GB당 60원(0.05달러)이고, 순수 국내업체인 iwinv도 비슷한 수준입니다. 100~150기가라면 6000~9000원이 되겠지요. 이 정도로는 1만원짜리 웹호스팅과 비교하여 딱히 메리트가 없습니다.

     

    작은 인스턴스를 여러 개 생성하여 기본 제공되는 트래픽을 최대한 활용하는 수밖에 없는데... AWS Lightsail에 25개, Vultr에 25개 정도 하면 한 달에 100테라 정도는 나올 것 같네요. 월 20만원대에 천만원어치 트래픽을 쓴다? 해당 업체들이 그걸 가만 놔둘지는 두고 봐야지요. ㅎㅎ (지금까지 제가 세팅해 드린 이미지 트래픽 분산 용도의 리버스 프록시는 모두 고객님 명의의 AWS 계정을 사용했습니다. 한 달에 10~20테라씩 쓰는 분들도 자기 계정에 서버 4~5대 정도면 충분하니까 AWS에서도 뭐라고 하지는 않지요.)

  • ? profile
    일단은 상업성을 목표로 잡고 한다기 보다는 서버비용만 뽑을수 있는 정도를 목표로 잡고 있습니다
    상업성을 목표로 잡으면 클플이라는 거대한 적을 이겨야 하는데, 자본력에서부터 딸리죠.. ㅎ...

    라이트세일 생성 제한은 20개라고 하네요. 뭐 정 안되면 집에 있는 서버를 굴릴수도 있겠지만 일단 그걸 고민할 정도까지 갈수 있을지 고민을.. ㅎ...

    일단 레일건이 무엇인지 좀 알게된것 같습니다. Diff와 같은 역할로 변환된 부분만을 통신한다니 의외로 무거운 일을 하는것이였네요;
    트래픽은 줄겠지만, 하드웨어적 부담이 너무 많아질것 같은 느낌이네요
    빠릿빠릿하게 움직여야 하는데, 열심히 계산을 하고 있으니 특정 조건을 제외한다면 크게 의미는 없을것 같네요

    클플 소개문에 railgun이 서버와 캐시서버 사이에 속도를 높여준다길래, TCP통신을 계속 유지해서, handshake같은 부분을 줄인건가.. 하는 추측을 했었는데, 완벽하게 빗나갔네요 ㅎㅎ


    그리고 여담인데, 저희 학교는 모의고사를 학생들이 출제하는데, 저는 Tor익명통신에 대해서 비문학 지문을 만들었거든요.
    좀 연구같은것도 뒤져보고 했는데, tor와는 기능 자체가 상이하지만, 보안성만 갖춰준다면 괜찮은 아이디언것 같습니다.

    기본적으로는 서버와 통신을 하는데, 이미지 파일같은 단적이고 중요하지 않은 파일은 다른 클라이언트에게 받는다던지..

    물론 서버 해시값과 비교한다던지, 중간에 위조를 막기위한 장치를 넣는등, 보안에 막대한 신경을 기울여야 하겠지만, 블록체인같이 서로가 서로를 감시하는 체제를 갖춘다면 좋은 아이템이 될수도 있을것 같아요!
    물론 그게 서버를 증설하는것보다 더 좋은 대책인지는..


    암튼 캐시서버라고 칭했지만, IP를 숨겨주는 것부터, HTTP패킷 말고 다 던져버리는(?) 방화벽 기능같이 리버스 프록시로서 기능을 차근차근 구현해볼 예정입니다
    몇가지 막연한 아이디어도 있기는 한데, 후에 차차 공개해 가면서 이렇게 조언들을 받아보려고 합니다.

    정말 많이 도움이 되었습니다!