'Tomcat'에 해당되는 글 2건

  1. 2011/09/22 JSP유지보수 자동화 시스템 구축
  2. 2009/05/21 spring framework 3.0 (2)

오랜만에 글을 쓰는 것 같다. 최근 회사에서는 유지보수 하던 업무가 인수인계중에 있어 업무를 넘겨주다 보니 기존의 단순한 유지보수 시스템에 문제가 생긴다 생각하여 유지보수 시스템에 대해 생각하고, 이에 대하여 시스템을 구축하고 있다.

나는 회사에서 JSP로 만들어진 사이트를 유지보수 한다. 프레임 워크는 오래 전 회사에서 만든 것인데, 나름대로 폴더 구조만 잘 맞춰주면 로그도 잘 남고, DB 풀이나 객체 재사용에 대한 대비, 기본적인 JSP 내에서 사용해야 할 예를들어 자동 문자열 콤마라던가 기타 편리한 기능들은 잘 만들어져 있다.

내가 속한 회사는 사실 웹보다는 Active X 와 TR-transaction을 통한 금융 거래를 주로 하던 업체라 웹에 대해서는 단순히 viewer의 기능만 할 뿐이라 크게 신경쓰지 않았다. 허나, 최근들어 웹을 통한 거래가 많아지자 웹, 특히 WAS단과 DB에 대한 관심도가 높아져서 올 초 웹 전담 유지운영팀이 생기게 되었다.

기존에 웹 개발자들은 소수에 불과하였고, 서로 다른 팀에 있던 사람들이 모이다 보니 사실 유지보수 하는 사이트들도 준구난방, 하지만 사실 원천은 위에서 언급한 프레임워크를 사용한 파생 상품이고, 구조 또한 동일하다. 하지만 사람들이 자기 일을 관리하기에도 벅차기 때문에 아무도 이 프레임워크에 대해 신경쓰지 않았다.

그래서 처음 내가 한 일은 원천 소스를 찾는 일이었다. 다행히도 jdk 1.5로 컴파일된 버전을 찾긴 하였는데, 알고 보니 또 우리가 유지보수 하는 소스는 jdk 1.4로 컴파일 되어 있다. 내참.. 당장 원천 클래스 파일을 수정할 일은 없으므로 원천 소스를 가지고 있는 자체로 만족하고, jdk 1.4버전으로 향후 downgrade하기로 생각하고 일단 패스.

그리고 초창기부터 형상관리가 전혀 되지 않아 백업도 제각기이고 그나마 테스트 서버가 있어 그곳에서 마구잡이로 우선 에디트로 소스 수정을 하고 리얼 서버에 반영한다. 하지만 혼자 작업할 때에는 이게 참 좋겠지만, 문제는 얼마 전 내가 받은 신입 두명이 차례로 받아 작업한 사이트에서 발생한 것이다. 거래량으로 따지면 일순위인데 이 사이트를 신입급 둘이 유지보수 하고 했으니, 다른건 몰라도 소스가 2천줄 이상 되는 것, 자바스크립트 내에 보안도 되지 않은 상황에서 중요한 정보가 노출되는 것, 소스 상에 DB화 되지 않은 데이터가 배열로 박혀 있는 것(-_-;;) 등 아주 심각한 상황이 크게 발생해 있었다.

물론 지금이야 내가 수정해 놓아서 다행이긴 하지만, 또 다시 나는 이 서비스를 다른 분에게 인수인계 해야 하는 시점이 왔고, 그렇게 바로 인수인계 한다면 또 같은 상황이 발생할 것이라는 판단 하에 형상관리 시스템을 구축하기로 했다. 뭐 단순히 SVN만 생각했었는데, 결론적으로는 온갖 삽질 끝에 SVN+HUDSON+ANT 라는 구조를 잡았다.


SVN을 통한 버전관리, HUDSON을 통한 리얼 서버의 WAS에 통합, 그리고 윈도우 배치와 Ant 스크립트를 통한 배포환경을 만들었다. 개발자는 로컬에 환경을 세팅하고 커밋하면 Hudson에서 변경된 파일을 받고 Ant를 통해 자동으로 WAS의 루트에 Different Task를 통해 변경된 파일만 올리게 된다. 이 과정에서 WAS의 루트 중 바뀌는 파일은 Copy Task 이전에 Ant의 Zip Task를 통해 자동 백업하게 된다.

[개발자 로컬 -> 테스트 서버 배포과정]
1. 개발자 Commit -> SVN 저장
2. SVN을 통해 Hudson에서 최신 소스파일 저장
3. WAS 의 Root 중 변경된 파일만 비교하여 백업(Ant의 Different Task 및 Zip Task 사용)
4. 최신 소스파일 -> WAS의 ROOT로 이동(Ant의 Copy Task 이용)

