SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
Apache MINA를 사용한
네트워크 어플리케이션 개발

    이희승, NHN Corporation
      trustin@apache.org
2




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




목차: 개요
 개요
   MINA란?
   장점
   사용자
 내부
 데모
 미래
 결론
개요                             4




 MINA란?

           A Multi-purpose
              Infrastructure
          for Network
              Applications
개요                                5




 MINA란?
  자바 네트워크 어플리케이션 프레임워크
  추상 API
    Event-driven
    비동기
  구현체
    NIO Socket & Datagram
    API를 만족하는 어떤 transport도 가능
개요                               6




 장점: 생산성
  유닛 테스트 친화적
    추상 API + mock objects
  확장성
    ‘필터’ - 어플리케이션 행동을 런타임에 변경
  유지보수성 · 재사용성
    네트워킹 코드 (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
개요                                                                                                    8




 장점: 성능
                  30,000                                                                     50.0%


                  25,000                                                                     40.0%


                  20,000                                                                     30.0%
     reqs / sec




                  15,000                                                                     20.0%


                  10,000                                                                     10.0%


                   5,000                                                                     0.0%


                      0                                                                      -10.0%
                           1   5       10     50       100    500   1,000   5,000   10,000

                                                   # of Clients

                                   Apache 2.0.58      MINA 2.0.0-M1         성능차
개요                                                                       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.
개요                         10




 장점: 안정성
  API 디자인
     11월 19일 1.0 릴리즈


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




 사용자
  The Apache Directory Project
      CitiStreet
      LDAPv3        Kerberos            DNS
                     DHCP                NTP
      ChangePW

  AMQP (Qpid)        Advanced Message Queuing Protocol

      JP Morgan Chase & Co.
  QuickFIX/J              Financial Information eXchange

      유가 증권 정보 교환 업계 표준
개요                                                          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
13




목차: 내부
 개요

 내부
   아키텍처
   핵심 요소
   In-VM 파이프
 데모
 미래
 결론
내부                                                                           14




 아키텍처
                                             Legend
     Remote Peer                               Core
                                          Extension Point

     Low-level




                       Low-level
                                      Protocol Implementation




                         I/O
       I/O




                                                                 실제 I/O 수행
          IoService    Filtered I/O
       I/O Event




                         Request




     IoFilterChain

                                                      이벤트 · 요청 필터링
              IoFilter #1
              IoFilter #2
              IoFilter #3
     Filtered I/O




                       Request




                                                                접속과 1:1 대응
         Event




                         I/O




             IoSession
                                                <프로토콜 로직 구현>
         IoHandler
내부                                                                                               15




 IoService
                                            IoService
                                       IoS es s ionManager
             서버:                                                  클라이언트:
           연결 받기                                                  서버에 연결하기


                IoAc c eptor                                       IoConnec tor




                                     구현체들
 nio::S oc ketAc c eptor                                               nio::S oc ketConnec tor


         nio::DatagramAc c eptor                              nio::DatagramConnec tor


                   v mpipe::VmPipeAc c eptor        v mpipe::VmPipeConnec tor
내부                                              16




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

  SSL · TLS               Logger
  Thread pool             Overload detector
  Performance profiler    Traffic shaper
  Lightweight firewall    Authorization
내부                                                               17




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


     IoAcceptor                                      IoHandler




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

                              Thread
     IoAcceptor                Pool                  IoHandler
                              Filter




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

                    Thread     Bottle-     Thread
     IoAcceptor      Pool      neck A       Pool     IoHandler
                     Filter   (IoFilter)    Filter
내부                                             18




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


  비즈니스 로직          – IoHandler
  프로토콜 코덱             – ProtocolCodecFilter
    Object serialization
    Text line
내부                                                                                                     19




 ProtocolCodecFilter
                                                    Legend
          Remote Peer                                 Core
                                                 Extension Point




          Low-level




                         Low-level
                                           Protocol Implementation




                           I/O
            I/O
               IoService




                         Filtered I/O
            I/O Event




                           Request




                                                                 Protocol Codec Factory
                                                                                            POJO →




                                                       Encoder
          IoFilterChain
                                                                                          ByteBuffer
                                        Encode
       ProtocolCodecFilter




                                                       Decoder
                                                                                          ByteBuffer
                                        Decode


                                                                                            → POJO
          Filtered I/O




                         Request
              Event




                           I/O




                  IoSession
                                          → 비즈니스 로직만!
              IoHandler
내부                                 20




 In-VM 파이프
             I/O 없는 통신:

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




목차: 데모
 개요
 내부

 데모
 미래
 결론
데모                        22




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




목차: 미래
 개요
 내부
 데모

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




 플랫폼으로서의 MINA
                Real-Time Management System
      Integration with Apache ASN.1 for complex protocols
                       Users can build customized servers
                                         Design custom
                           Rapidly
     HTTP     FTP                            Kerberos
                         Prototyped
                       with ready-made protocol codecs.
                                         protocols just like
                           Protocol
                                         drawing a UML!
                        Visual Protocol
     SMTP                                       LDAP
                           Designer
              ……
                        (ASN.1-based)


        Popular                                ASN.1
                           Others
       Protocols                               Codec


                    MINA Core Library
미래                                     25




 실시간 관리
  A universal management view
  JMX 콘솔 · 웹 인터페이스
  실시간 접근
    서버 트래픽                      완료!
    IoFilter Hot-deployment
    어느 클라이언트가 무슨 메시지를?          완료!
    어느 메시지가 오래 걸리지?
    ……
미래           26




 실시간 관리 예시
미래                         27




 참여합시다!
  마음에 드십니까?
  피드백이 많을 수록 품질은 향상됩니다!
    질문하기
    디자인 결함 지적하기
    버그 알려주기
    성능 테스트 결과 공유하기
28




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

 결론
결론                              29




 결론
  MINA는 현재…
    최고의 자바 넷-어플리케이션 프레임워크!
       생산성
       성능
       안정성
  MINA는 앞으로…
    네트워크 어플리케이션 개발에 관한
     모두를 갖춘 개발 · 관리 플랫폼이 되겠다!
30




참고자료
 홈페이지
  http://mina.apache.org/
  다양한 예제 · 다운로드 · 본 발표 자료


 메일링 리스트
  dev@mina.apache.org
  영어가 어렵다면 저에게 직접!
     trustin@apache.org
감사합니다!

  Q&A

Más contenido relacionado

La actualidad más candente

陈吉平:高可用分布式数据库系统架构实践
陈吉平:高可用分布式数据库系统架构实践陈吉平:高可用分布式数据库系统架构实践
陈吉平:高可用分布式数据库系统架构实践XMourinho
 
20081009 작업공수표
20081009 작업공수표20081009 작업공수표
20081009 작업공수표guest72f9872
 
Wiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.xWiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.xMakio Tsukamoto
 
Widget Market Overview Mar 2008
Widget Market Overview Mar 2008Widget Market Overview Mar 2008
Widget Market Overview Mar 2008Min Seok Kang
 
Readme ko
Readme koReadme ko
Readme koThata22
 
Ad Proposal(Korean)
Ad Proposal(Korean)Ad Proposal(Korean)
Ad Proposal(Korean)kunheeme
 
Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)龍一 田中
 
