안녕하세요. 

저는 얼마전 대학을 졸업하고(컴공) ...취업준비중인 아마추어 개발자이구요(청년백수죠 ㅠㅠ) 

수년간 고민하고 기획해왔던 창작물을 취업전에 완성해보고자 지난 두달정도의 시간을 집중 투자하여

(크리스마스,연말,연초행사... 그런거 없었습니다 ㅠㅠ 죽은듯이 코드만 짜고 공부하고 살았습니다 ㅠㅠ)

현재 클라이언트단 어플리케이션(일종의 SNS) 완성을 앞두고 있습니다. (그러나 레이아웃 디자인이 참. 어렵네요.. 스마트폰 어플 개발의 50%이상이 디자인이 될 수 있다는 말씀에 참으로 공감하게 되었습니다. 어쩌면 90%일수도 ;;)

SNS 어플리케이션이기때문에 Hi-there & 카카오톡과 같은 동시 접속자 100~1000명이상의 부하를 처리할 수 있는 서버 구성이 매우 중요하다고 생각하는데..

그에 관한 지식이 상당히 부족하며 또한 현재의 설계가 합당한지를 검증받고자 재직자님들과 고수님들에게 질문을 남기게 되었습니다. 




우선 현재까지 진척되어온 부분, 진행되어가고 있는 부분을 말씀드리겠습니다.



- 구글맵 API를 이용한 서비스이며, (10만쿼리(?) per day 제한이 있는걸로 알고 있는데 이 부분은 페이지로드와 관계없고 단지 지오코딩에 관한 접근에 제한을 건다고 알고 있습니다. 네이버나 다음을 생각해보기도 하였지만, 한국지도만이 보일 뿐이어서 제외시켰습니다. 최선적인 방법으로 Offline MAP을 올리고자 하였으나 마땅한 공개 소스를 찾을 수 없었습니다 ㅠ)

- 공개되기 전에 성공에 대한 어떠한 판단도 하지 않아야 하지만, worst case(여기서는 best case;;)를 고려하여 동접자 1000명을 수용할 수 있는 서버를 구성해보고자 서버에 관한 공부를 이어가고 있습니다. 주변에 관련 업무를 행하는 지인이 없는지라,,, 많이 헤매고 있습니다 ㅠ. 우선은 이원영님의 Javaservice.net 사이트를 통해 다양한 기법들을 읽고 배워가고 있습니다..

- 클라이언트 - 서버간 DB 작업간에 Socket Connection Pool 적용을 고려하고 있고 Connectionless 방식으로 읽고 쓰는 - Connection을 읽는 즉시 close하는 - 방식을 취하고 있습니다. 근데 이런 상황에서 흔히 말하는 동접1000명을 계산하는 것이 필요한 것인가, 혹은 수용가능한가에 대한 답변을 듣고 싶습니다.  RMI를 이용한 설계가 구현상 간편하다(?)라는 게시물을 읽은 적이 있는데 그럼 현재까지 구현한 Socket을 포기하고 RMI로 갈아타야 할까요?
+ 서버는 xxx 미들웨어를 탑재한 Ram 2 ~ 4GB, 듀얼코어칩 달랑한개(ㅠㅠ) fedora Linux OS상에서 돌릴 예정이구요. 업/다운로드속도는 5~6MB (친구컴퓨터입니다...ㅠ)
+ 서버단에서 큰 작업이 없고 단지 DB I/O작업만이 이루어진다라는 전제에서, 5MB라는 업로드속도만으로 계산하였을때, 
 CASE 1. 5 MB  /  { 이미지파일(250kb이내)+DBquery(15kb이내) }  = 18명 이라는 결과가 나오는데  (ㅠㅠ)
 이런 경우 고정 IP 하나 사서 이미지 파일 서버와 DB 서버를 따로 구성하는게 좋을까요? (아,,돈도 없는 백수인데 .ㅠㅠ)
 CASE 2. 5 MB / DBquery(15kb이내) = 333명 
             5 MB / 이미지파일(250kb이내) = 20명

 이미지 파일 처리가 참............ Http통신프로토콜로 읽어오는 방식이긴한데, 현재는 Apache Server상에서 이미지를 저장하고 읽어가고 합니다. 그러면 혹시 동접자를 생각하지 않아도 되나요? 다수의 사용자가 port 80으로 들어오면....;;... 아 혹시 Apache Server가 Connection Pool 혹은 고유의 Thread Pool을 통해 port를 넘기는 방식으로 동접자를 핸들하는 건가요?

- 이미지 파일 전송은 Gilles Debunne님이 공개한 멀티 스레딩 이미지 다운로드 기법을 이용하고 있어서 일단은 맘놓고 있는데 가끔씩 끔찍한 Thread Pool Exception / Out of memory exception을 날려줄때가 있어서, 나름의 꽁수를 생각하고 있습니다.


- 또한 수업시간을 제외하곤 생전 다루지도 않아왔던 SQL문들을 다루고...DB Connection Pool에 관한 공부도 이어가고 있습니다. (혼자하기엔 정말 매우 벅찬 것 같습니다..이러다가 머리가 뽀사질 것 같습니다.)



1월 31일까지 완성하겠다는 목표아래 달려왔고 서버가 완료치 못하더라도 ㅠㅠ 중간 결과물이나마 마켓에 올릴 예정입니다. 

아무쪼록 앞서 달려나가고 계시는 고수님들의 따뜻한 격려 혹은 지도 편달을 부탁드립니다.