티스토리 뷰

작년 이직 후 얼마 지나지 않아 나에게 재미있는 프로젝트가 주어졌다. 고해상도의 이미지를 합성해야하는 것으로 합성하는 윈도우 프로그램은 다른 팀에서 제공해 주며 나는 요청을 받아 합성 프로그램으로 합성한 뒤 이미지를 반환해야 하는 것이었다.

이전까지 서버에 여러 VM을 올리고 VM하나 마다 합성 프로그램 하나를 기동하는 방식을 사용하고 있었다. 나는 VM 에 들어가는 자원이 너무 아까웠기 때문에 VM을 사용하지않는 방법을 고민했다.
VM을 사용했던 이유는 각 합성프로그램은 하나의 리소스 폴더만을 사용할 수 있었기 때문이었다.
이를 해결하고자 자바의 각 쓰레드가 윈도우 프로그램을 실행할 때 쓰레드이름의 폴더를 생성해서 프로그램 파일을 복사해온 뒤 실행하도록 했다. 이렇게 되면 복사된 exe 로 실행된 프로그램이 자신이 있는 위치에 리소스 폴더를 만들어서 사용했고 서버당 6개정도만 올릴 수 있던것을 20개를 실행할 수 있게되었다.

그리고 카프카 라이브러리를 랩핑하여 모든 클래스를 json으로 주고 받을 수 있도록 하고 파일을 조각으로 나눠서 보낼 수 있도록 kafka lib 를 래핑하는 기능을 개발했다.(kafka 가 분산 파일큐라서 마음놓고 파일 전송을 시도해 보았다)

윈도우 서버 두 대에 주키퍼, 카프카, 합성프로그램을 실행시키는 톰캣을 이중화로 올렸다. 개발중에 이미지파일을 반환하지 않고 톰캣의 webapp 폴더에 저장하고 url을 반환하도록 요구사항이 변경되었지만 파일을 조각으로 보내도록 개발한것은 좋은경험이 되었다.
아직은 카프카를 사용하는 방법정도만 알고 분산환경을 구성하지는 못 했지만 활용도를 올리기위해서 앞으로 개선해 나가야 할것이다.
(윈도환경에서 카프카가 파일락으로 인해 안올라올때가 있다)


'IT > 개발리뷰' 카테고리의 다른 글

DDD를 활용한 Legacy 개선후기-3  (0) 2018.03.11
DDD 를 활용한 Legacy 개선 후기 - 2  (0) 2018.01.15
DDD 를 활용한 Legacy 개선 후기 - 1  (0) 2018.01.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함