11. 자주 쓰는 서버 구조와 설계 패턴
MVC 패턴 | 계층형 아키텍처 | DDD와 전술 패턴 | 마이크로서비스 아키텍처
| 이벤트 기반 아키텍처 | CQRS
MVC 패턴
MVC(Model-View-Controller)
- Model: 회원 가입, 암호 변경 등 비즈니스 영역의 로직 처리
- View: 사용자가 보게 될 결과 생성 → 사용자에 응답
- Controller: 사용자의 입력 처리, 흐름 제어 담당
Java - Spring 프레임워크, Node.js - Express.js

- 사용자) 원하는 기능 처리 → 요청을 컨트롤러에 보냄
2-1. 컨트롤러) 사용자의 요청 해석 → 모델에 비즈니스 로직 실행 위임
- ex. 컨트롤러) 사용자가
POST
방식으로 전송한 데이터 → 알맞은 요청 객체로 변환
→ 모델이 제공하는 기능 실행
2-2. 모델) 사용자가 요청한 기능 실행 → 처리 결과 컨트롤러에 return
-
컨트롤러) 모델의 처리 결과 기준으로 사용자에게 보여줄 뷰 선택
- API를 구현한 컨트롤러) JSON 응답을 생성하는 뷰 선택
- 웹 페이지 구현한 컨트롤러) HTML 결과 응답하는 뷰 선택
-
뷰) 사용자에게 결과 화면 보여줌
-
비즈니스 로직을 처리하는 모델, 결과를 생성하는 뷰 분리
- 모델: 비즈니스와 관련된 로직만 처리
/ 사용자에게 제공할 화면(HTML 등) or UI 흐름 제어에 대한 처리 X
- 뷰: 사용자에게 알맞는 응답을 제공하는 역할만
/ 로직 or 흐름 제어 → 뷰가 처리 X
⇒ 서로의 변화에 대한 영향 ↓
-
애플리케이션의 흐름 제어 or 사용자의 요청 처리 → 컨트롤러에 집중
- 사용자 요청 해석 → 알맞은 모델 실행, 결과를 보여줄 뷰만 선택/ 비즈니스 로직 or 뷰 구현 신경 X
- 사용자 입력 값이 유효한 형식인지 검증, 쿼리 문자열 → 알맞은 데이터 모델로 변환
- 비즈니스 로직에 포함 X 사용자 인증과 같은 기능 담당
⇒ 관심사 → 모델, 뷰, 컨트롤러로 역할 나눔