'커머스 서비스로 배우는 NestJS 실전 개발' 강의 완강했습니다. 

 

강의 듣게 된 계기

이 강의는 NestJS 단톡방에서 처음 알게 되었습니다. 김빌이라는 개발자분께서 강의를 오픈하셨다고 얼리버드 할인 중이라 하시길래 한번 구성을 살펴나보자 했는데 구성이 꽤 괜찮더라구요. 

 

제가 가장 끌린 부분은 두 가지였습니다. 첫번째는 대형 서비스 기업 개발자의 코드를 볼 수 있다는 점이였고, 두번째는 Kafka로 리팩토링하는 강의였습니다. 

 

회사에서 항상 개발을 하며 들었던 생각이 있는데요, '이 코드/구조가 대형 서비스에서도 유효할까?' 였습니다. 항상 대형 서비스의 NestJS 코드를 보고, 배우고 싶은 생각이 있었으나 NestJS 에선 관련 강의도 블로그 글도 찾아보기가 어렵더라구요. 또 주변에 대형 서비스 경험이 있는 개발자가 없다보니 이 부분에 대한 갈망이 심했던 것 같습니다. 마침 이 강의의 저자가 대형 서비스 출신 개발자이시기도 하고 그 경험을 바탕으로 강의를 진행한다 하시길래 더욱 끌렸던 것 같네요. 

 

또 Kafka로 서비스 로직을 리팩토링하는 부분도 크게 제 구미를 당겼는데요. 저는 아직 Kafka/RabbitMQ 와 같은 메시지큐 시스템을 사용할 정도의 서비스 경험이 없습니다. 물론 마이크로서비스도요. 항상 메시지 큐 시스템에 대해 궁금증은 있었지만 당장 쓸 상황도 아니다보니 해야지해야지~ 하다 넘어가게 되더라구요. 또, kafka 를 NestJS 환경에서 적용하고 서비스 로직에 사용하는 강의가 있었음 들었을 것 같은데 전부 kafka 그 자체, 혹은 Spring 과의 연계에 대한 강의밖에 없어 넘어가게 된 것도 있는 것 같습니다. 이 강의는 제가 원했던 딱 그 부분을 구성에 담고 있어 수강까지 하게 되었네요.

 

완강 후 느낀 점

생각보다 얻은 게 많은 강의였습니다.

 

첫번째, NestJS 폴더 구조 구성이 조직마다 많이 다를 수 있겠구나를 느꼈습니다. 

 

아래 사진은 제가 기본적으로 사용하는 폴더 구조입니다.

 

 

 

저는 보통 서비스 폴더 안에는 dto 파일을 담은 dto 폴더, 같은 레이어에 module, controller, service 파일 그리고 test 파일을 담은 test 폴더 이렇게만 구성했으며, schema 파일은 무조건 따로 빼서 다른 폴더에서 관리했는데요. 아래 사진과 같이 강의에선 제가 지금까지 쓰던 방식과 꽤나 다른 구조를 사용하더라구요. service 파일과 controller 파일을 각각 다른 폴더에 저장하기도하고, 필요에 따라 entity(schema) 파일을 서비스 폴더 안에 넣기도하고.. 

 

 

강의에서도 강사님이 '서버 폴더 구조는 정해진 것이 없다. 누구는 이런 구조가 편할 수 있고 다른 구조가 편할 수 있다. 가장 좋은 구조는 본인이 해당 구조를 잘 설명할 수 있는 구조이다.' 라고 말씀하셨는데 참 와닫는 말이였습니다. 

 

처음엔 해당 구조가 생소하고 이게 좋은건가 싶었으나 어느 순간 제가 지금까지 사용해오던 구조보다 나은 점이 보였습니다.  이 강의를 이후로 폴더 구조 정리에 좀 더 신경을 쓰게 된 것 같습니다. 또, 이런 구조도 있구나라고 느끼며 시야가 한층 넓어진 느낌이 들었네요. 

 

두번째, 서버 폴더 구조 정리의 중요성을 알게 되었습니다. 

첫번째와 연관되어있는 내용인데요, 폴더 구조 정리를 좀 더 신경써야겠구나 + 더 나은 구조가 있구나를 알게 되었습니다. docker, docker-compose 파일 따로 폴더로 모아 관리한다거나, Config 파일은 따로 모아 관리하는 등 제가 생각하지 못했던 관리 방법을 알게 되었습니다. 위와 같은 방법으로 관리를 하니 구조가 좀 더 명확하고 보기 편하더라구요. 앞으로 이런 부분에 조금 더 신경을 써봐야겠다고 생각이 들었습니다. 

 

세번째, Repository 패턴 사용의 장단점을 명확히 알게 되었습니다. 

저는 지금까지 Repository 패턴을 잘 사용하지 않았습니다.(현업에서 경험도 없었습니다.) 사실 필요성을 잘 못느꼈습니다. '서비스 레이어에 Model 혹은 Service Client 를 그냥 호출해서 쓰면 되는데 굳이 Repository 로 빼서 레이어를 나눠야 하나?' , '코드 복잡성만 높이는거 아닐까?'라는 생각이 주를 이루었습니다.

 

이 강의에서 장바구니 서비스를 mysql -> redis 로 리팩토링하며 'Repository 패턴이 유용한 지점이 있구나' 라는 생각이 들었습니다. 확실히 레이어를 구분하니 Repository 파일에서만 코드를 변경하면 되고 Service 에서 관련 로직을 신경쓰지 않아도 되니 좋다 라고 느꼈습니다. 다만, ORM 을 마이그레이션할 일이 없을 땐 굳이? 라는 느낌은 여전히 드는 것 같네요. (물론 미래의 일은 모르는 것이긴 합니다만,,)

 

어찌되었든 Repository 패턴을 사용해보고 딱 필요할 때 이 패턴을 이용해보니 해당 패턴의 장점을 알 수 있어 좋았습니다. 시야가 한층 더 넓어진 느낌입니다.

 

네번째, NestJS에서 Kafka 사용법을 알게 되었습니다. 

개념만 알고 있던 Kafka 를 NestJS 에서 사용하는 법을 알게 되었습니다. 확실히 블로그 글, 여러 군데 널린 코드만 보다 딱 처음부터 끝까지 일관성있는 코드를 짜는 강의를 보니 이해하기도 쉽고 시행착오도 적어 좋았습니다. 

 

producer, consumer, topic 등 kafka의 기본적인 구조에 대한 사용법, config 설정 등 설명이 잘되어있어 좋았습니다.

 

멀지 않은 미래에 꼭 현업에서 Kafka 를 다뤄보고 싶네요.(MicroService 도..) Kafka 매력적이네요.

 

마치며

할인가로 62,370원이라는 적지 않은 금액의 강의였지만 전반적으로 만족스러웠습니다. 강의가 매끄럽지 않은 부분에 대한 아쉬움이 있긴 했지만 내용적으로 좋았고 얻어가는 것도 많아 좋았네요. 한층 더 성장할 수 있는 좋은 강의였습니다. 

 

'회고' 카테고리의 다른 글

웹 사이트 버그 찾아서 제보한 후기  (0) 2025.01.31
로드 테스팅 툴 '신기전' 개발 후기  (0) 2025.01.16