2 구글의 공룡화
2 구글의 공룡화2 구글의 공룡화
2 구글의 공룡화guestba5d5e
 
Jitaku Server 3points
Jitaku Server 3pointsJitaku Server 3points
Jitaku Server 3pointsakitsukada
 
第2回PHP懇親会発表資料
第2回PHP懇親会発表資料第2回PHP懇親会発表資料
第2回PHP懇親会発表資料Masahiko Sakamoto
 
Status Ruby on Rails in China
Status Ruby on Rails in ChinaStatus Ruby on Rails in China
Status Ruby on Rails in ChinaJesse Cai
 
http://vnx.su/ renault laguna 2 руководство по эксплуатации
http://vnx.su/ renault laguna 2 руководство по эксплуатацииhttp://vnx.su/ renault laguna 2 руководство по эксплуатации
http://vnx.su/ renault laguna 2 руководство по эксплуатацииrenruk
 
van de chung excel
van de chung excelvan de chung excel
van de chung excelMio Class
 
Яндекс.Директ: как мы деплоим наши Perl-web-приложения
Яндекс.Директ: как мы деплоим наши Perl-web-приложенияЯндекс.Директ: как мы деплоим наши Perl-web-приложения
Яндекс.Директ: как мы деплоим наши Perl-web-приложенияElena Bolshakova
 
