31
Apache MINA Apache MINA 를 사용한 를 사용한 네트워크 어플리케이션 개발 네트워크 어플리케이션 개발 이희승, NHN Corporation [email protected]

Apache MINA를 사용한 네트워크 어플리케이션 개발

Embed Size (px)

DESCRIPTION

'Network Application Development with Apache MINA' - presented at The 8th Korea Java Developer Conference (24 February 2007)

Citation preview

Page 1: Apache MINA를 사용한 네트워크 어플리케이션 개발

Apache MINAApache MINA를 사용한를 사용한네트워크 어플리케이션 개발네트워크 어플리케이션 개발

이희승, NHN Corporation

[email protected]

Page 2: Apache MINA를 사용한 네트워크 어플리케이션 개발

2

목차 개요 내부 데모 미래 결론

Page 3: Apache MINA를 사용한 네트워크 어플리케이션 개발

3

목차: 개요 개요

MINA란? 장점 사용자

내부 데모 미래 결론

Page 4: Apache MINA를 사용한 네트워크 어플리케이션 개발

4

MINA란?

A Multi-purpose Infrastructure

for Network Applications

개요

Page 5: Apache MINA를 사용한 네트워크 어플리케이션 개발

5

MINA란? 자바 네트워크 어플리케이션 프레임워크 추상 API

Event-driven 비동기

구현체 NIO Socket & Datagram API를 만족하는 어떤 transport도 가능

개요

Page 6: Apache MINA를 사용한 네트워크 어플리케이션 개발

6

장점: 생산성 유닛 테스트 친화적

추상 API + mock objects

확장성 ‘필터’ - 어플리케이션 행동을 런타임에 변경

유지보수성 · 재사용성 네트워킹 코드 (MINA) 및 프로토콜 코덱,

비즈니스 로직의 분리

개요

Page 7: Apache MINA를 사용한 네트워크 어플리케이션 개발

7

장점: 성능 MINA 2 vs. Apache HTTPD 2

2 dual-core Opterons (4 cores) Gentoo Linux 2.6.18-r6 x86_64 100Mbit 이더넷 JDK 1.6.0

응답 전문: 405 바이트 (본문: 128 바이트)

-server –Xms512m –Xmx512m –Xss128k–XX:+AggressiveOpts –XX:+UseParallelGC–XX:+UseBiasedLocking –XX:NewSize=64m

개요

Page 8: Apache MINA를 사용한 네트워크 어플리케이션 개발

8

장점: 성능

0

5,000

10,000

15,000

20,000

25,000

30,000

1 5 10 50 100 500 1,000 5,000 10,000

# of Clients

reqs

/ s

ec

-10.0%

0.0%

10.0%

20.0%

30.0%

40.0%

50.0%

Apache 2.0.58 MINA 2.0.0-M1 성능차

개요

Page 9: Apache MINA를 사용한 네트워크 어플리케이션 개발

9

장점: 성능 AMQP 테스트

클라이언트 · 서버 4 dual-core Opterons (8 cores) 1Gbit 이더넷 클라이언트 프로세스 10 개

본문: 256+ 바이트 (AMQP 헤더 제외) 평균: 180,000 msg/sec 최대: 220,000 msg/sec

Courtesy of Robert J. Greig, JP Morgan Chase & Co.

개요

Page 10: Apache MINA를 사용한 네트워크 어플리케이션 개발

10

장점: 안정성 API 디자인

11월 19일 1.0 릴리즈

구현체 2004년부터 지속적으로 개선 오픈 소스 vs. In-house?

개요

Page 11: Apache MINA를 사용한 네트워크 어플리케이션 개발

11

사용자

The Apache Directory Project CitiStreet

AMQP (Qpid) Advanced Message Queuing Protocol

JP Morgan Chase & Co.

QuickFIX/J Financial Information eXchange

유가 증권 정보 교환 업계 표준

Kerberos DHCP

DNS NTP

LDAPv3 ChangePW

개요

Page 12: Apache MINA를 사용한 네트워크 어플리케이션 개발

12

사용자

AsyncWeb HTTP

Codehaus XFire SOAP, WS-*

Rails-AsyncWeb Ruby on Rails

EURid European Domain Registry

Jive Software Wildfire Jabber / XMPP

RED5 Server Macromedia Flash Media RTMP

개요

Page 13: Apache MINA를 사용한 네트워크 어플리케이션 개발

13

목차: 내부 개요

내부 아키텍처 핵심 요소 In-VM 파이프

데모 미래 결론

Page 14: Apache MINA를 사용한 네트워크 어플리케이션 개발

14

아키텍처Remote Peer

IoService

IoHandler

IoFilterChain

Core

Extension Point

Protocol Implementation

Legend

Filtered I/O

Event I/O

Re

ques

t

I/O Event

Filte

red

I/O

Re

ques

t

Low-level

I/O

Low

-leve

l I/

O

IoFilter #1

IoFilter #2

IoFilter #3

IoSession<프로토콜 로직 구현>

이벤트 · 요청 필터링

실제 I/O 수행

접속과 1:1 대응

내부

Page 15: Apache MINA를 사용한 네트워크 어플리케이션 개발

15

IoAcceptor IoConnector

