혹시 Java로 TCP서버를 구축하고 계신가요?

JAVA NIO를 공부하면서 서버 설계에 고민하고 계신가요?


서버 코어 설계 및 개발에 투자할 많은 시간 있다면? 그리고 안정성을 높이고 성능을 높이 끌어낼 자신과 시간이 있다면 직접 개발하세요. 하지만 그렇지 않다면 검증된 Java Network Framework인 Netty나 MINA를 사용해보세요.


이렇게 쓰니 제가 홍보하는 사람 같군요.

하지만 저의 경험입니다. 서버 코어 부분을 설계하고 개발하다보면 프로젝트에서 너무 많은 시간을 할애하게 되어버립니다. 그 후에 안정성이나 성능에 대해서도 고민이 되고 제가 나가면서 다른 사람에게 인수인계 할 때의 유지보수도 문제가 되어 버립니다.


그런 면에서 Netty나 MINA를 추천합니다.

사실 저도 어떻게 더 좋은지 모르겠습니다. 파운더이신 이희승씨가 Netty 사용을 권고하고 성능면에서도 Netty가 훌륭하다고 나왔지만, 역사가 길고 사용자가 많고 MINA를 사용해야 할지요. (어떤 분은 Netty 쓰지 말고 MINA를 써야 성능이 좋다고 하는 분도 있습니다.)


저는 netty를 사용합니다만 둘 다 우수한 프레임워크이니 골라서 사용해보시길 바랍니다.

두 개 모두 한국인 이희승씨가 개발하셨습니다. (아래 인터뷰를 읽어보면 이해가 잘 가실겁니다.)




Netty (JBoss)

자바 네트워크 어플리케이션 프레임워크

  • 이벤트 기반이며 비동기 방식
  • Interceptor Chain 패턴 방식
  • Old, New I/O 지원
  • NIO구현 벤더별 최적화
  • 과부하 및 Dos 방어 매커니즘 포함
  • 제한된 환경 지원(Android, Applet, WebStart)
  • 다양한 컨터이너 지원(JbossMc, OSGi, Guice, Spring)



1. 네티 공식 사이트

( http://netty.io/ )


2. netty  한국인 사용자 그룹

( http://groups.google.co.kr/group/netty-ko?hl=ko )


3. Netty, MINA 개발자 이희승님 인터뷰

http://www.bloter.net/archives/11472 )


4. 한국 미나 사용자께 드리는 네티로의 전환 권고

http://gleamynode.net/articles/2223/ )


6. Performance Comparison between NIO Frameworks

http://gleamynode.net/articles/2232/ )


7. Netty 사용에 관한 몇 가지 TIP

http://blog.pointbre.com/351/netty-%EC%82%AC%EC%9A%A9%EC%97%90-%EA%B4%80%ED%95%9C-%EB%AA%87%EA%B0%80%EC%A7%80-tip.html )


8. Netty User Guide

http://docs.jboss.org/netty/3.2/guide/html_single/ )


9. Netty Zero copy

http://clotho95.blog.me/140117229649 )


10. DEV 2012 Netty Internal Session

http://deview.kr/2012/xe/?mid=track&document_srl=379 )


11. Netty Tutorial

http://seeallhearall.blogspot.de/2012/05/netty-tutorial-part-1-introduction-to.html )






Apache MINA

MINA는 네트워크 어플리케이션 프로그래밍에 대한 지식 없이도 고성능 네트워크 어플리케이션을

쉽게 작성할 수 있도록 돕는 프레임워크


MINA 의 특징

  • TCP, UDP 트랜스포트 타입을 모두 지원
  • ByteBuffer 단위의 low-level I/O layer 와 Message object 단위의 high-level protocol layer를 모두 지원
  • Servlet filter 와 유사한 이벤트 필터링 기능을 제공하여 실시간 퍼포먼스 모니터링 및 이벤트 transformation (e.g. SSL 지원, 권한 검사, 클라이언트 블랙리스팅...) 가능
  • 같은 VM 내에 있는 MINA 어플리케이션 간의 통신시 in-VM pipe 를 제공하여 전문의 encode/decode 없이 바로 전달하여 성능을 극대화할 수 있음.


1. MINA
( http://mina.apache.org/ )


2. Javadoc

( http://mina.apache.org/mina-project/apidocs/index.html )


3. 특징

( http://mina.apache.org/mina-project/features.html )


4. Quick start

( http://mina.apache.org/mina-project/quick-start-guide.html )


5. Apache MINA Group

( http://mina.apache.org/mina-project/testimonials.html )


6. Download

( http://mina.apache.org/mina-project/downloads.html )


7. MINA 를 소개합니다. (차세대 Netty) by 이희승 (2004)

( http://www.javaservice.co.kr/~java/bbs/read.cgi?b=news&c=r_p&m=resource&n=1104313609&p=13&s=t )


8. MINA 강좌

http://mckdh.net/130 )






Netty vs MINA

1. MINA vs Netty

http://ellieya.tistory.com/23 )


2. Netty vs Apache MINA stackoverflow

( http://stackoverflow.com/questions/1637752/netty-vs-apache-mina )







Leave a Comment


to Top