아직 사이트 공사중이지만 공유에 대한 진지한 토론을 하고 싶어 공개합니다.

emptynote의 이미지

아직 사이트 공사중이지만 공유에 대한 진지한 토론을 하고 싶어 공개합니다.

정말이지 공유.. 즉 소통은 정말로 어려운것 같습니다.

사이트 주소는 아래와 같습니다.

라이센스는 아파치2 라이센스입니다.

---------- 사이트 주소 -----------
http://www.sinnori.pe.kr

onhachoe의 이미지

딴지라면 딴지가 되겠지만 적어보겠습니다
일단 제작 의도를 파악하기가 힘드네요. 그저 메시징 시스템을 개발하시려는 건지, 아니면 다른 목적이 있는지.
그리고 이미 트랜스포트 레이어 상에서 구현된 내용을 다시 중복으로 구현하시려는 것도 보이는 듯 하고(udp라면 뭐);;;
또한 이미 google protobuf라든지 apache thrift등의 라이브러리에서 이미 extensive하게 구현된 기능을 다시 만드리시려는 것도 같습니다

죄송하지만 프로젝트의 정확한 목적이 뭔지 여쭈어봐도 괜찮을까요?

emptynote의 이미지

저는 다만 회원 { 아이디, 비밀번호 } 메시지를 만들고 보내면

서버에서 DB 랑 꿍작해서 회원결과 { 성공, 회원가입에 성공하셨습니다. } 라는

결과 메시지를 받아 보길 원할 뿐입니다.

초창기에는 네트워크 지원 윷놀이 게임이 목표였기에

header+data 를 기본으로 가는 클라이언트/서버를 만들고자 했습니다.

다만 제가 금융 servlet/jsp 쪽에 경험이 있는지라,

웹서버와 연동한 어플리케이션 서버의 모습을 그리도록 한것입니다.

이미 구현된것들 다시 만드는것 맞습니다.

하지만 그렇수 밖에 없는 이유가 있습니다.

요구사항 발주자가 제 자신인지라,

제가 원하는 모습으로 스스로 만들 수 밖에 없었습니다.

윷놀이 게임 기능 명세부터 만들때에는 이미 누군가 나 보다 더 좋은 것을 만들었을 것이다.

하지만 현실은 기능명세만으로 네트워크 서버와 클라이언트 만들기는 험난 그 자체였습니다.

알려주신 2곳의 예를 들겠습니다.

apache thrift 는 메시지가 안보이는 구조로 제가 원하는것이 아닌것 같습니다.

google protobuf는 제가 원하는 모습에 근사합니다.

다만 google protobuf 는 "Defining Your Protocol Format" 즉, 설정파일을 두는듯하네요.

(1) 저는 절대로 IO 만큼은 설정 파일 없어야 한다고 생각합니다.

그것 때문에 속도가 안나오고 보안에 취악해도 포기 못합니다.

그리고 (2) 네트워크 부분은 샘플만으로는 모르겠네요.

전송 기능이 있는지 없는지 모르겠습니다.

그리고 마지막으로 (3) 자바빈즈 형태인거 봐서는 동적 클래스 로딩을 어디선가 지원하는듯하는데요.

개발하다 보면 IO 수정 다반사라고 생각합니다. 동적 클래스 로딩은 꼭 필요한 기능이라고 생각합니다.

(4) 웹 서버에 이식된 비동기 방식의 TCP/IP 클라이언트 라이브러리는 눈씻고 찾아 봐도 구경하기 어렵더군요.

하늘아래 새로운것이 없는데 왜? 제 요구 조건을 들어주는 맞춤형 프레임 워크는 없는걸까요?

아래 소스는 동적 클래스 입문전에 작성된거라 대폭 수정되어야 합니다. 기술검토 없이 안이하게 한 제가 잘못이지요.

수정전 : inObj.byteVar1 = Byte.MAX_VALUE;
수정후 : inObj.setAttribute("byteVar1", Byte.MAX_VALUE);

그래도 제 입맛에 맞는 클라이언트 모습을 했다고 자부합니다.
첨부 파일은 "AllDataType" 이라는 메시지와 관련된 파일로 개발자가 만들어야 하는 파일들입니다.
첨부 파일중 sample.txt는 AllDataType 이라는 메시지를 보내는 클라이언트 로직입니다.

댓글 첨부 파일: 
첨부파일 크기
Package icon AllDataType.zip8.91 KB
Plain text icon sample.txt1.31 KB
onhachoe의 이미지

일단 뭔가 thrift 와 protobuf의 개념에 대해서 혼동하고 계신 것 같습니다.
이 둘은 rpc를 위하여 구현된 라이브러리 입니다. 실제로 인더스트리 쪽에서도 많이 쓰이고 있고 (사실 같은 개발자가 만들었군요 -_-;;)
먼저 제가 이를 추천한 이유는, 네트워크를 통한 기능은 어찌하여는 rpc 프레임워크를 제대로 구현하고 들어가는게 중요하다는 생각입니다. (타입 데피니션이 있는것 자체가 중요한 포인트죠)
위 둘을 이를 지원하는 가장 보편적인 프레임 워크이고, 사용도 어렵지 않습니다.
그리고 잘못 아신것이 있는데 이들 프레임워크는 가능한 많은 flexibility를 염두에 두고 제작하였고, 하위 호환성은 물로 dynamic integration 이 가능합니다.
그때문에 어차피 업그레이드를 하려면 서버 클라이언트 모두 해야하는 만큼 너무 거부감을 가지실 필요가 없을듯 합니다.
그리고 둘다 arbitrary string, list, map 등의 전송이 가능합니다. 사실 이것만 가지고도 님이 구현하시고자 하는 부분의 반 이상은 다 되었다 보이는군요.

다시한번 이쪽 라이브러리를 살펴보시는 것을 추천드립니다.
이미 나와있는 de facto 스탠다드들의 로직을 알아보는것은 혹시 쓰지 않더라도 모르고 시작하는 것보다 훨씬 도움이 될 수 있으니까요.

emptynote의 이미지

오해하신것 같은데요. 간단하게 첫인상만 본것입니다.

첫인상만으로 이러쿠 저러쿠 말할정도로 제가 용감하지 않습니다.

thrift의 SSL 부분은 참 부럽네요.

참고하도록 하겠습니다.

emptynote의 이미지

저 죄송하지만 thrift 문서 어디서 찾아야 하나요?

thrift 자바쪽 클라이언트랑 제가 만든 서버,
제가 만든 클라이언트랑 thrift 자바쪽 서버
이렇게 크로스 검사를 할려는데, 도통 문서를 못찾겠네요.
제가 찾아본 사이트 주소는 http://thrift.apache.org/ 입니다.

onhachoe의 이미지

아 그리고 실제로 protobuf 는 구글의 대부분의 백엔드 서비스가 이용하여 커뮤니케이션을 하고
thrift는 페이스북의 모든 벡엔드 시스템 커뮤니케이션에 쓰이는 프레임워크 입니다.

ydhoney의 이미지

공유에 대한 진지한 토론은 : http://cafe.daum.net/gongyoo

그리고 공유는 소통 아니고 지철.
* 공유 (공지철) 탤런트, 영화배우

라이센스는 : http://www.soopent.com/

emptynote의 이미지

대박.. 공유신 재림인가요 ^^

맞는 말씀이세요. ㅎㅎ