nio::DatagramConnector

nio::SocketConnector

vmpipe::VmPipeAcceptor vmpipe::VmPipeConnector

nio::DatagramAcceptor

nio::SocketAcceptor

IoSess ionManagerIoService

IoService

서버:연결 받기

클라이언트:서버에 연결하기

구현체들

내부

Page 16: Apache MINA를 사용한 네트워크 어플리케이션 개발

16

IoFilter

이벤트 · 요청을 가로채 기능 확장 재사용 가능 Hot deploy 가능

Logger Overload detector Traffic shaper Authorization

SSL · TLS Thread pool Performance profiler Lightweight firewall

내부

Page 17: Apache MINA를 사용한 네트워크 어플리케이션 개발

17

IoAcceptor IoHandler

스레드 풀 없음: 최소 레이턴시를 위한 싱글 스레드 설정

ThreadPoolFilter

IoAcceptorThread

PoolFilter

Bottle-neck A

(IoFilter)

ThreadPoolFilter

IoHandler

하나 이상의 스레드 풀: 다양한 자원이 병목일 경우

IoAcceptorThread

PoolFilter

IoHandler

스레드 풀 한 개: 일반적인 高 스루풋 설정

내부

Page 18: Apache MINA를 사용한 네트워크 어플리케이션 개발

18

ProtocolCodecFilter

명확한 분리를 통한 재사용성

비즈니스 로직 – IoHandler

프로토콜 코덱 – ProtocolCodecFilter Object serialization Text line

내부

Page 19: Apache MINA를 사용한 네트워크 어플리케이션 개발

19

ProtocolCodecFilterRemote Peer

IoService

IoHandler

IoFilterChain

Core

Extension Point

Protocol Implementation

Legend

Filtered I/O

Event I/O

Re

ques

t

I/O Event

Filte

red

I/O

Re

ques

t

Low-level

I/O

Low

-leve

l I/

O

IoSession

ProtocolCodecFilter

Protocol Codec Factory

EncoderD

ecoder

Encode

Decode

POJO →ByteBuffer

ByteBuffer → POJO

→ 비즈니스 로직만!

내부

Page 20: Apache MINA를 사용한 네트워크 어플리케이션 개발

20

In-VM 파이프

I/O 없는 통신:

‘Direct Method Invocations’⇒ 프로토콜 코덱無⇒ 네트워크 레이턴시無⇒ 동일한 API 사용

내부

Page 21: Apache MINA를 사용한 네트워크 어플리케이션 개발

21

목차: 데모 개요 내부

데모 미래 결론

Page 22: Apache MINA를 사용한 네트워크 어플리케이션 개발

22

Reverse Echo Server

받은 줄을 뒤집어 돌려주는 서버 기본 제공되는 텍스트 라인 코덱 사용

데모

Page 23: Apache MINA를 사용한 네트워크 어플리케이션 개발

23

목차: 미래 개요 내부 데모

미래 플랫폼으로서의 MINA 실시간 관리 참여합시다!

결론

Page 24: Apache MINA를 사용한 네트워크 어플리케이션 개발

24

Integration with Apache ASN.1 for complex protocols

Users can build customized servers with ready-made protocol codecs.

Design custom protocols just like drawing a UML!

Real-Time Management System

LDAP

Kerberos

ASN.1Codec

플랫폼으로서의 MINA

HTTP

SMTP

FTP

……

Popular Protocols

Visual Protocol Designer

(ASN.1-based)

Rapidly Prototyped

Protocol

Others

MINA Core Library

미래

Page 25: Apache MINA를 사용한 네트워크 어플리케이션 개발

25

실시간 관리 A universal management view JMX 콘솔 · 웹 인터페이스 실시간 접근

서버 트래픽 완료!

IoFilter Hot-deployment 어느 클라이언트가 무슨 메시지를? 완료!

어느 메시지가 오래 걸리지? ……

미래

Page 26: Apache MINA를 사용한 네트워크 어플리케이션 개발

26

실시간 관리 예시미래

Page 27: Apache MINA를 사용한 네트워크 어플리케이션 개발

27

참여합시다! 마음에 드십니까? 피드백이 많을 수록 품질은 향상됩니다!

질문하기 디자인 결함 지적하기 버그 알려주기 성능 테스트 결과 공유하기

미래

Page 28: Apache MINA를 사용한 네트워크 어플리케이션 개발

28

목차: 결론 개요 내부 데모 미래

결론

Page 29: Apache MINA를 사용한 네트워크 어플리케이션 개발

29

결론 MINA는 현재…

최고의 자바 넷-어플리케이션 프레임워크! 생산성 성능 안정성

MINA는 앞으로… 네트워크 어플리케이션 개발에 관한

모두를 갖춘 개발 · 관리 플랫폼이 되겠다!

결론

Page 30: Apache MINA를 사용한 네트워크 어플리케이션 개발

30

참고자료 홈페이지

http://mina.apache.org/

다양한 예제 · 다운로드 · 본 발표 자료

메일링 리스트 [email protected]

영어가 어렵다면 저에게 직접! [email protected]

Page 31: Apache MINA를 사용한 네트워크 어플리케이션 개발

감사합니다!

Q & A