ssamce
176
2017-01-03 23:57:17
15
5901

안녕하세요 선배님들 서버 구축 장비 관련해서 질문좀 드리겠습니다.


안녕하세요 조그만한 웹 페이지 만들기위해 구상중에 있습니다.

 

간단한 게임 커뮤니티 싸이트인데요

 

음... 개발을 제가 직접 합니다..ㅎㅎ

 

일단 서버 3대를 구축하려고 합니다.

 

1서버는

제온 e5-2620v3 16g ram 256ssd + 1t hdd 조합인 was 서버 입니다.

여기에는 홈페이지 메인 서비스 was가 돌아갑니다.

대부분의 데이터 처리를 여기서 감당합니다 (로그인, 게시판 쓰기, 읽기)

 

2서버는

하스웰 셀러론 8g ram 3t hdd 조합인 데이터서버입니다.

첨부파일, 이미지가 저장되는 was가 올라가는서버이구요

1서버에서 이미지 로딩 혹은 파일, 이미지 첨부할때만 이 서버에 들어와 데이터가 저장됩니다.

 

3서버는

하스웰 셀러론 4g ram 1t hdd 조합인 db서버 입니다.

어짜피 oracle XE 를 사용할거라 1코어와 2g의 성능밖에 사용 못하는데다

Db 자체가 연산속도가 가볍고 빨라 낮은 성능으로 구성했습니다.

 

 

사용할 언어는

Java이구요

Jdk는 1.8

프론트엔드 프레임워크는 angularJS 이구요

백엔드 프레임워크는 스프링 입니다.

Was는 tomcat 8

Db는 oracleXE 12


인터넷은 100M 광랜에 고정IP 3개 할당받아 각각 서버에 연결하려 하고

각각 서버 os는 리눅스 CentOS 입니다.

 

 

저렇게 서버를 구성했을때 평균 동시접속 20 ~ 30에서

최대로 접속자수 몰릴때 500명 정도까지 버틸만 할까요..??

 

도저히 감이 안오네요...

 

차라리 가비아나 카페24 혹은 아마존 서비스를 이용하는게 가격적으로 나을지

판단이 안섭니다..ㅠㅠ

 

조언 부탁드립니다!

