이번주는 정말 행복한 행사들이 많았다. 내 소중한 가족과 여자친구의 생일 그리고 지인의 결혼식 덕에 한주가 정말 정신없이 빠르게 지나갔다. 이번 한주는 좀 더 부지런히 움직이고자 했는데, 생각만큼 그렇지 못한 것이 아쉽다.
Product Adapter 개발: DataAccess
Product Adapter 중 DataAccess 의 개발의 묙표 마감 기한은 사실 7월 둘째주까지였다. 그러나 생각지 못한 영속성 Entity 개발 간 발견한 문제점으로 인해 상당한 시간을 뺏긴채(?) 삽질과 함께 프로젝트 진행에 어려움을 겪었다. 결론적으로는 문제가 되는 부분(ProductImage) 를 잠시 주석처리하고, 프로젝트를 계속해서 진행했다.
Querydsl 의 사용
클린아키텍처(Ports and Adapter) 패턴을 사용하면서, 얻을 수 있는 이점을 나는 한번 검증하고 싶었다. 모든 의존성이 Domain을 향하는 것, 각 계층으로 분리되어, 계층을 독립적으로 확장하고 개발 할 수 있는 것을 해보고 싶었다. 기존 설계에서는 JPA Repository 만 사용하는 것이였지만, 다른 방법도 함께 사용해보고 싶었다. 그래서 Querydsl 을 추가하기로 결정했다.
나는 Querydsl 을 활용하여 원래 기존의 기획된 쿼리(카테고리별 상품 조회)를 JPA Repository에서 옮겨 작성 했다. 테스트와 개발을 진행하면서, 이것은 JPA를 사용하는 것이 좀 더 편리한 것이 아닌가? 하는 생각이 들었다.
사실 나는 Querydsl을 통해 동적쿼리를 작성하는 것을 하고 싶었던 것 같다. 그래서 해당 기능 개발을 위해 설계를 시작했다.
JPQL을 사용하는 방법도 있었으나, 띄어쓰기 하나라도 틀리면 오류가발생하는 것에서 선택되지 못했다.
이 쿼리(기능)을 개발한다는 것은 어디서부터 시작되고, 어디까지 개발을 이뤄져야하는가? 에 대한 생각을 하였다. 긴(?) 고민 끝에 나는 이 기능을 추가하는 것은 유스케이스의 추가로 판단하였고, 이는 Issue로 기록하여 정리하면 좋을 것으로 판단하였다. 그래서 나는 Issue를 이번 기회를 통해 작성하고, 해당 기능을 이전 회사에서 개발하던 것처럼, feature 브랜치를 따서 작업하면 재밌을 것 같다!
그리고 어서 빨리 PR을 지금 이 상태를 기점으로 내일 아침에 작성해야겠다^.^..
기존 책 독서 및 새로운 책 구매
기존에 읽으며, 공부하고있는 만들면서 배우는 클린아키텍처 를 거의 다 읽어가면서 정말 많고 다양한 내용을 배울수 있었고, 생각하지 못한 고민을 할 수 있었다. 뿐만아니라, 해당 내용 및 관련된 내용을 주제로 몇몇 지인들과 이야기를 해볼 수 있었는데 이 이야기들이 정말재밌었다.
DDD 와 클린아키텍처(Ports and Adapters)
많은 이야기들 중, 아키텍처에 대한 부분, 특히 설계에 대한 이야기가 기억에 많이 남는다. 클린 아키텍처(Ports and Adapters)만을 이야기하는 것은 아니었지만, 핵심 내용으로 본다면 결국 같은 목표(도메인 중심의 프로젝트 설계) 부분이었다.
이 부분은 DDD 를 어떻게 공부하느냐? 에서 파생된 것이었는데, 내가 생각하는 부분을 승원이에게 이야기를 할 수 있었다. 당시 나는, DDD 적인 설계와 일반적인 MVC 패턴으로 개발을 진행한다고 했을 때를 기준으로 이야기를 했었다.
결과적으로 이야기한다면, Model(영속성계층)에서 의존성을 Domain(도메인모델)으로 의존성을 영속성 인터페이스를 역전시키고(안했다면) 그리고 그 영속성 인터페이스를 구현한 구현체에서 외부 API 호출을 담당하게 설계할 것 같다고 이야기했다. 이후로 계속된 이야기를 이어갔지만, 단어의 컨텍스트 매핑이 텍스트로는 혼동이 와서 다음에 이야기를 나누기로했다.
나는 이번 대화를 통해 내가 해보고 싶은, 공부하고 싶은 내용을 좀 더 파악할수 있었다. 나는 DDD를 기반으로한 MSA를 만들어보고 싶다. 이 목표는 너무 추상적으로 이야기를 한것이다. 좀 더 구체적으로 이야기를 해본다면, 나는 DDD 를 기반으로 도메인(비즈니스) 중심의 프로젝트를 하고싶다. 그리고 이 프로젝트는 유지보수성, 확장성, 응답성, 유연성, 탄력성 이 보장된 프로젝트이여야 한다. 즉, 리액티브 프로그래밍을 하고싶다. 그리고 이를 위해 이벤트 기반의 아키텍처와 클린아키텍처가 공부하고싶고, 또 인프라적인 부분에 대한 공부를 하고 싶다.
이 목표는 지금 프로젝트에서 목표하는 것과 (거의) 같은 내용이다. 지금 프로젝트에서 경험하는 것이 원래의 계획이고 그럴것이다. 그런데 이번 대화를 하면서, 실제(혹은 학습을 위한 예시)를 미리 경험해보고 싶어졌다.(때가 되서 (혼자)고민하고 하기에는 너무 많은 시간이 소비될 것같다..) 그래서 책을 알아봤고 구매했다.
기존에 보던 만들면서 배우는 클린아키텍처 의 맨 뒤에 관련 책으로 나와있는 것을 보고서 1차 끌림, 목차를 보고 꼿힘의 순서로 구매하게 되었다. 책을 어제 결혼식에 다녀오고서 잠깐 보았는데, 그자리에서 한챕터를 술술 읽었다.(너무 재밌었다.) 관심 있는 내용이 정리된 내용을 보다보니 더 재밌게 느껴지는 것 같다.
나는 (내가 관심 있는)새로운 책을 보면서 느끼는 공통적인 생각이 있는데, 해당 주제의 내용을 공부하게 되는 배경이 정말 유사하다. 내가 맞고 다른 사람은 틀려! 라는 생각을 가진 것은 아니지만, 내가 하는 고민들이 잘못된것은 아니라는 생각이 들어 한편으로는 안도감이 든다.
그리고 내가 지금까지 공부한 스토리를 좀 더 풍부하게 이야기할 수 있게되는 것은 덤이다.
벌써 7월 4주차이다. 시간은 점점 가속이 붙는 것같다. 기존 퇴사를 할때 목표한 것으로 이쯤에는 코딩 테스트를 준비하면서,새로운 프로젝트를 이제 이력서에 옮겨 작성하는 것이었는데, 생각보다 (아주 많이) 일정이 밀린 것 같기도하다.. 하지만 내 생각과 기대보다 더 많은 배움과 성장이 있었기에 아쉬움과 후회는 없다.(단지 조금 불안할뿐..)
몸 상태도 정말 많이 좋아졌다. 컨디션이 많이올라온 것을 느낀다. 시간이 지나고, 공부를 하면 할수록 점점 더 내가 하고싶은 목표가 분명해지는 것 같다. 그리고 그 목표에 좀더 가까워지고 싶다. 다음주는 더 열심히 공부하고 고민하고, 목표를 향해 나아가야겠다.
'회고 > TIL' 카테고리의 다른 글
PR 리뷰-피드백, 알고리즘 문제풀이 (1) | 2023.07.18 |
---|---|
Product Adapter: DataAccess PR 작성, 알고리즘 문제풀이, 독서 (0) | 2023.07.17 |
코드문제 해결, 새로운 기능 추가, 알고리즘 문제풀이 (0) | 2023.07.13 |
만들면서 배우는 클린아키텍처 독서: 테스트, Product Adapter(out.dataaccess) 개발 및 테스트, 알고리즘 문제풀이 (1) | 2023.07.12 |
원인 파악 및 삽질, 알고리즘 문제풀이 (0) | 2023.07.11 |