slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
EJB 기반 시스템 도입과 아키텍팅을 위한 실용적 가이드와 원리 PowerPoint Presentation
Download Presentation
EJB 기반 시스템 도입과 아키텍팅을 위한 실용적 가이드와 원리

Loading in 2 Seconds...

play fullscreen
1 / 31

EJB 기반 시스템 도입과 아키텍팅을 위한 실용적 가이드와 원리 - PowerPoint PPT Presentation


  • 183 Views
  • Uploaded on

EJB 기반 시스템 도입과 아키텍팅을 위한 실용적 가이드와 원리. 차의중 ㈜ 스펜오컴 Prof21@empal.com. EJB 의 도입 여부 결정 외부 아키텍팅 내부 아키텍팅. 목 차. EJB 의 도입 여부 결정 외부 아키텍팅 내부 아키텍팅. 1. 안정성 대량 , 또는 복잡한 트랜잭션 처리시 무결성을 보장해준다더라 . 자원관리 기능에 의해 사용자 급증시 응답속도의 현저한 저하 및 서버의 다운을 방지해준다더라 . 2. 개발 , 유지 , 보수의 편의성

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'EJB 기반 시스템 도입과 아키텍팅을 위한 실용적 가이드와 원리' - braden


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

EJB 기반 시스템 도입과 아키텍팅을 위한 실용적 가이드와 원리

차의중

㈜ 스펜오컴

Prof21@empal.com

slide2
EJB의 도입 여부 결정

외부 아키텍팅

내부 아키텍팅

목 차
slide3
EJB의 도입 여부 결정

외부 아키텍팅

내부 아키텍팅

slide4
1. 안정성

대량, 또는 복잡한 트랜잭션 처리시 무결성을 보장해준다더라.

자원관리 기능에 의해 사용자 급증시 응답속도의 현저한 저하 및 서버의 다운을 방지해준다더라.

2. 개발,유지,보수의 편의성

개발을 도와줄 최신의 기술과 도구들을 제공해준다더라.

선언적 프로그래밍, 최적화된 프레임웍, 다양한 라이브러리 제공

∴개발자는 단지 비즈니스 로직에만 신경쓰면 된다더라.

컴포넌트 기반이기 때문에 재사용성이 높다더라.

EJB의 도입을 고려중인 사람들의 일반적인 생각

그래서, 우리 시스템에는 EJB를 쓸 수 밖에 없다.

slide5
1. 안정성

대량, 또는 복잡한 트랜잭션 처리시 무결성을 보장해준다더라.

자원관리 기능에 의해 사용자 급증시 응답속도의 현저한 저하 및 서버의 다운을 방지해준다더라.

2. 개발,유지,보수의 편의성

개발을 도와줄 최신의 기술과 도구들을 제공해준다더라.

선언적 프로그래밍, 최적화된 프레임웍, 다양한 라이브러리 제공

∴개발자는 단지 비즈니스 로직에만 신경쓰면 된다더라.

컴포넌트 기반이기 때문에 재사용성이 높다더라.

좋다. 그러…나!

!

가장 중요한 전제조건이 빠져있지는 않은가?

slide6
EJB의 목적

분산 객체 기반 시스템의 설계,개발,배포,유지,보수,재사용을 쉽게하기 위한 것

EJB를 이용하면 …

짧은 시간, 적은 노력으로도 안정적인분산 객체 기반 시스템의 개발이 가능하다.

∴전제조건= 분산 객체

전제조건?

즉, 분산 객체 기반 시스템이 필요한가를 먼저 고려

YES

NO

EJB 추천

EJB 비추천

slide7
분산 객체 기반 시스템이란?
  • 객체가 클라이언트와 프로세스를 달리하여 존재하는 시스템
      • 객체 서버와 클라이언트는 네트웍으로 연결

객체서버

Network

객체

객체

객체

클라이언트

클라이언트

Network

Network

객체서버

객체

객체

객체

slide8
참고 : 분산 객체 기반 시스템의 잇점

비즈니스 로직의 재활용성이 높다

다양한 아키텍쳐로의 확장이 쉽다