그럼 일단 테스트에서 정상 작동 여부를 확인할 수 있고,  정상 작동시 리얼에 배포 과정을 거치는데 이 역시 사용자의 윈도우 배치파일을 실행함에 따라 아래 절차를 자동으로 수행한다.

[테스트 서버 -> 리얼서버 배포 과정, 리얼 서버는 L4로 구분되어 2대로 정의.] 
1. 리얼 기존 파일 temp폴더로 내려받기. 만약 기존에 temp폴더에 내려받은 것이 있다면, 변경된(업로드할) 파일만 내려받기
2. temp폴더와 테스트 서버의 WAS Root를 비교하여 변경된(업로드할) 파일 자동 압축백업(Ant Zip Task)
3. 수정된 파일 -> temp 폴더로 이동(향후 1번 과정을 하면서 중복 다운로드를 하지 않기 위해)
4. 수정된 파일만 -> 리얼 업로드 (1,2번 서버)

약 3일간 고심해서 이렇게 세팅을 해 놓았는데 나름대로 만족하고 있다. 다만, 아직 리얼 이관을 실제로 해보지 못해서 좀 걱정이긴 하지만;; 확실히 자동화 작업은 많은 편의성이 있는가 하면 제대로 세팅해 놓지 않는다면 크나큰 문제가 발생할 것 같다. 그리고 그런 문제를 방지하기 위해서 메뉴얼 작업 역시 필수인 것 같다. 메뉴얼이 단순히 글로만 써놓은 그런 글이 아닌, 이미지를 통한 따라하기 방식으로 설명해 놓은 메뉴얼 말이다. 

말이 나온 김에 메뉴얼에 대해 얘기해 보자면, 단순히 유지보수 운영 메뉴얼 같은 것들이 정보성 글들만 쓰인 것이 많은데, 많은 유지보수 업무를 도맡아 하는 사람들은 대부분 신입이다. 그들을 위해 나름 경력이 있는 개발자들은 절대 실수할 염려가 없는 이미지를 통한 따라하기 식의 튜토리얼을 만들면, 그 정도의 상급자들의 배려가 있으면 더 좋지 않을까 하는 아쉬움이 든다.

나야 물론 팀 작업을 위해 이런 자동화를 구축하는 것도 있지만 사실 다 내 개발의 편의를 위해서이다. 솔직히 운영하다 보면 저런 과정에서 쓸때없이 발생하는 문제가 많이 생긴다. "최신 소스 동기화" 작업이 안되있으면 말이다. 급한 오류건에 대해서 보통 일반적으로 리얼에서 작업해서 처리하는 경향이 많은데, 그러다가 자칫 잘모해서 비정상적인 소스가 리얼로 올라가게 된다면? 그야말로 얼마나 큰 문제점이 초래되겠는가? 이는 사용자의 편의가 생명인 웹 서비스에서 사활이 걸린 문제이기도 하다.

여튼 내가 아무리 유지보수만 전담해서 한다 하더라도, 한번의 작업을 참여하더라도 항상 끝 마무리는 제대로 하도록 하는 것이 좋겠다. 뒷사람을 생각하는 배려. 그것이 없다면, 뒷사람들이 얼마나 욕을 할 지는 정말 상상하기도 힘들다. 나 역시도 전에 개발한 사람의 욕을 무지하게 해댔으니 말이다. 배려라는 것이 다른데 있는 것이 아닌, 나의 주위에 나와 함께 하는 사람들에 대한 배려가 진정한 배려라는 사실. 이번 기회에 깊히 깨닫는 것 같다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 메튜장

트랙백 주소 http://izect.kr/trackback/661 관련글 쓰기

댓글을 달아 주세요




회사에서 제가 자바를 사용하는 프로젝트로 투입된지 벌써 4주가 흘렀네요.
처음엔 진짜 이걸 내가 할수 있을까.. 라는 두려움이 앞섰지만, 신기술을 배운다는 마음에 몇번의 야근과 철야 끝에 이젠 어느정도 감도 잡고 정말 말단 직원이긴 하지만 제게 그 프로젝트 팀에서도 신뢰를 주고 있습니다.

스프링 프레임워크라.. 솔직히 제가 프로퍼티는 잘 설정할줄 몰라요.(기본적인 서비스 연결만..) 하지만, 디자인패턴이 나오고, 저도 그걸 조금 공부했고 그런 경험들을 통합해서 MVC 모델(아니, model2인가..)을 잘 설계해둔 것이 스프링 프레임워크가 아닌가.. (예전처럼 pool manager같은 건 신경쓸 필요도 없더군요;)