Search in Web 2.0 Era
Search in Web 2.0 EraSearch in Web 2.0 Era
Search in Web 2.0 EraQin ZHANG
 

La actualidad más candente (20)

陈吉平:高可用分布式数据库系统架构实践
陈吉平:高可用分布式数据库系统架构实践陈吉平:高可用分布式数据库系统架构实践
陈吉平:高可用分布式数据库系统架构实践
 
20081009 작업공수표
20081009 작업공수표20081009 작업공수표
20081009 작업공수표
 
Wiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.xWiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.x
 
Widget Market Overview Mar 2008
Widget Market Overview Mar 2008Widget Market Overview Mar 2008
Widget Market Overview Mar 2008
 
Readme ko
Readme koReadme ko
Readme ko
 
Ad Proposal(Korean)
Ad Proposal(Korean)Ad Proposal(Korean)
Ad Proposal(Korean)
 
Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)
 
2 구글의 공룡화
2 구글의 공룡화2 구글의 공룡화
2 구글의 공룡화
 
JavaScript再入門
JavaScript再入門JavaScript再入門
JavaScript再入門
 
Jitaku Server 3points
Jitaku Server 3pointsJitaku Server 3points
Jitaku Server 3points
 
第2回PHP懇親会発表資料
第2回PHP懇親会発表資料第2回PHP懇親会発表資料
第2回PHP懇親会発表資料
 
Profile
ProfileProfile
Profile
 
Status Ruby on Rails in China
Status Ruby on Rails in ChinaStatus Ruby on Rails in China
Status Ruby on Rails in China
 
http://vnx.su/ renault laguna 2 руководство по эксплуатации
http://vnx.su/ renault laguna 2 руководство по эксплуатацииhttp://vnx.su/ renault laguna 2 руководство по эксплуатации
http://vnx.su/ renault laguna 2 руководство по эксплуатации
 
van de chung excel
van de chung excelvan de chung excel
van de chung excel
 
의도협발표자료
의도협발표자료의도협발표자료
의도협발표자료
 
Яндекс.Директ: как мы деплоим наши Perl-web-приложения
Яндекс.Директ: как мы деплоим наши Perl-web-приложенияЯндекс.Директ: как мы деплоим наши Perl-web-приложения
Яндекс.Директ: как мы деплоим наши Perl-web-приложения
 
okyuu.com x Rails x OpenID
okyuu.com x Rails x OpenIDokyuu.com x Rails x OpenID
okyuu.com x Rails x OpenID
 
Search in Web 2.0 Era
Search in Web 2.0 EraSearch in Web 2.0 Era
Search in Web 2.0 Era
 
Mgd01 lab04to05
Mgd01 lab04to05Mgd01 lab04to05
Mgd01 lab04to05
 

Destacado

가장 쉬운 안드로이드 앱 개발 방법 앱인벤터
가장 쉬운 안드로이드 앱 개발 방법 앱인벤터가장 쉬운 안드로이드 앱 개발 방법 앱인벤터
가장 쉬운 안드로이드 앱 개발 방법 앱인벤터Choulhyouc Lee
 
갱품앱 설명서
갱품앱 설명서갱품앱 설명서
갱품앱 설명서지은 김
 
스마트 디바이스 트렌드 및 전망 (2013년)
스마트 디바이스 트렌드 및 전망 (2013년)스마트 디바이스 트렌드 및 전망 (2013년)
스마트 디바이스 트렌드 및 전망 (2013년)훈주 윤
 
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인Seunghwa Song
 
2014 협성대 인사연 춘계학술회의 프로그램 20140516
2014 협성대 인사연 춘계학술회의 프로그램 201405162014 협성대 인사연 춘계학술회의 프로그램 20140516
2014 협성대 인사연 춘계학술회의 프로그램 20140516DuHun Jung
 
인터렉티브 디자인 3주차
인터렉티브 디자인 3주차인터렉티브 디자인 3주차
인터렉티브 디자인 3주차재현 조
 