클라이언트간 공유자원 관리를 효과적으로 할 수있다

개발자간 역할분리가 분명하다

보안성이 높다

등등…

slide9
만일, 분산 객체 환경이 필요없다면?

1. 안정성

  • 대량, 또는 복잡한 트랜잭션 처리시 무결성을 보장해준다더라.

JDBC, JTA

  • 자원관리 기능에 의해 사용자 급증시 응답속도의 현저한 저하 및 서버의 다운을 방지해준다더라.

Web Application 의 경우 WAS가 해당 역할 수행

2. 개발,유지,보수의 편의성

  • 개발을 도와줄 최신의 기술과 도구들을 제공해준다더라.

필요한 기술이나 도구들만 별도 구매

  • 선언적 프로그래밍, 최적화된 프레임웍, 다양한 라이브러리 제공

∴개발자는 단지 비즈니스 로직에만 신경쓰면 된다더라.

적절한 프레임웍, 라이브러리만 별도 구매

  • 컴포넌트 기반이기 때문에 재사용성이 높다더라.

요즘은 대부분 엔진이 나름대로 컴포넌트 기반임

slide10
EJB의 도입 여부 결정

외부 아키텍팅

내부 아키텍팅

slide11
계층간 물리적 분리

비즈니스로직

데이터

UI

DB

WAS

EJB App

DataSource

Client App

독립 자바 클라이언트, 코바 클라이언트, Servlet/JSP …

slide12

DB

EJB App

DataSource

Client App

계층간 연결

RMI-IIOP

SOAP

JMS

JDBC

SOAP(Simple Object Access Protocol) : EJB 2.1 부터 지원 예정

slide13
아키텍쳐의 확장

DB

RMI-IIOP

SOAP

JMS

JDBC

RMI-IIOP

SOAP

JMS

RMI-IIOP (CORBA)

Custom Protocol

Some Others

Legacies

Other EJB

slide14
클러스터링

부하분산 + 장애극복

DB

RMI-IIOP

SOAP

JMS

JDBC

H/W or S/W (Vendor specific)

slide15
EJB의 도입 여부 결정

외부 아키텍팅

내부 아키텍팅

slide16
여섯 가지 컴포넌트
  • 엔터티 빈 (Entity Bean)
    • CMP (Container Managed Persistence) 엔터티 빈
    • BMP (Bean Managed Persistence) 엔터티 빈
  • 세션 빈 (Session Bean)
    • 상태유지 (Stateful) 세션 빈
    • 무상태 (Stateless) 세션 빈
  • 메시지 드리븐 빈 (Message Driven Bean)
  • 타이머 빈 (Timer Bean) –E J B 2.1
slide17
EJB 가 추천하는 아키텍쳐는…

RMI-IIOP

JAX-RPC

세션빈

Local Reference

엔터티빈

DB

JDBC/JTA/JTS

Local Reference

JMS

메시지빈

타이머 빈

slide18
그러나 실제로 많이 쓰이는 바는…

세션빈

JDBC/JTA

RMI-IIOP

엔터티빈

DB

JDBC/JTA/JTS

메시지빈

JMS

JDBC/JTA

타이머 빈

slide19
왜, 권고안을 따르지 않는가?

1. 수행 성능 및 자원 소모량

세션빈

세션빈

JDBC/JTA

Local Reference

JDBC/JTA

DB

Local Reference

메시지빈

엔터티빈

DB

JDBC…

타이머빈

JDBC/JTA

타이머빈

Local Reference

메시지빈

slide20
그리고?

2. 개발 편의성

복잡한 SQL 질의문을 대체하기에는, CMP 빈은 아직 한계가 있다

BMP 빈을 쓴다면, 어차피 SQL문을 사용해야 한다

slide21
그러나, 트랜잭션 관리가 편리하지 않나?

JDBC 나 JTA를 이용한 트랜잭션 관리가 그렇게 복잡하거나, 불편한가?

NO!!

Connection con = getConnection() ;

try

{

con.begin() ;

……

con.commit() ;

}catch(Exception e)

{

con.rollback() ;

……

}

UserTransaction tx = getUserTransaction();