저희 사이트 개발은 이렇게 하더랍니다.


WAS : Resin 3.0.27
Coding Language :
  Velocity(후덜덜입니다. jsp랑 비교하면 너무 편합니다.. ㅜㅜ)
+ ibatis(sql과 xml을 통해 맵핑시키는.. 이것도 참 편하죠.)
+ Spring Framework 3.0
Database : Oracle 10g
DBMS : Toad For Oracle
Version Manager : CVS


뭐 아이핀이니 기타 잡다한 솔루션 라이브러리는 빼겠습니다..;

대충 보아하니 요즘 자바 웹 솔루션을 저렇게 개발하는 듯 합니다. 저야 물론 PL님께서 환경세팅을 다 해둔 eclipse와 각종 어플들은 통째로 압축해서 주셔서;; 완전 환경설정 부분은 그야말로 손도 안되고 시작하고 말았네요..

제가 어떤 사이트를 작업하는지는 밝히기 힘들지만..;(힌트) 초반에 제게 주어진 업무는
- 마이페이지 - 1:1 온라인 상담 내역(개별 list만)
- 마이페이지 - 프로젝트 문의 내역(write, process, list 까지)
이런 간단한 게시판 기능 정도와..
- 마이페이지 - 개인정보수정
이런 또한 중요한 부분이었습니다.

여튼, 사실 설정 부분은 제가 잘 몰랐지만 ibatis를 통해 xml과 쿼리를 맵핑 시키고, controller-service-dao 의 3단 구분으로 이루어진 스프링 프렘워크를 보며 와 참으로 편리하구나;; 정말로 그런 생각뿐이 들지 않더군요.. 왜 작년에 제가 jsp나 JSTL을 공부할 때만 해도 솔직히 느끼지 못한 것이거든요. model1과 model2를 배우면서, MVC모델이 원래 MFC를 공부할 때도 편리하다 느꼇지만, 실제로 웹 서비스를 위한 이런 스프링이 나오고(물론 좀 지났지만;) 이를 사용하다 보니.. 와 참 정말 편리하다는 말밖에 안나옵니다... ^^

 

단점은 아무래도 MVC모델이 웹 서비스 모델에 따라 직접 만든 프레임워크보다는 무겁겠지요. 다만, 스프링은 범용으로 사용하기 좋으며 생각보다 무거워 보이지도 않았습니다.. :)

 

그리고 레진 서버.. 생전 톰캣만 써오던 제게 올해부터 갑자기 WebLogic이니.. Resin이니 이런 WAS들이 들려오기 시작하니 솔직히 좀 난감하더랍니다....;

허나 초보들이 물론 이런 서버들을 구축하고 설정하는 기술이 있다면야 그건 최고의 루트이지만, 어디 쉽겠습니까.. 그러나 회사에선 사수가 서버 세팅해서 줍니다.. 급하지 않은 개발이야 서버 세팅부터 시켜보겠지만 말입니다. 스프링도 처음에 엄청 겁먹고 마구마구 공부했었는데(사실 이해도 잘 안갔어요.. ㅜㅜ) 결국 velocity코딩과 기존에 알고 있던 자바 코딩과 별반 다른게 없었지요.. mvc모델만 잘 알고 있다면야;; 하악하악~!

 

여튼 여러가지 의미로.. 앞으로 6월까지는 신규개발, 그리고 7월부터는 이 작업을 한 반년은 유지보수 해야 할 듯 싶은데 말입니다.

 

자바는 즐겁지만.. 온리 코더는 싫은데 말입니다.. 디자인을 접목시킨 프로그래밍, 그런거 어디서 안떨어 질까요.. ㅜㅜ ㅎㅎ

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 메튜장

트랙백 주소 http://izect.kr/trackback/303 관련글 쓰기

댓글을 달아 주세요

  1. Favicon of http://blog.jidolstar.com BlogIcon 지돌스타 2009/07/22 15:17  댓글주소  수정/삭제  댓글쓰기

    경험담이 솔솔 배어 있네요.
    여기 블로그 글이 넘 잼있었요 인간미도 보이고 ㅎㅎ

  2. Favicon of http://blog.jidolstar.com BlogIcon 지돌스타 2009/07/22 15:17  댓글주소  수정/삭제  댓글쓰기

    경험담이 솔솔 배어 있네요.
    여기 블로그 글이 넘 잼있었요 인간미도 보이고 ㅎㅎ

이전버튼 1 이전버튼



블로그 이미지
html5,모바일웹,웹앱,자기브랜드,시간관리 등을 다룹니다.
메튜장

Yesterday198
Today90
Total478,685

달력

 « |  » 2012.02
      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