[ node.js ] #01-1 Project Architecture

Hailee·2021년 1월 14일
0

[ node.js ]

목록 보기
2/3
post-thumbnail

좋은, 협업 가능한 코드, 어느 곳에서도 사용되기 좋은 함수를 만들기 위해 꼭 필요한
소프트웨어 아키텍쳐 배우기!

1. 좋은 코드, 협업 가능한 코드는?

어플리케이션을 모듈화를 해야 한다.

  • 확장성 extensibility
    👉🏻 확장성을 고려하지 않은 코드는 시스템의 규모가 커질수록 문제가 생길 확률이 높아져요.
  • 재사용성 reusability
    👉🏻 반복되는 로직을 함수로 분리
    👉🏻 코드상의 재사용성, 설계한 구조의 재사용성을 고려해야 헤여.
  • 유지-보수 가능성 maintability
    👉🏻 여러 로직이 뒤엉켜 있는 코드는 유지 보수를 못해요.
  • 가독성 readability
    👉🏻 어려운 로직일수록 가독성이 더 높아야해요.
  • 테스트 가능성 testability
    👉🏻

2. MVC Pattern

Model, View, Controller

View

FrontEnd

  • React, Angular, Vue, ios등을 사용해서 View 생성
  • Request를 통해 Backend의 Controller로 요청 보냄

Controller

Backend

  • 모든 경우에 다 데이터베이스까지 들어가도록 하지 않는다.
  • 요청, 응답을 제어하는 곳!

Model

Backend

  • 인증 인가를 통해 허용되는 경우에만 데이터베이스까지 가도록 하는
    서비스 로직을 실행시키는, 데이터베이스에 접근할 수 있도록 하는 곳.

함수가 실행되는 경로가 뭐에요?

Python에서 모듈화 하기 위해 urls.py 작성해서 코드간의 의존성을 줄이듯이,
node.js에서 Controller의 경로는 React-router처럼 함수가 실행될 수 있도록 하는 길!

  • route -> Endpoint를 찾아주는 역할을 한다!

3. Node.js Project Layering

코드간의 의존성을 줄였기 때문에, 각 레이어는 오로지 바로 아래에 있는 레이어에만 의존하게 된다.

  • Route -> Controller
  • Controller -> Service
  • Service -> Model

의존성이 왜 그렇게 중요해요?

  • 각 레이어는 하위 레이어에 대해서만 의존성을 가지기 때문에,
    RDBMS 이전, 프로젝트를 갈아엎는 등의 상황에서도 유연하게 대처할 수 있다.

  • path parameter
    : req.params을 통해 변수에 담아준다.
    : req - response의 맥락이
    데이터를 가지고 가는 그 모든 흐름과 연결이 되어있다.
profile
웹 개발 🐷😎👊🏻🔥

0개의 댓글