try

{

tx.begin() ;

……

tx.commit() ;

}catch(Exception e)

{

tx.rollback() ;

……

}

2Phase Commit 이나, 이종 리소스 간의 트랜잭션 처리도 가능

slide22
그럼, 엔터티 빈이 왜 필요한가?

RDB

OODB

XML DB

Files

Others

엔터티 빈

데이터 소스의 형태에 상관없이 동일한 인터페이스로 이들을 이용하기 위해서

slide23
그렇다면?

데이터 소스가 RDB이며, 다른 형태로 변경될 우려가 없고.

질의문이 매우 복잡하다면.

권장

세션빈

DB

JDBC/JTA

메시지빈

slide24
그러면 세션 빈의 코드가 너무 복잡해지지 않나?

세션빈

자바 클래스

DB

JDBC/JTA

메시지빈

그러면, 엔터티 빈 이용시와 다를 바가 없지않나?

엔터티 빈만 이러한가? NO!! 모든 엔터프라이즈 빈이 이러하다.

slide25
왜 엔터프라이즈 빈은 그렇게 무겁고, 느린가?

빈 클래스, 홈/리모트/로컬 인터페이스 구현 클래스들, Helper/Wrapper 클래스들

  • 1개의 엔터프라이즈 빈 = 여러 자바 클래스들
      • 한꺼번에 매우 많은 객체가 생성
      • 한 번 메소드 호출에 매우 많은 코드 스텝 실행
      • 컨테이너의 감시활동
slide26
따라서, 꼭 엔터프라이즈 빈이 필요한 게 아니라면….

일반 자바 클래스를 사용하라.

예를들어…)

세션 빈

세션 빈

DB

로컬 인터페이스

RMI-IIOP

권장

세션 빈

DB

자바 클래스

RMI-IIOP

slide27
커다란 빈 한 개 .vs. 작은 빈 여러 개
  • 로직을 어떤 규모로 분류할 지는 개발 편의성, 확장성 측면에서 고려되어야 한다.
  • 다만, 자원소모량의 측면에서…
    • 커다른 빈 한 개 < 작은 빈 여러 개 그렇게 차이가 크지는 않다.
slide28
상태유지 세션 빈 .vs. 무상태 세션 빈
  • 상태(대화상태) = 각 클라이언트에 종속적인 변수의 값
    • 해당 클라이언트가 빈 사용을 끝낼 때까지 유지되어야 함
    • 해당 클라이언트의 요청에 의해서만 변경 가능
  • 상태유지 세션 빈
    • 각 클라이언트의 상태유지가 필요할 때
  • 무상태 세션 빈
    • 각 클라이언트의 상태유지가 필요 없을 때
    • 한 클라이언트의 상태가 다른 클라이언트에 의해 사용되도 상관없을 때

상대적으로, 보다 권장됨 ( 상태유지 세션 빈 대체시, 대화 상태는 DB, Hashtable , WAS 세션 등에 보관)

bmp vs cmp
BMP 엔터티 빈 .vs. CMP 엔터티 빈
  • 영속성(Persistence) = 영구기억장소에 데이터를 저장하는 행위
  • BMP
    • 빈 클래스 내에 데이터 입/출력 관련 코드를 개발자가 삽입
      • BMP 코드 자동 생성기도 있음
  • CMP
    • 영속성에 관련된 모든 행위를 컨테이너가 담당
    • 개발자가 해 줘야 할 일 = EJB-QL을 지정하는 정도

항상 그렇지는 않다.(개발자의 수준에 따른 것)

slide30
클러스터링시 주의할 점
  • 컴포넌트 수준에서의 클러스터링이 가능한지 확인
    • 가능하다면, 어떤 컴포넌트들이 클러스터링 가능한 지 확인
    • 부하분산, 장애극복이 모두 가능한 지 확인
      • 둘 중의 하나 또는 둘 모두가 불가능한 컴포넌트들이 있을 수도 있다.

벤더에 종속적

slide31
맺으며 드리고 싶은 말은…
  • 얽매이지 마라
    • 그러나, 그러기 위해선 원리를 알아야 한다.