작년 이직 후 얼마 지나지 않아 나에게 재미있는 프로젝트가 주어졌다. 고해상도의 이미지를 합성해야하는 것으로 합성하는 윈도우 프로그램은 다른 팀에서 제공해 주며 나는 요청을 받아 합성 프로그램으로 합성한 뒤 이미지를 반환해야 하는 것이었다.이전까지 서버에 여러 VM을 올리고 VM하나 마다 합성 프로그램 하나를 기동하는 방식을 사용하고 있었다. 나는 VM 에 들어가는 자원이 너무 아까웠기 때문에 VM을 사용하지않는 방법을 고민했다. VM을 사용했던 이유는 각 합성프로그램은 하나의 리소스 폴더만을 사용할 수 있었기 때문이었다. 이를 해결하고자 자바의 각 쓰레드가 윈도우 프로그램을 실행할 때 쓰레드이름의 폴더를 생성해서 프로그램 파일을 복사해온 뒤 실행하도록 했다. 이렇게 되면 복사된 exe 로 실행된 프로그..
결제 부분 개선 후 세달이 흘렀다. 지금와서 다시 후기를 남기는 이유는 개선직후에는 알기 힘든 장단점들이 시간이 지나면서 나타나기 때문이다. 에릭에반스의 도메인 주도 설계책을 개선이 끝난 후에 다 읽기는 했지만 객체지향만큼 아니면 그 이상으로 많은 경험이 필요한 개념임을 깨달았다. 내가했던 코드를 도메인별로 분리하고 레이어에 맞게 패키지를 정하고 각 레이어가 데이터를 어떻게 주고 받으며 Entity와 ValueObject를 정의했던것은 극히 일부분에 지나지 않았다. (책에서는 도메인을 특정분야의 전문적인 영역으로 생각하며 개발자는 도메인 전문가와 언어를 정의하고 컨텍스트를 분리해나가고 다른 영역의 컨텍스트를 어떻게 사용해야 하는지 등등 을 끈임없게 탐구하도록 도와준다.) 내가 적용한것이 잘된 것인지 잘못..
진행이 중반 이후로 넘어갈 때 기존 코드 중 정말 말도 안되는 부분을 수정하면서 불안함이 몰려오기 시작했다. 처음 프로젝트를 시작했을 때는 머리속에 단계별 목표가 명확했지만 어느순간 목표가 보이지 않았다. 내가 리더였지만 같이 하던 동료에게 우리가 과연 이번 분기에 해낼 수 있을 까를 물어보기도 하고 다음 날 다시 한번 레거시 소스를 쳬계적으로 분석하며 차근차근 진행해 갔다 (우리가 진행했던 개선 부분이 결제관련 부분이어서 상당한 부담감을 갖고 있었다.)1차적으로 사내IP 로만 새로운 결제를 사용할 수 있도록 적용하여 가오픈을 진행했다. 여기서도 몇 번의 이슈가 발생했고 오픈 후에도 몇번 이슈가 발생했다. 나중에 든 생각이 운영 데이터를 새로 개발한 부분으로 계속해서 흘려보내는 방식으로 한달정도 모니터를..
작년(2017 4분기) 나의 최종목표는 전체중 극히 일부분에 지나지 않은 레거시 코드를 개선하는 것이었다. 아주 작은 부분이었지만 개발자 인생에서 처음으로 레거시를 마음껏 개선할 수 있는 기회이기도 했다. 물론 레거시의 괴물(?) 같은 모습을 모르는 것은 아니었지만 도전하고 싶었고 DDD(Domain Driven Design)를 사용해보고 싶은 욕심도 있었다. 이미 DDD Start 라는 책을 읽었던 터라 조금의 희망을 가지고 있었고 분기시작 전 추석동안 그 책을 한번 더 읽었다. 같이 개발을 해야할 동료들에게도 읽기를 권하고 규칙들을 정한 뒤 개발을 시작했다.읽은 책은 기본서적이라 도메인을 세부적으로 적용해 보기에는 힘들었지만 이런 부분까지 검토하면서 진행하기에는 레거시의 너무 많은 세월(신기한 분기문..