1. MVC 모델
1-1. 아키텍처 스타일
- 개발자 각자의 스타일대로 만들어진 아키텍처는 유지보수가 어려움
- 개발자들의 경험 누적으로 검증된 보편적인 아키텍처 스타일 등장
장점
- 시행착오를 줄여 고품질 SW 생산
- 구축 전 시스템 시뮬레이션 가능
- 시스템에 대한 빠른 이해
- 수월한 의사소통
- 용이한 유지보수
- 검증된 아키텍처에 대한 검증된 라이브러리 지원
1-2. MVC 모델
- 세 개의 서브 시스템(model, view, controller)으로 구성된 중앙 데이터 구조
- UI로부터 비즈니스 로직을 분리해 서로 영향 없이 쉽게 유지보수할 수 있음
- 컨트롤러는 모델과 뷰의 가교 역할
- 모델 : 데이터, 로직, 룰 관리
- 뷰 : 정보를 표현
- 컨트롤 : 입력을 받아 모델 또는 뷰로 명령 전달
비즈니스 로직 : 프로그램 코드 중 업무에 필요한 데이터를 생성/표시/저장/변경하는 부분
1-3. 웹과 MVC
- 원래 GUI를 위해 개발된 패턴이지만, 웹 어플리케이션에 널리 사용되게 됨
- 프레임워크마다 어느 부분을 클라이언트 또는 서버에 놓을지 구분은 상이함
- UI와 로직/데이터의 구분으로 개발자-퍼블리셔(디자이너)간 협업이 원활해짐
- 사용자가 웹사이트에 접속 (USES)
- Controller는 사용자가 요청한 웹페이지를 서비스하기 위해 모델 호출 (MANIPULATES)
- 모델은 데이터베이스나 파일 등 데이터 소스 제어 후 결과 반환
- Controller는 Model이 반환한 결과를 View에 반영 (UPDATES)
- 데이터가 반영된 View는 사용자에게 표시 (Sees)
2. 엔드포인트
API 서버가 제공하는 통신 채널 혹은 접점
- 클라이언트가 백엔드 API 서버와 통신할 때 엔드포인트에 접속하는 형태로 통신
- 각 엔드포인트는 고유 URL을 가지며 이를 통해 엔드포인트에 접속
- 일반적으로 각 엔드포인트는 고유 기능 담당
- 엔드포인트들이 모여 하나의 API를 구성
2-1. ping 엔드포인트
단순히 "pong" 문자열을 반환하는 엔드포인트 = 헬스 체크 엔드포인트
- API 서버가 현재 운행 여부를 확인할 때 사용
from flask import Flask
app = Flask(__name__)
@app.route("/ping", methods=['GET']
def ping():
return "pong"
- ping 엔드포인트를 구현하는 ping 함수에서 "pong"을 반환하면
Flask가 HTTP 응답으로 변환하여 요청을 보낸 클라이언트에 전송