티스토리 뷰

작년(2017 4분기) 나의 최종목표는 전체중 극히 일부분에 지나지 않은 레거시 코드를 개선하는 것이었다. 아주 작은 부분이었지만 개발자 인생에서 처음으로 레거시를 마음껏 개선할 수 있는 기회이기도 했다. 물론 레거시의 괴물(?) 같은 모습을 모르는 것은 아니었지만 도전하고 싶었고 DDD(Domain Driven Design)를 사용해보고 싶은 욕심도 있었다.
이미 DDD Start 라는 책을 읽었던 터라 조금의 희망을 가지고 있었고 분기시작 전 추석동안 그 책을 한번 더 읽었다. 같이 개발을 해야할 동료들에게도 읽기를 권하고 규칙들을 정한 뒤 개발을 시작했다.

읽은 책은 기본서적이라 도메인을 세부적으로 적용해 보기에는 힘들었지만 이런 부분까지 검토하면서 진행하기에는 레거시의 너무 많은 세월(신기한 분기문과 반복문들... 이것들은 왜 생겼는지는 알수 없지만 없으면 재앙이 일어난다)을 하나하나 주워담기 바빴고 레거시 코드가 새로운 구조에서 동일하게 작동하게 하는데 집중해야 했다. 

가장 먼저 Domain 분리와 Entity 정의로 시작을 했다. 이 당시만 하더라도 두 개념에 대한 범위를 정하는 지식이 부족했고 Domain 은 관련있는 부류, Entity 는 DB Table에서 하나의 Row 정도로 정의했다. 그리고 DDD 에서 말하는 4개의 layer (ui, application, domain, infrastructure) 로 패키지를 구성하고 기타 세부적인 룰을 정의해 가며 개발을 진행했다.

구조를 완전히 변경해서 개선을 했지만 기존 레거시와의 접점을 무시할 수는 없었고 이를 위해 데이터를 변환해 가며 부분적으로 레거시를 호출하도록 개발했다. 깔끔하게 개선되지 않는 소스를 보며 이렇게 가는 것이 맞는 가를 수 없이 고민했지만 한편으로는 리팩토링을 하는 것은 레거시와 공존하며 개선부분을 점점 넓혀가는 방식이 맞다는 생각도 했다.


공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함