클린 아키텍처 1회독 후기

Ian·2021년 8월 28일
0

Architecture

목록 보기
1/1
post-thumbnail

클린 아키텍처 1회독을 했다. 시간은 약 3주정도 걸렸다. SOLID 라는 게 무엇인지 블로그나 칼럼을 보고 피상적으로 정리했던 지식을 한 번 제대로 정리했던 시간이었고 추상화의 중요성을 알게 되었다. 읽고 남았던 기억을 간단히 요약하라고 하면

  • 구체적인 것에는 의존하지 말아라
  • 구체적인 만큼 추상화를 진행하라
  • 그렇게 해서 decoupling 을 하라

일 듯 하다.

얻은 지식을 코드에 적용해 보기 위해, 이를 코드로 녹여내는 연습을 중간중간 계속해서 하다보니, 코드 자체로는 SOLID 한 코드를 작성할 수 있긴 하다. 그러나, TypeScript, 그리고 NestJS 라는 프레임워크를 통해 작성한 내 실제 작업물에서는 해당 내용을 적용하기가 쉽지 않았다.

일단 TypeScript 같은 경우, interface 를 통해서 추상화를 진행할 수 없다. 왜냐면, 이것이 JavaScript 로 변경되는 과정에서 interface 가 사라지기 때문이다. 그래서 NestJS 에서 권장하는 대로 abstract class 를 사용하고 그걸 extends 하여 provide 엔 abstract class 를, 그리고 useClass 에서는 그걸 통해 구현한 concrete class 로 IoC container 에 provider 를 제공해주거나, 아니면 interface 로 추상화를 한 뒤, string token 을 provider 로 제공한 다음 useClass 를 통해 implement interface 를 통해 만든 Class 를 useClass 로 제공해주어야 하는데 무엇이 더 좋은 방법일지는 모르겠다.

그리고 더 나아가서 service logic 이 커질 것 같으면 module 단위로 쪼개버리는 게 좋을지, 아니면 그냥 하나의 module 에서 여러개의 servie 를 만들고 그걸 한 번에 제어하는 facade class 를 만들어 사용할지도 모르겠다. 실제 코드레벨에 적용하기는 너무 어려운 문제이다.

그리고 부끄럽게도 뒤의 아키텍처 단락부터는 정말 너무 어려워서 거의 대부분을 이해하지 못 했다. 큰 방향의 철학정도만을 공감하는 수준으로 읽었는데, 그걸 어떻게 코드로 녹여낼지는 너무 어려운 문제인 거 같다. 그래서 집중해서 그냥 읽기만 했다. 조금 더 시행착오를 겪고, 여러가지를 공부해서 깊은 생각을 할 수 있는 상태가 되고, 그 때 2회독을 할 땐 보이는 게 있겠지 하는 마음으로.

작성한 글들의 내용은 여기 단락에 정리해놓았다. velog 에 올리기엔 거친 글이라 작성한 개인 notion 링크만 거는 것으로 갈음한다.

profile
правда и красота, truth and beauty

0개의 댓글