Layered pattern

jhyunk218·2021년 9월 21일
0

backend

목록 보기
9/13
post-thumbnail

지금까지는 server.js가 백엔드에서 모든 일을 하고 있었다.
리액트에서 컴포넌트 분리하듯 코드를 분류해보자!

모듈화가 필요한 이유?

프로그래머는 좋은 코드를 만들어야한다.
그렇다면 좋은 코드란? 잘 동작하는 + 유지보수가 쉬운(가독성 good)

과거에는 컴퓨터가 비쌌기 때문에 컴퓨터의 리소스를 적게 쓰는 짧고 용량이 작은 코드가 좋은 코드였다.
시대가 발전하면서 프로그램이 커지고, 컴퓨터보다 인건비가 더 비싸졌다.
이제 여러 사람이 프로그래밍을 할 때 빠르게 이해할 수 있는 코드가 좋은 코드가 되었다!

"여러 사람이 읽어도 이해하기 좋은, 가독성 좋은 코드"

엉켜있는 스파게티 코드는 비효율적인 코드 => 모듈화
모듈화에서 고려? 확장성, 재사용성, 유지-보수 가능성, 가독성, 테스트 가능성

MVC Pattern


Model + View + Controller(역할에 따라 세 part로 나눔)

view(화면 - 프론트엔드)
model(db를 건드리는 코드 - 백엔드)
controller(view와 model사이의 코드 - 백엔드)

#mvc는 절대적이지 않고 상대적이다.
프론트에서도 mvc가 있을 수 있고, 백엔드에서도 mvc가 따로 있을 수 있다.
모든 코드에서 적용 가능함.

MVC의 장점

  • 염려의 분리
    htm, CSS, js파일을 분리하듯 각각의 레이어가 하는 역할이 명확
  • 동시적인 개발
  • 수정의 용이함
  • 테스트-주도 개발

프로젝트에서 적용할 패턴은?

Route => 프론트와 통신(URL 연결)
Controller => request에 대한 판별, response를 보내주는 역할 (외부와의 소통), request error handling
Service => 비즈니스 로직을 담당, controller 에서 넘겨받은 인자로 다양한 알고리즘(필터, 정렬 등..)을 처리해서 데이터에 접근하는 로직, response error handling
Model => data 관련한 코드 담당, error handling

각각의 레이어는 각각의 폴더를 구성한다.
1. model에 가까워질수록 데이터 로직에 가까워진다.
2. 오로지 바로 아래의 레이어에만 의존한다.

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

회사마다, 개발자마다 패턴은 다르게 나타난다.

profile
FROM 🌱 TO 🌳

0개의 댓글