좋은, 협업 가능한 코드, 어느 곳에서도 사용되기 좋은 함수를 만들기 위해 꼭 필요한
소프트웨어 아키텍쳐 배우기!
어플리케이션을 모듈화를 해야 한다.
- 확장성 extensibility
👉🏻 확장성을 고려하지 않은 코드는 시스템의 규모가 커질수록 문제가 생길 확률이 높아져요.- 재사용성 reusability
👉🏻 반복되는 로직을 함수로 분리
👉🏻 코드상의 재사용성, 설계한 구조의 재사용성을 고려해야 헤여.- 유지-보수 가능성 maintability
👉🏻 여러 로직이 뒤엉켜 있는 코드는 유지 보수를 못해요.- 가독성 readability
👉🏻 어려운 로직일수록 가독성이 더 높아야해요.- 테스트 가능성 testability
👉🏻
View
FrontEnd
- React, Angular, Vue, ios등을 사용해서 View 생성
- Request를 통해 Backend의 Controller로 요청 보냄
Controller
Backend
- 모든 경우에 다 데이터베이스까지 들어가도록 하지 않는다.
- 요청, 응답을 제어하는 곳!
Model
Backend
- 인증 인가를 통해 허용되는 경우에만 데이터베이스까지 가도록 하는
서비스 로직을 실행시키는, 데이터베이스에 접근할 수 있도록 하는 곳.
함수가 실행되는 경로가 뭐에요?
Python에서 모듈화 하기 위해 urls.py 작성해서 코드간의 의존성을 줄이듯이,
node.js에서 Controller의 경로는 React-router처럼 함수가 실행될 수 있도록 하는 길!
- route -> Endpoint를 찾아주는 역할을 한다!
코드간의 의존성을 줄였기 때문에, 각 레이어는 오로지 바로 아래에 있는 레이어에만 의존하게 된다.
의존성이 왜 그렇게 중요해요?
- 각 레이어는 하위 레이어에 대해서만 의존성을 가지기 때문에,
RDBMS 이전, 프로젝트를 갈아엎는 등의 상황에서도 유연하게 대처할 수 있다.
- path parameter
:req.params
을 통해 변수에 담아준다.
: req - response의 맥락이
데이터를 가지고 가는 그 모든 흐름과 연결이 되어있다.