모바일앱 시장현황 및 마케팅을 위한 25가지 방법
모바일앱 시장현황 및 마케팅을 위한 25가지 방법 모바일앱 시장현황 및 마케팅을 위한 25가지 방법
모바일앱 시장현황 및 마케팅을 위한 25가지 방법 마킨드(makiind)
 
Smart cloth ( 스마트 의류)
Smart cloth ( 스마트 의류)Smart cloth ( 스마트 의류)
Smart cloth ( 스마트 의류)Ho Hyun Lee
 
어플리케이션프로모션사례
어플리케이션프로모션사례어플리케이션프로모션사례
어플리케이션프로모션사례Gori Communication
 
Ptsd 정신의학적치유
Ptsd 정신의학적치유Ptsd 정신의학적치유
Ptsd 정신의학적치유DuHun Jung
 
세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라
세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라
세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라cbs15min
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크InGuen Hwang
 
트라우마틱 메모리(Traumatic Memory) 제작 기획
트라우마틱 메모리(Traumatic Memory) 제작 기획트라우마틱 메모리(Traumatic Memory) 제작 기획
트라우마틱 메모리(Traumatic Memory) 제작 기획Mad Scientists
 
스마트 디바이스의 이해와 활용
스마트 디바이스의 이해와 활용스마트 디바이스의 이해와 활용
스마트 디바이스의 이해와 활용지훈 정
 
스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안
스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안
스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안Smith Kim
 
신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현
신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현
신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현고양뉴스
 
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트mosaicnet
 
기획서 템플릿
기획서 템플릿기획서 템플릿
기획서 템플릿Jaewon Choi
 
모바일 서비스 기획 시작하기
모바일 서비스 기획 시작하기모바일 서비스 기획 시작하기
모바일 서비스 기획 시작하기Jae-hyung Park
 

Destacado (20)

가장 쉬운 안드로이드 앱 개발 방법 앱인벤터
가장 쉬운 안드로이드 앱 개발 방법 앱인벤터가장 쉬운 안드로이드 앱 개발 방법 앱인벤터
가장 쉬운 안드로이드 앱 개발 방법 앱인벤터
 
갱품앱 설명서
갱품앱 설명서갱품앱 설명서
갱품앱 설명서
 
스마트 디바이스 트렌드 및 전망 (2013년)
스마트 디바이스 트렌드 및 전망 (2013년)스마트 디바이스 트렌드 및 전망 (2013년)
스마트 디바이스 트렌드 및 전망 (2013년)
 
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
 
2014 협성대 인사연 춘계학술회의 프로그램 20140516
2014 협성대 인사연 춘계학술회의 프로그램 201405162014 협성대 인사연 춘계학술회의 프로그램 20140516
2014 협성대 인사연 춘계학술회의 프로그램 20140516
 
앱 제안서
앱 제안서앱 제안서
앱 제안서
 
인터렉티브 디자인 3주차
인터렉티브 디자인 3주차인터렉티브 디자인 3주차
인터렉티브 디자인 3주차
 
모바일앱 시장현황 및 마케팅을 위한 25가지 방법
모바일앱 시장현황 및 마케팅을 위한 25가지 방법 모바일앱 시장현황 및 마케팅을 위한 25가지 방법
모바일앱 시장현황 및 마케팅을 위한 25가지 방법
 
Smart cloth ( 스마트 의류)
Smart cloth ( 스마트 의류)Smart cloth ( 스마트 의류)
Smart cloth ( 스마트 의류)
 
어플리케이션프로모션사례
어플리케이션프로모션사례어플리케이션프로모션사례
어플리케이션프로모션사례
 
Ptsd 정신의학적치유
Ptsd 정신의학적치유Ptsd 정신의학적치유
Ptsd 정신의학적치유
 
세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라
세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라
세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크
 
트라우마틱 메모리(Traumatic Memory) 제작 기획
트라우마틱 메모리(Traumatic Memory) 제작 기획트라우마틱 메모리(Traumatic Memory) 제작 기획
트라우마틱 메모리(Traumatic Memory) 제작 기획
 
