지난주차에 설계한 것을 바탕으로 Clean + Layered Architecture를 적용하여 구현을 하였다.
그런데..
하나 Pass, 하나 Fail을 받게 되었다.
도메인이 아닌 데이터 중심적인.. 테이블 그 잡채의 구현을 했던 것이다!!
Fail 받은 내용 바탕으로 리팩토링 해야지..
4주차는 모두 Pass 받을거야~!!!!!
지금까지 개발하면서 Layered Architecture 말고 다른 방법을 써서 개발해본 적이 없다.
그래서 이번 항해 이커머스 플젝을 진행하면서 클린 아키텍처를 제대로 도입해보기로 했다.
그런데 쉽지만은 않았다.
클린 아키텍처 적용은 정말 낯설었다.
일단 interface - application - domain - infrastructure 계층 구조도 익숙치 않았다.
게다가 Repository 구현체 없이 코드를 작성하라는 과제에 맞추어, JPA도 완전히 배제하고 코드를 작성하다보니 시간도 많이 걸리고, 어려웠다.
익숙하지 않았다.
DDD는 말만 들어봤지 실제로 해본 적도 없고, 누가 한 것을 본 적도 없다.
그리고 일단 '도메인 = 엔티티' 라고 생각하고 있었다. JPA를 쓰면서 늘 데이터 중심적이 사고를 해왔으니까.
이번 3주차를 진행하기 전에 도메인과 엔티티에 대해서 많이 찾아봤다.
도메인과 엔티티가 같다고 생각했었던 나에게 큰 전환점이 되었다.
공부를 했지만 실제 구현에서 도메인을 제대로 구현하기란 쉽지 않았다.
내 나름대로 객체지향적으로, 책임을 분리하여서 구현했는데 아니었던 것이다.
이번주차에 Fail을 받으면서 많은 것을 느꼈다.
처음엔 Fail을 받은 것이 마냥 아쉽게만 느껴졌었는데, 내각 항해를 하는 이유는 배움과 성장을 위한 것이라는 생각을 가지고 다시 Fail을 바라보니 다르게 느껴졌다.
오히려 Fail을 받아서 더 배운 것이 있다고 생각이 들었다.
아직 객체지향적으로, 도메인 주도적인 설계를 하는 것이 어렵다.
도메인에 대한 고민과 공부는 지속되어야 할 것 같다.
이번 과제를 하면서 이틀은 밤을 새다시피 했는데, 다음주차 부터는 시간 관리에 좀 더 신경을 써야겠다.