180402-180408


입사 14주차

바빴던 플젝이 어느정도 마무리 단계에 돌입했다.

그래도 좀 사람 같은 코드를 짜기 위해 고민하다보니 업무 시간에 공부하는 양도 늘어났고, 리뷰를 두 번 받으면서 잘못된 점도 많이 캐치할 수 있었다. 야근때문에 개인 공부가 부족하지 않나라는 생각이 들었었지만.. 그 시간동안 실무 코딩하면서 얻게 되는 점도 만만치 않았다고 생각한다.

이번 주에 나를 가장 많이 속 썩인 것이 몇 가지 있는데,

  • Gradle
    • 하나의 프로젝트에 멀티 모듈을 구성하고 개발을 진행했는데 빌드 단계에서 설정이 의도한대로 먹히지 않았다.
    • Common 모듈이 먼저 컴파일 되고, 거기에 의존하는 메인 모듈이 컴파일 되어야하는 식인데 자꾸 메인 모듈 컴파일 단계에서 Common쪽 클래스를 못찾는다고 실패가 떠서 엄청 고생했다 ㅠㅠ 온갖 자료를 다 찾아보면서 설정을 건드려봤지만 실패..
    • 결국 공식 문서를 보고도 잘 이해가 안되어서 어떤 외국 사람이 올려놓은 github 샘플을 보고 그대로 따라해봤더니 정상적으로 빌드가 되었다. 솔직히 이 것 때문에 빌드 못하고 끙끙 거렸으면 모듈을 하나로 합치는 짓도 시도해보려고 했는데 성공해서 다행… 개인적으로 Maven은 비교적 쉽게 잘 쓸 수 있다고 생각하는데 비해 Gradle은 아직 어렵게 느껴진다. 버전마다 변경사항이 큰 편인지 국내 블로그에서 언급하는 기능이 지금은 동작하지 않거나 다른 이름으로 바뀐 것도 있고.. (예를 들면 bootRepackage)
  • Jackson / Gson… 그리고 Swagger (Springfox)
    • Spring Boot로 하는 플젝은 대부분 Gson을 쓰고 있는데, 컨트롤러 단에서 메시지 컨버터 만큼은 Jackson을 쓰는 상황이었다. DTO에 죄다 @SerializedName 쓰고 있었기 때문에 메시지 컨버터를 Gson으로 바꿔서 쓰고 싶었고, 하는 방법이 나와있어서 보고 적용해봤다.
    • 많은 삽질 끝에 Gson을 디폴트로 쓰는 것은 포기했고, 작업한 것을 롤백한 뒤에 어노테이션들을 @JsonProperty로 변경했다.
    • 처음엔 WebMvcConfig쪽에 문제가 생겨서 그쪽을 수정하고, 이후에는 Swagger에 문제가 생겨서 그쪽 관련한 어댑터를 붙이고.. 그러다보니 알게된 것은 Springfox Swagger 라이브러리가 여러모로 Jackson에 대한 의존성이 강하게 붙어있다는 것이었다. 결국 해결하기 어렵다고 판단한 문제가 있어서 Gson 사용은 서비스 단에서 Retrofit 쓸 때나 하도록 하고, 메시지 컨버터는 Jackson 쓰도록 처리했다.
    • 앞으로 해당 라이브러리가 좀 유연하게(?) 바뀔 수도 있고 아니면 내가 Gson 가지고 다 해먹을 수 있게 뜯어고치는 방법도 있을텐데, 너무 고생했기 때문에 한동안은 이거 관련해서는 쳐다보고 싶지 않다. ㅠㅠ

느낀 점

개인적으로 별로 좋지 않은 일이 생겼는데, 앞으로 잘 헤쳐나갈 수 있을지 걱정이다.

그것과는 별개로, 매달마다 조금씩 성장하고 있다는 것을 확실히 느끼고 있는 상태다. (실력면에서)

내가 알고 있는 사실? 혹은 알게된 사실에 대해 남에게 설명해주는 능력이 미흡하다는 걸 알았기 때문에 장기적으로 내다보고 꾸준히 보완해 나가야될 것 같다.