스마트 디바이스의 이해와 활용
스마트 디바이스의 이해와 활용스마트 디바이스의 이해와 활용
스마트 디바이스의 이해와 활용
 
스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안
스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안
스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안
 
신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현
신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현
신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현
 
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트
 
기획서 템플릿
기획서 템플릿기획서 템플릿
기획서 템플릿
 
모바일 서비스 기획 시작하기
모바일 서비스 기획 시작하기모바일 서비스 기획 시작하기
모바일 서비스 기획 시작하기
 

Más de trustinlee

WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징trustinlee
 
APIviz – Java API Visualizer
APIviz – Java API VisualizerAPIviz – Java API Visualizer
APIviz – Java API Visualizertrustinlee
 
Rapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINARapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINAtrustinlee
 
JBoss Middleware 및 Remoting 프로젝트 소개
JBoss Middleware 및 Remoting 프로젝트 소개JBoss Middleware 및 Remoting 프로젝트 소개
JBoss Middleware 및 Remoting 프로젝트 소개trustinlee
 
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리trustinlee
 
오픈 소스 소개
오픈 소스 소개오픈 소스 소개
오픈 소스 소개trustinlee
 

Más de trustinlee (6)

WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징
 
APIviz – Java API Visualizer
APIviz – Java API VisualizerAPIviz – Java API Visualizer
APIviz – Java API Visualizer
 
Rapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINARapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINA
 
JBoss Middleware 및 Remoting 프로젝트 소개
JBoss Middleware 및 Remoting 프로젝트 소개JBoss Middleware 및 Remoting 프로젝트 소개
JBoss Middleware 및 Remoting 프로젝트 소개
 
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리
 
