프라이D
프라이Develog(❁´◡`❁)
프라이D
전체 방문자
오늘
어제
  • ALL (378)
    • TDD, Cleancode with JavaScr.. (5)
    • 프로젝트 (32)
      • work (3)
      • 직접 만드는 기술 블로그 (2)
      • 데일리 옥션 (19)
      • 모락모락 (8)
    • Computer Science (1)
    • Algorithm & 자료구조 (94)
      • 알고리즘 w.JavaScript (53)
      • 자료구조 (5)
      • (인프런) 자바스크립트 알고리즘 문제풀이 (34)
    • JavaScript (45)
      • JavaScript (41)
      • 모던 자바스크립트 Deep Dive (4)
    • WEB (13)
    • 회고 (12)
    • TIL (109)
    • WIL (7)
    • Stacks (20)
      • React.js (6)
      • Next.js (1)
      • Redux (3)
      • Node.js (2)
      • GIT (2)
      • SAP (1)
    • 15일 메이킹 프로젝트 (15)
    • 이전 기록 (14)
    • ETC. (5)
    • ---------------2021 (6)
      • 내일배움단-웹개발 5주 (2)
      • 정보처리기사 (4)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 자바스크립트비트마스크
  • nomadcoders
  • 자바스크립트알고리즘
  • 코드스테이츠
  • 알고리즘
  • 내일배움카드
  • Til
  • vanilaJS
  • 투포인터알고리즘
  • nomadcoder
  • 코딩프로젝트
  • JavaScript
  • 자바스크립트
  • 스파르타코딩클럽
  • 비트마스크
  • MySQL
  • 모던자바스크립트딥다이브
  • 국비지원
  • 2023 인프콘 후기
  • 내일배움단

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
프라이D

프라이Develog(❁´◡`❁)

TIL

[TIL] 2023-1227 Nest.js 공부하는 중

2023. 12. 27. 22:30

Facts

  • 사내에서 electron + Next.js 를 활용한 키오스크 POC 개발을 담당하게 되었음. POC 자체는 80% 정도 진행 되었다고 보여짐. 현재까진 여러 이슈가 있지만 일단 눈앞에 놓인 것을 하고 있음.
  • 백엔드에도 관심을 가지게 되어서 TS 기반 프레임웤인  Nest.js를.. 노마드코더 강의 보면서 공부해보는 중.

Feelings

  • 스타트업답게 회사에서 정말 많은 변화가 일어나고 있음. 그에 발맞춰 나도 변화해야겠다는 생각이 정말 많이 듬.
  • 대표님과 사내 개발 문화에 대한 이야기를 나누다가, 문제의 본질 중 하나는 '서로 자유롭게 물어보기 힘든 분위기' 도 있음을 깨달음
  • 예전에 팀플하면서도 느꼈던 부분이지만, 설령 실질적인 도움이 되는 이야기가 아니더라도 일단 자유롭게 이야기하고 받아줄 수 있는 분위기가 형성되어야 더 중요한 이야기들도 가감없이 오고갈 수 있다는 것을 다시금 깨닫게 되었음.
  • 그리고 나 스스로에게 좀 자신이 없는 것 같은데 자신을 가져도 좋을 것 같다. 

Findings

  • Nest.js 에서는 Controller 에서 라우트를 처리하고, 라우트의 실제 구현은 Service 를 통해서 이루어지도록 구조가 짜여져있음.
  • 그리고 가장 상위 모듈에서 controllers 와 providers(주로 service) 를 등록하고 각 controller 에서는 service 를 주입받아서 사용함
  • 직접 인스턴스를 생성하지 않고도 서비스를 참조할 수 있는 까닭은 Nest.js 프레임워크에서 이러한 의존성을 관리해주기 때문임.. 그래서 controller 클래스의 constructor 에서 이를 받아서 쓸 수 있다. 이렇게...
@Controller('movies')
export class MoviesController {
  constructor(private readonly moviesService: MoviesService) {}
...
}
  • DI 의 장점은 인스턴스를 직접 생성하지 않아 느슨한 결합도를 가진다는 것임. 그리고 프레임워크에서 이러한 패턴으로 구현하도록 강제하고 있어 SRP에 맞는 단위로 코드를 분리할 수 있음.
  • 느슨한 결합도를 가지면 당연히 변화에 대처하기 쉽고 코드의 변경 범위가 한정되기 때문에 유지보수가 쉽다는 것임.. 근데 지금으로썬 이게 어떻게 도움이 된다는 것인지 사실 잘 감이 오지 않는다. 어쨌든 그렇게 짜도록 강제되어 있다는 것이 이 프레임워크의 장점이라고 생각됨.
  • Nest.js 에서는 데코레이터를 활용해 클래스, 메소드, 파라미터 등의 동작을 수정/확장하거나 메타데이터를 추가할 수 있음. 데코레이터가 Nest 의 기능인줄 알았는데 이는 타입스크립트의 실험적인 기능이고 그냥 이 프레임웤에서 이걸 적극 활용하는 것이었다. Nest.js 에서는 이 데코레이터를 활용해서 의존성 주입(@Injectable), 라우팅(@Get, @Post...), 유효성 검사(class-validator 활용) 등을 할 수 있음. 
  • DTO 와 인터페이스의 차이는 뭘까?
    • DTO : Data Transfer Object 데이터 교환을 위해서 사용되는 것... 계층은 클라이언트 - 서버 일 수도 있고 또 서비스 계층 간의 교환일 수도 있음. 그러니깐 쉽게 생각하면 api 에서 교환되는 데이터의 형식
    • 엔티티 : 데이터베이스 테이블과 맵핑, DB 스키마를 반영하는 것. 같은 엔티티에 대해서도 어떤 목적이냐에 따라 DTO 를 바궈 응답해줄 수 있는 것.

Feedback

  • 공부 시작하기 전에 로딩 시간이 너무 김... 나도 좀 효율적으로 빡! 하고 빡! 쉬고 싶은데 그게 잘 안되는게 고질적인 문제인 것 같다. 흠
  • 키오스크 api 연동까지 마무리 되면 보기 좋게 코드 정리하는 작업을 좀 즐겁게 해야겠음.
  • 네트워크, CS 쪽 지식이 필요해지는 순간이 옴... 출근 시간 활용해서 공부할 것.
저작자표시 (새창열림)

'TIL' 카테고리의 다른 글

[TIL] 2024-0110  (1) 2024.01.11
[TIL] 2024-0109 electron IPC 모듈로 통신하기  (0) 2024.01.09
[TIL] 2023-1208 노션 API 활용하기... 근데 그냥 삽질 푸념...  (0) 2023.12.08
[TIL] 2023-1207  (0) 2023.12.07
[TIL] 2023-1206 크로스 브라우징 지원, 테스트 코드 작성 등등등...  (0) 2023.12.06
    'TIL' 카테고리의 다른 글
    • [TIL] 2024-0110
    • [TIL] 2024-0109 electron IPC 모듈로 통신하기
    • [TIL] 2023-1208 노션 API 활용하기... 근데 그냥 삽질 푸념...
    • [TIL] 2023-1207
    프라이D
    프라이D
    틀린내용 정정 및 개선사항은 언제든지 댓글 달아주세요 :D

    티스토리툴바