0
  • 답변 15

  • zepinos
    20k
    2017-01-04 01:11:17

    1. WEB 서버에서 연산이 많다면 몰라도, 기본적으로 게시판 위주의 사이트에서는 쿼리 이후 별도의 연산이 있는 경우가 드물기 때문에 WEB 서버의 사양이 그리 중요하지 않습니다.

    2. 그래서 WEB 와 파일서버는 분리해서 운영할 바에는 1개의 L4/L7 이나 R-R DNS 을 이용해서 클러스터링을 하는게 실제 서비스 모습에 가까워 질 겁니다.

    3. oracle xe 도 서비스 용도로는 충분히 빠르기 때문에 나쁜 조합은 아닙니다만, 차리라 MySQL 이나 다른 DBMS 도 고려해보는게 낫겠죠.

    4. 인터넷 3회선을 들여봐야 각각 100M 가 다 나오려면 기가나 광랜이 직접 들어오는 서비스(U+ Office 같은) 혹은 모두 통신사가 다른 선이 들어와야 목적에 맞을 겁니다. 그리고, 그 3회선을 처음 구성대로 WEB 서버 1대에 연결해봐야...무슨 의미가 있나 모르겠네요. 이더채널(티밍, 본딩)이 되면 몰라도, 한 통신사에서도 안되는데, 다른 통신사에서는 당연히 안됩니다.

    5. 심지어, 가정용 회선에서 고정 IP 을 주는 서비스는 없을 겁니다. 사무실에서 U+ Office 같은걸로 서비스 하려면 할 수는 있겠지만...저 정도 서비스를 하려고 3회선까지 빌릴 필요가 있나 싶네요. 통상적으로 가상머신(2cpu/2g ram) 에서 게임 서버로 동접에 해당하는 TPS 가 2000~3000 정도까지 나오니까, 일반 웹서버라도 정적파일 캐시 잘 정의하고 최적화 잘 하면 동점 500 정도는 충분히 받을 것 같습니다. 오히려 100M 대역폭이 더 관건이겠죠. WEB 이 문제가 아니라, WEB 에서 업로드 받은 파일을 파일 서버로 복사하는 등의 문제로 별도의 랜 포트로 다이렉트 연결을 구성해야 할 겁니다.

    6. 당연히 비용은 호스팅이나 AWS 가 비쌉니다. 회선 자체가 더 비싸기 때문입니다.

    7. 서비스를 하려면 제대로 구성해서 하실 걸 권합니다.

  • jeahoonyam2
    662
    2017-01-04 01:31:13

    윗분의 좋은말씀하셧기에 저는 조금만 거들고 갈게용


    1. 왜 서버를 저렇게 분산햇는지 문제입니다. 보통은 서버를 나누는 목적은 각각에 부하량에 맞게 사양을 조절해거 할당해야합니다. 윗분말씀대로 was가 뭘할진 모르지만 큰 연산을 하지는 않습니다. 두번째는 파일서버라고 할수잇는데요. 파일서버는 연산보다는 데이터 입출력이 많기때문에 lan사용량이 높겟죠.


    2. 이어서 말씀드리면 고정아이피가 왜 3개나 필요할까요. 각각의 서버를 독립으로 보겟다는건가요?? 음...잘모르겟네요  저라면 고정 아이피 1개회선과 2개의 유동아이피를 티밍해서 대역폭을 넓혔을거같아서요.디비서버같은경우는 연산량에 비해 데이터 전송량이 상당히 적은편입니다. 물론 blob과 같은 바이너리데이터를 저장한다면 말이달라지겟지만요. 이경우엔 was와 디비서버를 연결해서 와스가 디비서버의 결과만을 받게한다면 wan연결이 필요없겟죠. 게다가 lan연결이 훨씬 빠릅니다. 매우매우요.


    ㅠㅠ 결론적으로 용도의 목적을 정의해 보시고 거기에 따른 부하량을 생각해보세요.


    그리고 회선문제는 다시 고려해보세요 고정 3개낼돈이면 고정1에 유동 4개 엮어서 5개도 티밍할수잇는 엄청난 친구랍니다....



  • ssamce
    176
    2017-01-04 01:37:06 작성 2017-01-04 01:39:00 수정됨

    와..ㅎㅎ 답변 감사합니다!!


    여러 정보 알아보고 하면서 생각을 좀 바꿨습니다..

    누진 전기세 폭탄, 가정용 회선의 상업적 사용시 불이익 가능성 등등 고려해서

    호스팅 업체쪽으로 돌렸습니다..ㅎㅎ


    1. 카페24의 월 5500원짜리 1vCore/1GRAM/30G SSD 리눅스서버 - DB서버

    2. 가비아의 월 35000원짜리 2vCore/2GRAM/50G SSD 리눅스서버 - WEB서버

    이렇게 구성하고

    3. 가비아의 월 55000원 NAS 1T 혹은

        카페24의 월 5만원짜리 1vCore/2GRAM/500G HDD 리눅스 서버 - 데이터서버

    이렇게 해보려 하는데

    이 구성이 괜찮을까요..??


    데이터서버 가격이 너무 많이들어서 걱정입니다..ㅎㅎ

    주로 이미지가 들어갈 서버고 이미지도 서버단에서 한번 리사이징 작업을 할 예정이라

    유저가 올릴시 최대 용량 5MB, 서버에서 리사이징 최대용량 1MB

    평균 200 ~ 500KB 용량의 이미지가 데이터 서버에 저장될것 같은데

    NAS까지 구성하여 1TB 용량을 확보하는게 낭비인지 아니면 안전한 대처인지 감이 잡히질 않습니다.


    처음 내보는 서버 견적이다보니 이것저것 고민이 많이되네요..ㅎㅎ

  • 술술
    168
    2017-01-04 01:40:23

    단순 커뮤니티 사이트인가요? 로직에 따라 다르겠지만 평균 동시접속 20 ~ 30명 정도는 충분히 커버할 수 있는 스펙인 것 같습니다만, 일단 1서버와 3서버의 스펙을 바꾸시는게 좋을 듯 합니다. DB쪽 퍼포먼스가 더 중요합니다. 필요하다면 웹 서버야 더 추가해버리면 그만이니까요.


    고정 IP는 어떻게 할당 받으실지는 모르겠습니다만... 파일 전송의 경우 유저가 직접 2서버를 찌르게 되나요? 그렇지 않다면 2, 3서버를 굳이 고정 IP를 할당 받으실 필요는 없을 듯 합니다.

    유저와 직접 통신하는 건 1서버고, 2, 3서버는 1서버와 같은 망에 존재한다면 가상 IP더라도 무방할 듯 합니다. 어차피 1서버에서 2, 3서버를 찌를테니까요.

  • jeahoonyam2
    662
    2017-01-04 01:44:11

    저사양을 보고 판단한건데요... 그냥 서버 한대에서 3가지를 다하는게 낫지않나요...

    왜 저런 저사양들에 로드분할을하는지모르겟어요... 연습용인가요?

    저도 전기비랑 인터넷비가 무지아까워서...

    뭔가 아쉬워서 하나더 댓글을 남기옵니다

  • ssamce
    176
    2017-01-04 01:45:34

    파일 전송시(대부분 이미지) 1번 web서버에서 받아 이미지 리사이징 작업을 한 뒤 서버의 was로 넘겨

    2서버의 HDD에 데이터를 저장하고

    이후 이미지를 첨부한 게시물을 읽을때 이미지는 2번 서버의 경로에서 읽어들이는 방식입니다!


    DB는 다시 고려해봐야겠네요..ㅎㅎ 그렇게 고도화된 DB작업이 없어서 낮은사양으로 뒀었는데

    oracleXE가 아니라 MySql쪽으로 돌린다면 성능쪽도 좀 올려봐야겠네요

  • jeahoonyam2
    662
    2017-01-04 01:45:43

    아그리고 유동아이피쓰셔도 아이피는 사용에따라 안바뀐다고 보시면 됩니다. 고정아니피쓰는이유는 신뢰도 측면도있습니다. 이메일의 ptr체크도 그 비슷한이유죠... 

  • ssamce
    176
    2017-01-04 01:51:10 작성 2017-01-04 01:54:01 수정됨

    예전 홈페이지를 운영했을때

    한개의 서버에서 was, db를 전부 불러와버리니 사용자가 몰렸을때 서버가 느려지고 다운되는 현상을 경험해서..ㅠ


    was와 db만 분리했는데도 더 많은 동시접속자를 받은 경험이 있어 저렇게 설계하게됐네요..ㅎㅎ

    파일서버는 혹시모를 대비..? 싸이트 규모가 커지도 데이터 저장공간이 더 많이 필요할때를 대비해서.....


    웹서핑하면서 알게된 정보가

    개인 집에서 사용하는 100M 등 광랜 서비스를 상업적인 용도로 사용시 불이익을 받을수도 있다고

    계약서에 명시가 되어있다고 하더라구요...ㅋ

    거기다 집에서 개인 홈 서버를 운영하면 정전났을때나 기타등등 여러 안전성에서도 떨어지는것같아

    클라우드 서버로 돌리게 되었습니다!    

  • jeahoonyam2
    662
    2017-01-04 01:55:51

    Db서버를 분리한건 이해가 됩니다. 제가볼땐 요놈이 가장 cpu사용량이 많을거같아서 제일 좋은놈 주셔야할거같아요. 근데 파일서버는... 하드랑 별반 차이없죠...왜냐면 파일을 was가 중간에서 통제하신다늨거같아서요... 아니면 업로드는 통제해서 다운로드는 웹서버 맵핑방식을 이용해서 프록싱시키는건 어떨까요?

    뭔가자꾸아쉬움에 댓글을 달고갑네다ㅠㅠ

  • ssamce
    176
    2017-01-04 02:00:06

    가비아의 NAS 서버를 사용하게 된다면

    1번 WEB 서버에 NAS 서버를 연결해서 NAS에서 할당받은 스토리지에 파일 저장하면 되기때문에

    WEB서버에서 모든게 해결 가능합니다!


    카페24의 테라클라우드를 사용하게 된다면 웹서버 맵핑방식을 한번 알아봐야겠네요

    생소한 방식이라 공부를 해야겠군요..ㅋㅋ


    본문에 2번서버에 대한 설명이 잘못되었네요 제가 생각해도 이상합니다..ㅋ

    괜히 이미지 경로 띄우는것도 분산시키려고 하려 설계한게 너무 낭비가 된듯싶네요 ㅎㅎ

  • 개나소나고생
    7k
    2017-01-04 08:47:10
    저 뭐 고성능/분산처리 이런 기술을 떠나서 개인적으로는..클라우드 서비스를 통해 시범 오픈 후에 반응을 보시고 구매하시는게 괜찮지 않나 싶네요.
  • zepinos
    20k
    2017-01-04 09:48:26 작성 2017-01-04 09:56:38 수정됨

    모바일이라 짧게...


    1. 티밍 이야기가 몇 번 나오는데, 가정용은 고사하고 웬만한 전용선도 라우터 등에서 티밍 안해줍니다. 하위 장비만 티밍 설정한다고 되는게 아닙니다. 윈 서버에서 티밍 구성하는게 쉽다보니 그냥 구성만 하면 작동이 된다고 착갇할 수 있지만 상위장비인 매니지드 스위치 등에서 티밍 설정해줘야 그 장비까지 티밍 되는 겁니다. 그 장비가 보통 가정에선 구경(?)도 못하는데...전화해서 티밍 설정해달라고 할 수는 없죠. 게다가 타회사 회선으로 묶는다면....더더욱요.


    2. web 보다는 이미지 변환을 2번 서버에서 하고, 2번 서버의 사양을 올리는게 나을 수 있습니다. 2번 역시 1번에서 파일 전송 받은 뒤 변환을 해주고 직접 변환된 이미지를 보여주는 역할(리눅스면 lighttpd 같은걸로)을 겸하는 구성도 합니다. 보통 이런 장비를 일반 서버로 하지 않고 das, san 장비로 비슷하게 구현합니다. 대역폭이 널널하다면 nas 쓰는 거구요.

  • ssamce
    176
    2017-01-04 14:43:02

    zepinos

    image 서버 사양을 늘리고 web 서버 사양을 낮춘다면

    접속자가 몰렸을때의 처리를 어떻게 해야할까요??

    어느정도 성능의 cpu가 어느정도의 접속량을 견딜수있는지 계산하기가 힘드네요..ㅎㅎ

    사이트 규모와 보여주는 페이지의 컨텐츠들에 따라 다르겠지만 그래도 평균적으로 어느정도 견딜수 있는지를 테스트할수 있는 그런 툴이 있을까요..?
    다 만들고나서 JMeter 로 하는수밖에 없을까요..ㅎㅎ

  • zepinos
    20k
    2017-01-04 15:08:44

    1. WEB 와 IMAGE 의 부하를 예측하기 힘들다면, 동일한 사양의 서버로 구축한 뒤 두 대의 역할을 한 서버에서 처리하도록 구성하는 방법도 존재합니다. 이 쪽이 Cluster 을 고려해서 만들어서 문제가 덜 할 수도 있습니다. 갑자기 몰리면 1 대 증설하면 됩니다.


    2. 부하테스트는 통상적으로 만들고 난 뒤에 고려하게 됩니다. JMeter 도 좋은 툴이고, nGrinder 같은 본격적인 부하테스트 툴도 있고, JUnit 의 경쟁자인 TestNG 의 경우 TDD 을 실현하면서 부하테스트도 겸할 수 있어서 괜찮겠다는 생각도 해봅니다.


  • ssamce
    176
    2017-01-04 15:12:24

    여러가지 조언 감사합니다!!

    일단 저비용으로 운용해보고나서 판단해봐야겠네요 ㅎㅎ

  • 로그인을 하시면 답변을 등록할 수 있습니다.