오픈 소스 소개
오픈 소스 소개오픈 소스 소개
오픈 소스 소개
 

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

  • 1. Apache MINA를 사용한 네트워크 어플리케이션 개발 이희승, NHN Corporation trustin@apache.org
  • 2. 2 목차  개요  내부  데모  미래  결론
  • 3. 3 목차: 개요  개요  MINA란?  장점  사용자  내부  데모  미래  결론
  • 4. 개요 4 MINA란? A Multi-purpose Infrastructure for Network Applications
  • 5. 개요 5 MINA란?  자바 네트워크 어플리케이션 프레임워크  추상 API  Event-driven  비동기  구현체  NIO Socket & Datagram  API를 만족하는 어떤 transport도 가능
  • 6. 개요 6 장점: 생산성  유닛 테스트 친화적  추상 API + mock objects  확장성  ‘필터’ - 어플리케이션 행동을 런타임에 변경  유지보수성 · 재사용성  네트워킹 코드 (MINA) 및 프로토콜 코덱, 비즈니스 로직의 분리
  • 7. 개요 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
  • 8. 개요 8 장점: 성능 30,000 50.0% 25,000 40.0% 20,000 30.0% reqs / sec 15,000 20.0% 10,000 10.0% 5,000 0.0% 0 -10.0% 1 5 10 50 100 500 1,000 5,000 10,000 # of Clients Apache 2.0.58 MINA 2.0.0-M1 성능차
  • 9. 개요 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.
  • 10. 개요 10 장점: 안정성  API 디자인  11월 19일 1.0 릴리즈  구현체  2004년부터 지속적으로 개선  오픈 소스 vs. In-house?
  • 11. 개요 11 사용자  The Apache Directory Project  CitiStreet  LDAPv3  Kerberos  DNS  DHCP  NTP  ChangePW  AMQP (Qpid) Advanced Message Queuing Protocol  JP Morgan Chase & Co.  QuickFIX/J Financial Information eXchange  유가 증권 정보 교환 업계 표준
  • 12. 개요 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
  • 13. 13 목차: 내부  개요  내부  아키텍처  핵심 요소  In-VM 파이프  데모  미래  결론
  • 14. 내부 14 아키텍처 Legend Remote Peer Core Extension Point Low-level Low-level Protocol Implementation I/O I/O 실제 I/O 수행 IoService Filtered I/O I/O Event Request IoFilterChain 이벤트 · 요청 필터링 IoFilter #1 IoFilter #2 IoFilter #3 Filtered I/O Request 접속과 1:1 대응 Event I/O IoSession <프로토콜 로직 구현> IoHandler
  • 15. 내부 15 IoService IoService IoS es s ionManager 서버: 클라이언트: 연결 받기 서버에 연결하기 IoAc c eptor IoConnec tor 구현체들 nio::S oc ketAc c eptor nio::S oc ketConnec tor nio::DatagramAc c eptor nio::DatagramConnec tor v mpipe::VmPipeAc c eptor v mpipe::VmPipeConnec tor
  • 16. 내부 16 IoFilter  이벤트 · 요청을 가로채 기능 확장  재사용 가능  Hot deploy 가능  SSL · TLS  Logger  Thread pool  Overload detector  Performance profiler  Traffic shaper  Lightweight firewall  Authorization
  • 17. 내부 17 ThreadPoolFilter 스레드 풀 없음: 최소 레이턴시를 위한 싱글 스레드 설정 IoAcceptor IoHandler 스레드 풀 한 개: 일반적인 高 스루풋 설정 Thread IoAcceptor Pool IoHandler Filter 하나 이상의 스레드 풀: 다양한 자원이 병목일 경우 Thread Bottle- Thread IoAcceptor Pool neck A Pool IoHandler Filter (IoFilter) Filter
  • 18. 내부 18 ProtocolCodecFilter  명확한 분리를 통한 재사용성  비즈니스 로직 – IoHandler  프로토콜 코덱 – ProtocolCodecFilter  Object serialization  Text line
  • 19. 내부 19 ProtocolCodecFilter Legend Remote Peer Core Extension Point Low-level Low-level Protocol Implementation I/O I/O IoService Filtered I/O I/O Event Request Protocol Codec Factory POJO → Encoder IoFilterChain ByteBuffer Encode ProtocolCodecFilter Decoder ByteBuffer Decode → POJO Filtered I/O Request Event I/O IoSession → 비즈니스 로직만! IoHandler
  • 20. 내부 20 In-VM 파이프 I/O 없는 통신: ‘Direct Method Invocations’ ⇒ 無 프로토콜 코덱 ⇒ 無 네트워크 레이턴시 ⇒ 동일한 API 사용
  • 21. 21 목차: 데모  개요  내부  데모  미래  결론
  • 22. 데모 22 Reverse Echo Server  받은 줄을 뒤집어 돌려주는 서버  기본 제공되는 텍스트 라인 코덱 사용
  • 23. 23 목차: 미래  개요  내부  데모  미래  플랫폼으로서의 MINA  실시간 관리  참여합시다!  결론
  • 24. 미래 24 플랫폼으로서의 MINA Real-Time Management System Integration with Apache ASN.1 for complex protocols Users can build customized servers Design custom Rapidly HTTP FTP Kerberos Prototyped with ready-made protocol codecs. protocols just like Protocol drawing a UML! Visual Protocol SMTP LDAP Designer …… (ASN.1-based) Popular ASN.1 Others Protocols Codec MINA Core Library
  • 25. 미래 25 실시간 관리  A universal management view  JMX 콘솔 · 웹 인터페이스  실시간 접근  서버 트래픽 완료!  IoFilter Hot-deployment  어느 클라이언트가 무슨 메시지를? 완료!  어느 메시지가 오래 걸리지?  ……
  • 26. 미래 26 실시간 관리 예시
  • 27. 미래 27 참여합시다!  마음에 드십니까?  피드백이 많을 수록 품질은 향상됩니다!  질문하기  디자인 결함 지적하기  버그 알려주기  성능 테스트 결과 공유하기
  • 28. 28 목차: 결론  개요  내부  데모  미래  결론
  • 29. 결론 29 결론  MINA는 현재…  최고의 자바 넷-어플리케이션 프레임워크!  생산성  성능  안정성  MINA는 앞으로…  네트워크 어플리케이션 개발에 관한 모두를 갖춘 개발 · 관리 플랫폼이 되겠다!
  • 30. 30 참고자료  홈페이지  http://mina.apache.org/  다양한 예제 · 다운로드 · 본 발표 자료  메일링 리스트  dev@mina.apache.org  영어가 어렵다면 저에게 직접!  trustin@apache.org