1 / 31

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

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

braden
Download Presentation

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

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EJB 기반 시스템 도입과 아키텍팅을 위한 실용적 가이드와 원리 차의중 ㈜ 스펜오컴 Prof21@empal.com

  2. EJB의 도입 여부 결정 외부 아키텍팅 내부 아키텍팅 목 차

  3. EJB의 도입 여부 결정 외부 아키텍팅 내부 아키텍팅

  4. 1. 안정성 대량, 또는 복잡한 트랜잭션 처리시 무결성을 보장해준다더라. 자원관리 기능에 의해 사용자 급증시 응답속도의 현저한 저하 및 서버의 다운을 방지해준다더라. 2. 개발,유지,보수의 편의성 개발을 도와줄 최신의 기술과 도구들을 제공해준다더라. 선언적 프로그래밍, 최적화된 프레임웍, 다양한 라이브러리 제공 ∴개발자는 단지 비즈니스 로직에만 신경쓰면 된다더라. 컴포넌트 기반이기 때문에 재사용성이 높다더라. EJB의 도입을 고려중인 사람들의 일반적인 생각 그래서, 우리 시스템에는 EJB를 쓸 수 밖에 없다.

  5. 1. 안정성 대량, 또는 복잡한 트랜잭션 처리시 무결성을 보장해준다더라. 자원관리 기능에 의해 사용자 급증시 응답속도의 현저한 저하 및 서버의 다운을 방지해준다더라. 2. 개발,유지,보수의 편의성 개발을 도와줄 최신의 기술과 도구들을 제공해준다더라. 선언적 프로그래밍, 최적화된 프레임웍, 다양한 라이브러리 제공 ∴개발자는 단지 비즈니스 로직에만 신경쓰면 된다더라. 컴포넌트 기반이기 때문에 재사용성이 높다더라. 좋다. 그러…나! ! 가장 중요한 전제조건이 빠져있지는 않은가?

  6. EJB의 목적 분산 객체 기반 시스템의 설계,개발,배포,유지,보수,재사용을 쉽게하기 위한 것 EJB를 이용하면 … 짧은 시간, 적은 노력으로도 안정적인분산 객체 기반 시스템의 개발이 가능하다. ∴전제조건= 분산 객체 전제조건? 즉, 분산 객체 기반 시스템이 필요한가를 먼저 고려 YES NO EJB 추천 EJB 비추천

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

  8. 참고 : 분산 객체 기반 시스템의 잇점 비즈니스 로직의 재활용성이 높다 다양한 아키텍쳐로의 확장이 쉽다 클라이언트간 공유자원 관리를 효과적으로 할 수있다 개발자간 역할분리가 분명하다 보안성이 높다 등등…

  9. 만일, 분산 객체 환경이 필요없다면? 1. 안정성 • 대량, 또는 복잡한 트랜잭션 처리시 무결성을 보장해준다더라. JDBC, JTA • 자원관리 기능에 의해 사용자 급증시 응답속도의 현저한 저하 및 서버의 다운을 방지해준다더라. Web Application 의 경우 WAS가 해당 역할 수행 2. 개발,유지,보수의 편의성 • 개발을 도와줄 최신의 기술과 도구들을 제공해준다더라. 필요한 기술이나 도구들만 별도 구매 • 선언적 프로그래밍, 최적화된 프레임웍, 다양한 라이브러리 제공 ∴개발자는 단지 비즈니스 로직에만 신경쓰면 된다더라. 적절한 프레임웍, 라이브러리만 별도 구매 • 컴포넌트 기반이기 때문에 재사용성이 높다더라. 요즘은 대부분 엔진이 나름대로 컴포넌트 기반임

  10. EJB의 도입 여부 결정 외부 아키텍팅 내부 아키텍팅

  11. 계층간 물리적 분리 비즈니스로직 데이터 UI DB WAS EJB App DataSource Client App 독립 자바 클라이언트, 코바 클라이언트, Servlet/JSP …

  12. DB EJB App DataSource Client App 계층간 연결 RMI-IIOP SOAP JMS JDBC SOAP(Simple Object Access Protocol) : EJB 2.1 부터 지원 예정

  13. 아키텍쳐의 확장 DB RMI-IIOP SOAP JMS JDBC RMI-IIOP SOAP JMS RMI-IIOP (CORBA) Custom Protocol Some Others Legacies Other EJB

  14. 클러스터링 부하분산 + 장애극복 DB RMI-IIOP SOAP JMS JDBC H/W or S/W (Vendor specific)

  15. EJB의 도입 여부 결정 외부 아키텍팅 내부 아키텍팅

  16. 여섯 가지 컴포넌트 • 엔터티 빈 (Entity Bean) • CMP (Container Managed Persistence) 엔터티 빈 • BMP (Bean Managed Persistence) 엔터티 빈 • 세션 빈 (Session Bean) • 상태유지 (Stateful) 세션 빈 • 무상태 (Stateless) 세션 빈 • 메시지 드리븐 빈 (Message Driven Bean) • 타이머 빈 (Timer Bean) –E J B 2.1

  17. EJB 가 추천하는 아키텍쳐는… RMI-IIOP JAX-RPC 세션빈 Local Reference 엔터티빈 DB JDBC/JTA/JTS Local Reference JMS 메시지빈 타이머 빈

  18. 그러나 실제로 많이 쓰이는 바는… 세션빈 JDBC/JTA RMI-IIOP 엔터티빈 DB JDBC/JTA/JTS 메시지빈 JMS JDBC/JTA 타이머 빈

  19. 왜, 권고안을 따르지 않는가? 1. 수행 성능 및 자원 소모량 세션빈 세션빈 JDBC/JTA Local Reference JDBC/JTA DB Local Reference 메시지빈 엔터티빈 DB JDBC… 타이머빈 JDBC/JTA 타이머빈 Local Reference 메시지빈

  20. 그리고? 2. 개발 편의성 복잡한 SQL 질의문을 대체하기에는, CMP 빈은 아직 한계가 있다 BMP 빈을 쓴다면, 어차피 SQL문을 사용해야 한다

  21. 그러나, 트랜잭션 관리가 편리하지 않나? 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 이나, 이종 리소스 간의 트랜잭션 처리도 가능

  22. 그럼, 엔터티 빈이 왜 필요한가? RDB OODB XML DB Files Others 엔터티 빈 데이터 소스의 형태에 상관없이 동일한 인터페이스로 이들을 이용하기 위해서

  23. 그렇다면? 데이터 소스가 RDB이며, 다른 형태로 변경될 우려가 없고. 질의문이 매우 복잡하다면. 권장 세션빈 DB JDBC/JTA 메시지빈

  24. 그러면 세션 빈의 코드가 너무 복잡해지지 않나? 세션빈 자바 클래스 DB JDBC/JTA 메시지빈 그러면, 엔터티 빈 이용시와 다를 바가 없지않나? 엔터티 빈만 이러한가? NO!! 모든 엔터프라이즈 빈이 이러하다.

  25. 왜 엔터프라이즈 빈은 그렇게 무겁고, 느린가? 빈 클래스, 홈/리모트/로컬 인터페이스 구현 클래스들, Helper/Wrapper 클래스들 • 1개의 엔터프라이즈 빈 = 여러 자바 클래스들 • 한꺼번에 매우 많은 객체가 생성 • 한 번 메소드 호출에 매우 많은 코드 스텝 실행 • 컨테이너의 감시활동

  26. 따라서, 꼭 엔터프라이즈 빈이 필요한 게 아니라면…. 일반 자바 클래스를 사용하라. 예를들어…) 세션 빈 세션 빈 DB 로컬 인터페이스 RMI-IIOP 권장 세션 빈 DB 자바 클래스 RMI-IIOP

  27. 커다란 빈 한 개 .vs. 작은 빈 여러 개 • 로직을 어떤 규모로 분류할 지는 개발 편의성, 확장성 측면에서 고려되어야 한다. • 다만, 자원소모량의 측면에서… • 커다른 빈 한 개 < 작은 빈 여러 개 그렇게 차이가 크지는 않다.

  28. 상태유지 세션 빈 .vs. 무상태 세션 빈 • 상태(대화상태) = 각 클라이언트에 종속적인 변수의 값 • 해당 클라이언트가 빈 사용을 끝낼 때까지 유지되어야 함 • 해당 클라이언트의 요청에 의해서만 변경 가능 • 상태유지 세션 빈 • 각 클라이언트의 상태유지가 필요할 때 • 무상태 세션 빈 • 각 클라이언트의 상태유지가 필요 없을 때 • 한 클라이언트의 상태가 다른 클라이언트에 의해 사용되도 상관없을 때 상대적으로, 보다 권장됨 ( 상태유지 세션 빈 대체시, 대화 상태는 DB, Hashtable , WAS 세션 등에 보관)

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

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

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

More Related