1 / 51

비즈니스 티어에서 디자인 고려사항과 위험 사례

비즈니스 티어에서 디자인 고려사항과 위험 사례. 방수상. 학습전략 , 목표. 현실세계의 비즈니스를 통해 J2EE 환경의 비즈니스를 편하고 친근감있게 접근해 보자 . 앞으로 배워나갈 Business Tier 가 어떤것들이 있는지 알아보자 . 이것을 통해 얻을 수 있는것은 무엇인지 토론해보자. Business?. 사무 , 업무 , 일 , 집무 , 영업 직업 , 가업. 우리 제품 좀 사주세요. 예방주사를 맞는경우. 한번 골라봐 ~. 너무 많이 샀다ㅡㅡ ; 계산은 …. J2EE. J. ava.

igor-barber
Download Presentation

비즈니스 티어에서 디자인 고려사항과 위험 사례

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. 비즈니스 티어에서 디자인 고려사항과 위험 사례 방수상

  2. 학습전략,목표 • 현실세계의 비즈니스를 통해 J2EE 환경의 비즈니스를 편하고 친근감있게 접근해 보자. • 앞으로 배워나갈 Business Tier가 어떤것들이 있는지 알아보자. • 이것을 통해 얻을 수 있는것은 무엇인지 토론해보자.

  3. Business? • 사무, 업무, 일, 집무, 영업 • 직업, 가업

  4. 우리 제품 좀 사주세요.

  5. 예방주사를 맞는경우

  6. 한번 골라봐~

  7. 너무 많이 샀다ㅡㅡ; 계산은…

  8. J2EE J ava 2 PlatForm E nterprise E dition

  9. J2EE Architecture http://snippetstore.sourceforge.net/en-US/SnippetStore1.htm

  10. J2EE Architecture

  11. 비즈니스 티어에서 디자인 고려사항 • EJB. • 세션 빈 • 엔티티 빈

  12. 세션 빈 사용하기 Transfer Object Session Facade DATABASE

  13. 세션 빈사용하기 SessionBean CLIENT SessionBean

  14. Business Object Entity Bean or Session Bean Application Service

  15. SessionBean vs EntityBean 비즈니스관리 데이타베이스관리 비영속성 영속성 시간제한 장시간제공 하나의클라이언트 다중사용자 stateless, stateful CMP, BMP Transaction 인식

  16. Stateless vs Stateful 상태비유지 상태유지 대화상태 비저장 대화상태유지 세션 빈 공유 세션 빈 공유불가능 비대화식 프로세스 대화식 프로세스

  17. 비즈니스 티어에 상태 저장 HttpSession에 상태저장하기 JSP/ 서블릿 엔터프라이즈 빈 데이터베이스 클라이언트 상태 클라이언트 티어 프레젠테이션 티어 비즈니스 티어 리소스 티어

  18. 비즈니스 티어에 상태 저장 세션 빈에 상태저장하기 JSP/ 서블릿 엔터프라이즈 빈 데이터베이스 클라이언트 클라이언트 상태 클라이언트 티어 프레젠테이션 티어 비즈니스 티어 리소스 티어

  19. 엔티티빈 • 분산(distributed) • 공유(shared) • 트랜잭션(transactional) • 영구(persistent)

  20. 엔티티빈 기본키 • 고유한 기본키에 의해 식별 • findByPrimaryKey 직접구현

  21. 엔티티빈에 비즈니스 로직 두기 • 엔티티빈에는 비즈니스 로직을 포함해서는 안된다고 오해하고 있다. • 엔티티빈는 객체뷰제공뿐 아니라 다중사용자를 위한 트랜잭션 처리역할도 수행할 수 있다.

  22. 엔티티빈을 이용한 출금(비즈니스로직)처리

  23. 엔티티빈 이용시 유의사항 • 비즈니스 로직 안에 엔티티빈 상호 관계에 관한 로직이 들어가는가? • 엔티티빈이 사용자와 상호작용하는 워크플로를 관리하는 역할을 맡고 있는가? • 해당 엔티티빈이 다른 비즈니스 컴포넌트에 포함된 역할도 맡고 있는가?

  24. 비즈니스 티어와 통합 티어에서 위험사례

  25. 1.객체 모델을 직접 엔티티빈 모델로 매핑하는 사례 문제 클래스 와 엔티티빈을 일대일로 변환. 해법 큰 단위 엔티티빈 설계 리팩토링 : 엔티티빈 상호통신 줄이기 패턴 : Composite Entity 패턴

  26. 2.관계 모델을 직접 엔티티빈 모델로 매핑하는 사례 문제 테이블의 각 행(row)을 엔티티빈 하나로 설계하는 경우. 해법 EJB가 아닌 객체지향접근방식 리팩토링 : 엔티티빈 상호통신 줄이기, 비즈니스 로직을 세션 빈으로 옮기기 패턴 : Composite Entity 패턴

  27. 3. 각 유스케이스마다 세션 빈 하나를 매핑하는 사례 문제 한 가지 유형의 상호작용에 반응하기 위해 작은단위 컨트로러들을 많이 만들경우 많은 세션 빈이 필요하며 애플리케이션이 매우 복잡해진다.. 해법 관련이 있는 상호작용들을 묶어 하나의 빈에 통합 리팩토링 : 세션 빈 병합하기 패턴 : Session Facade 패턴

  28. 4.모든 엔터프라이즈 빈 속성을 getter/setter 메소드를 사용해서 노출하는 사례 문제 객체 속성 정보를 얻기 위하여 작은 단위 원격호출이 빈번함. 해법 값 객체를 사용하여 전송 패턴 : Transfer Object 패턴

  29. 5.클라이언트에 서비스 검색(lookup) 코드를 둔는 사례 문제 클라이언트에 JNDI lookup 코드를 넣으면 서비스 lookup 코드 수정시 모든 클라이언트 수정. 또한 lookup 코드에 종속됨. 해법 Servie Locator 패턴을 사용하여 캡슐화 패턴 : Service Locator, Business Delegate 패턴

  30. Business Delegate 사용 EJB Session Bean Client Order order = lookup(“ejb/.../orderEJB); order.getMyOrderList(); OrderDelegate order = new OrderDelegate(); order.getMyOrderList(); Business Delegate init(){ this.order = (OrderHome)ServiceLocator.getEjbLocalHome........; } getMyOrderList(){ order.getMyOrderList(); }

  31. 6.읽기 전용 객체로 엔티티빈을 사용하는 사례 문제 데이터베이스처럼 영구 저장소에 불필요한 업데이트 트랜잭션을 발생. 해법 Data Access Object 패턴을 사용하여 데이터 소스로 접근하는 로직을 캡슐화 패턴 : Data Access Object, Session Façade, Value List Handler, Transfer Object Accembler 패턴

  32. 엔티티빈사용하기 세션 빈사용하기 Transfer Object Session Facade DataBase

  33. 7.작은 단위 객체로 엔티티빈을 사용하는 사례 문제 작은단위객체를 표현하기 위해 원격 엔티티빈을 사용하는 경우, 전체네트워크통신과 컨테이너에 과부하를 일으킨다. 해법 큰단위 엔티티빈과 세션 빈을 설계. 패턴 : Composite Entity, Session Façade 패턴 리팩토링 : 엔티티빈 상호 통신줄이기, 비즈니스 로직을 세션 빈으로 옮기기, 엔티티빈에 비즈니스 로직 두기, 세션 빈 병합하기

  34. 8. 종속 객체를 포함한 엔티티 빈 전체를 저장하는 사례 문제 하나의 엔티티 빈 안에 종속 객체들이 트리 구조를 이루고 있는 경우, 엔티티 빈을 로드할 때 종속 객체를 포함한 전체 트리를 로드하고 저장하기 때문에 성능이 저하된다. 해법 영구 저장소에 저장한 이후에 변경 여부를 체크하고 변경이 있는 경우에만 종속 객체를 저장. 패턴 : Composite Entity 패턴과 Store Optimization 전략, Lazy Loading 전략

  35. 9.EJB 관련 예외가 EJB가 아닌 클라이언트에 노출되는 사례 문제 애플리케이션개발자도 비즈니스 티어 컴포넌트가 던지는 예외의 세부 구현이 어떻게 이루어져 있는지 알아야 한다. 해법 비즈니스 대리자가 모든 서비스 관련 예외를 중간에서 가로채어 애플리케이션 예외로 바꾸어 던짐. 패턴 : Business Deleagte 패턴 리팩토링 : Business Deleagte 도입

  36. 10.큰 결과 집합을 반환하기 위해 엔티티 빈 파인더 메소드를 사용하는 사례 문제 대량의데이터를 검색해서 가져와야 할 경우 EJB 파인더 메소드(원격참조컬렉션 리턴)를 사용하게 되면 클라이언트는 원격 참조 메소드를 호출해야 한다. 해법 원격 호출 대신에 세션 빈과 DAO 를 사용해 Transfer Object 객체를 얻어오는 쿼리를 구현. 패턴 : Value List handler, Data Access Object 패턴

  37. 11.클라이언트가 비즈니스 컴포넌트로부터 데이터를 모으는 사례 문제 데이터 모델을 구현한 비즈니스 컴포넌트에서 필요한 데이터 모델을 가져오기 위해서 다양한 비즈니스 컴포넌트로부터 데이터를 찾고 상호작용하고 추출해야 한다. 이때 비즈니스 티어를 수 차례 호출해야 하므로 네트워크에 과부하를 일으킬 수 있다. 해법 모델을 생성하는 작업을 클라이언트에서 분리하고 비즈니스 컴포넌트로 구현. 패턴 : Transfer Object Assembler 패턴

  38. 12.엔터프라이즈 빈에서 오랜 시간이 걸리는 트랜잭션을 처리하는 사례 문제 엔터프라이즈 빈 메소드가 클라이언트 요청을 처리하는 데 상당히 많은 시간이 걸린다거나 처리가 진행되는 동안 메소드가 블로킹되면, 이로 인해 빈이 사용하는 메모리와 스레드와 같은 컨테이너 리소스 역시 블로킹되는 결과를 가져옴. 해법 시간이 오래 걸리는 트랜잭션을 구현하려면 JMS API를 제공하는 MOM 을 사용하여 비동기식 처리. 패턴 : Service Activator 패턴

  39. 13.상태비유지 세션 빈이 매 호출마다 대화 상태를 재구성하는 사례 문제 세션 빈이 대화상태를 유지해야 하는 경우에도 상태비유지 세션 빈으로 설계할 경우 메소드를 호출할 때마다 대화상태를 재구성(DB Access)해야 한다. 해법 상태비유지 세션 빈을 선택하기 전에 어떤 형태로 상호작용이 진행되는지 그 모델을 먼저 분석한다. 패턴 : Transfer Object Assembler 패턴

  40. J2EE 환경에서 비즈니스 티어를 구현하기 위해 많은 사항들을 고려해야 하며, 적절한 패턴을 사용해야 한다.

  41. J2EE 패턴과 병행 학습 • EJB 3.0 • Spring 2.5 • 그 밖에…

More Related