자바 성능 튜닝 이야기(이상민) - 인사이트 책을 읽고 공부한 내용입니다.
MVC 모델 ( Model, View, Controller)
- 모델, 뷰, 컨트롤러 역할을 하는 클래스를 각각 만들어서 개발하는 모델입니다.
- 뷰 : 사용자가 결과를 보거나 입력할 수 있는 화면입니다.
- 컨트롤러 : 뷰와 모델을 연결 시켜주며 뷰에서 받은 이벤트를 모델로 연결해 줍니다.
- 모델 : 뷰에서 입력된 내용을 저장, 관리, 수정하는 역할을 합니다.
모델1 구조
- JSP에서 자바 빈을 이용해 DB관련 작업을 수행 후 결과를 브라우저로 보내주는 방식입니다.
- 간단히 개발할 수 있는 장점을 가집니다.
- 프로세서 변경이 어렵고 뷰화면과 비즈니스 모델의 분업화가 어려워 코드 양이 많아집니다.
모델2 구조
- JSP를 이용하는 것이 아닌 서블릿을 이용해 요청합니다.
시스템의 성능을 끌어 올리기 위해서는 중복된 작업을 줄여야 합니다.
디자인 패턴 : 소프트웨어 작성 시 공통적으로 발생하는 문제에 대해 자주 사용하는 설계 방식을 체계화 시켜놓은 것
J2EE 패턴 종류
- Intercepting Filter : 요청 타입에 다라 다른 처리를 하기 위한 패턴
- Front Controller : 요청 전후에 처리하기 위한 컨트롤러를 지정하는 패턴
- View Helper : 프레젠테이션 로직과 상관없는 비즈니스 로직을 헬퍼로 지정하는 패턴
- Composite View : 최소 단위의 하위 컴포넌트를 분리하여 화면을 구성하는 패턴
- Service to Worker : Front Controller와 View Helper 사이에 디스패처를 두어 조합하는 패턴
- Dispatcher View : Front Controller와 View Helper로 디스패처 컴포넌트를 형성. 뷰 처리가 종료될 때까지 다른활동을 지연한다는 점이 Service to Worker 패턴과 다름
- Business Delegate : 비즈니스 서비스 접근을 캡슐화하는 패턴
- Service Locator : 서비스와 컴포넌트 검색을 쉽게 하는 패턴
- Session Facade : 비즈니스 티어 컴포넌트를 캡슐화 하고, 원격 클라이언트에서 접근할 수 있는 서비스를 제공하는 패턴
- Composite Entity : 로컬 엔티티 빈과 POJO를 이용하여 큰 단위의 엔티티 객체를 구현
- Transfer Object : 일명 Value Object 패턴이라고 많이 알려져 있음. 데이터를 전송하기 위한 객체에 대한 패턴
- Transfer Object Assembler : 하나의 Transfer Object로 모든 타입 데이터를 처리할 수 없으므로, 여러 Transfer Object를 조합하거나 변형한 객체를 생성하여 사용하는 패턴
- Value List Handler : 데이터 조회를 처리하고, 결과를 임시 저장하며, 결과 집합을 검색하여 필요한 항목을 선택하는 역할을 수행
- Data Access Object : 일명 DAO, DB에 접근을 전담하는 클래스를 추상화하고 캡슐화 함
- Service Activator : 비동기적 호출을 처리하기 위한 패턴
Transfer Object
- Object를 만들어 하나의 객체에 여러 타입의 값을 전달하는 일을 수행합니다.
- 성능상으로 public으로 사용해 getter()와 setter()를 만드는 것이 좋지만 캡슐화와 정보은닉을 위해 private으로 지정하고 getter()와 setter()를 이용합니다.
- Object를 작성할 때 getter()에서 null을 처리하도록 만들면 각 소스에서 null을 체크할 필요가 없습니다.
- toString()을 반드시 구현하는 것이 좋은데 구현 하지 않는다면 부모 클래스의 toString()이 수행되어져 알 수 없는 값을 리턴합니다.
- 서버에 객체 자체를 데이터로 전송하기 위해서 Serializable을 implements 해야합니다.
- Transfer Object 패턴을 사용하면 여러개의 결과 값을 하나에 담아 올 수 있어 여러번 요청 하는 일이 없어져 성능을 향상 시킬 수 있습니다.
Service Locator
- EJB Home 객체나 DB의 DataSource를 찾을 때 소요되는 응답속도를 감소시키기 위해서 사용됩니다.
- cache라는 Map객체에 DataSource를 보관하고 있다가 누군가 필요할 때 제공하고 만일 맵에 없을 경우 메모리에서 찾습니다.
'학습(구) > Java(구)' 카테고리의 다른 글
자바 성능 튜닝 - 문자열 처리 (0) | 2021.04.30 |
---|---|
자바 성능 튜닝 - 분석 툴 (0) | 2021.04.28 |
JavaFx (0) | 2021.04.12 |
IO 스트림과 제너릭타입 (0) | 2021.04.12 |
컬렉션과 컬렉션 스트림 (0) | 2021.04.05 |