티스토리 뷰

현재 운영중인 사이트에서 운영장비에 Hot Deploy 를 가능케 해달라는 어이없는 요청을 받고, 적용불가라는 의견을 제출하기 위해 정리하기 위해 스프링노트에 올렸던 글로 블로그로 옮겨왔음.

Hot Deploy 의 장점
1. 서버의 재기동 없이 신속한 적용이 가능하므로 배치에서 테스트까지 기간을 단축시킬 수 있음
2. 어플리케이션 오류로 인한 장애발생시 단 시간내에 조치가 가능함

Hot Deploy 의 단점
1. Hot deploy 라는 개념은 개발 편의성을 위해 Vendor에서 제공하는 것이지 J2EE spec에 명시되지 않았으므로 Vendor 마다 동작방식이 다를 수 있고 그에 대한 side-effect 를 예상하기 어렵다.

J2EE Server 에서 Hot Deploy 시의 영향에 관한 내용
A. servlet-engine 에서의 문제
(1) class reloading 옵션을 제공하는 서블릿 엔진의 경우 해당 클래스에 접근할 때마다 image 의 버전체크를 수행하기 때문에 운영환경에서의 성능저하 현상이 발생할 수 있다.
(2) 순서대로 기존 image 를 unloading 하고 새로운 image를 loading 하는 방식이 아니기 때문에 불필요한 메모리 영역(Permanent Area)을 점유하게 되며 이러한 작업이 반복될 경우 발생하지 않아도 될 Permanent Area의 Unloading 을 위한 Full GC 발생으로 성능저하 현상이 발생할 수 있다.

B. ejb-engine 에서의 문제
(1) 상당히 긴 시간을 소비하는 여러 트랜잭션을 순차적으로 수행중일 경우, hot deploy 에 의한 그 안전성을 보장할 수 없다.
(2) 여러개의 ejb 컨테이너를 사용할 경우 동시에 여러 ejb가 redeploy 될 경우 시스템 리소스(CPU, I/O)를 순간적으로 많이 사용할 가능성이 높으며 따라서 성능저하 및 정상적인 서비스에 어려움을 겪을 수 있다.
(3) 보통 undeploy, deploy 과정을 진행하는데, Hot Deploy 시 순간적으로 undeploy 된 모듈을 호출할 경우 NullPointerException 발생 가능.

Hot Deploy 에도 전혀 문제가 없다고 밝혀진 J2EE 서버
JVM의 동작원리로 예상컨데 이 글을 작성하는 시점인 2007.04.05. 현재까지는 현존하는 거의 모든 WAS 가 다 문제가 있다고 판단됨

Hot Deploy 시에 문제가 발생한 J2EE 서버
1. Jeus 4.2.2.x & 4.2.3.x
(1) 5.x 버전이나 위에 적지 않은 버전의 경우 확인되지 않음
(2) 문제점은 servlet file의 지속적인 reloading 시 Permanent Area 가 누적되는 현상을 경험했으며, 사용량과 hot deploy 횟수에 비례해서 증가
(3) Premanent Full GC가 발생하더라도 깨끗하게 clear 되지 않는 현상 발견
(4) Struts 초기 버전에서 이런 현상이 bug 로 보고되었으나 현재는 수정된 상황으로 servlet engine에서 발생하는 문제로 추정됨.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함