[javascript] 개발 일기 2022-12-11

정태호·2022년 12월 11일
0

현재 코드를 발전시키기 위해 도전하고 현재 가지고 있는 생각을 정리하여 기록으로 남기고 싶어 개발 일기를 작성해 보기로 했다.

아직 배워야 할게 많은 주니어이지만 현재 가지고 있는 고민과 생각을 남겨가며 작성했던 글을 나중에 보게 됬을 때, 그때의 내가 이 글을 작성했을 때 보다 얼마나 발전했는지를 확인 할 수 있는 척도가 되어 줄 수 있을지 않을까 싶다.

먼저 지금의 상황을 정리하고 시도해 보려는 것을 정리해볼 생각이다.

프로젝트 아키텍처

  • express 프레임워크 에서의 MVC 구조
  • [ROUTE(비즈니스 로직) | DATABASE QUERIES(쿼리문 생성 로직) | UTILES(유틸 모듈,외부 api)] 레이어 구성
  • NodeJS(express) - [MySQL, ES, sendbird 등 외부 서비스 api]

간략히 표현하자면 다음과 같이 구성되어 있다.
그리고 여기서 개선되어야 할 점을 다음과 같이 판단해 봤다.

현상황

  • query 작성 레벨에서의 하드코딩으로 인한 동일코드 재사용 문제
    -> 이로 인해 query문의 일부 수정에 대해 넓은 범위에서의 수정이 필요
  • 비지니스 로직의 책임분리 및 캡슐화 필요
    -> 비지니스 로직이 route 안에서 직접 작성되어 있어 중복작성 및 route의 역할에 대해 알기 힘듬
  • 외부 호출 api의 추상화 및 도메인 데이터의 분리 필요
    -> 외부 호출 API에 비지니스 로직이 강한 의존성을 가지고 있음
    -> 관심사 분리가 되어 있지 않아 코드의 수정 범위를 확신하기 힘듬

개선방향

  • 쿼리문의 SELECT,FROM,JOIN,WHERE 등의 단위로 컴포넌트화 관리
    -> 각 레벨를 객체로 관리하여 builder 패턴을 사용하여 쿼리문 생성
    -> 각 도메인에 대해 메인 쿼리문 작성, 해당 객체를 주입받고 요청에 따라 builder하여 처리
  • 관심사에 따른 레이어 분리
    -> controller, service, framwork, domain에 대한 분리 진행
  • 역할별 추상화 및 의존성 분리
    -> API 호출에 대한 interface를 생성하고 domain 데이터를 entity로의 관리
    -> 각 역할에 따른 통합모듈을 생성하여 service는 해당 모듈을 의존

다음과 같은 개선 방향을 잡았다.

해당 개선 방향에 맞추어 모듈을 생성하고 관심사를 분리를 시도해 볼 생각이다.
관심사를 분리하고 의존성을 조정하며 리팩토링을 진행 한 뒤, 최종적으로 nestJS로의 마이그레이션이 최종 목표가 된다.

0개의 댓글