레이어드 패턴은 백엔드에서 다룰 때 쓰는 패턴이다.
개인적인 생각으로는 MVC와 매유 유사하다고 생각한다.
보여주는 곳/로직 처리/디비 접근
3가지 파트로 나누어 처리하는 것인데, 이는 담당 위치를 분리함으로써 명확한 역할군의 분리가 눈에 띈다.
일반적으로 경력 백엔드 개발자들은 이렇게 작업하는게 "당연"한 것이나,
아무래도 백엔드 자체 특성상 신입이거나 배우는 단계인 사람들에게 지식이 타 계열에 비해 적지 않나 싶다.
ㄴcontroller (Presenstation Layer)
ㄴuser_controller.py
ㄴservice (Business Layer)
ㄴuser_service.py
ㄴmodel (Persistence Layer)
ㄴuser_model.py
Presentaion Layer
#service/user_controller.py
user_service = UserService()
@app.route("/user", methods=["POST"])
def get_user(self):
return user_service.get_user(request.form)
Buisness Layer(=Logic Manage)
#Controller/user_model.py
from Model.user_model import UserModel
class UserService:
def get_user(self, data):
#Buisness Logic
result = UserModel().get_user(data["name"])
return result
Persistence layer (=Data Access)
# Model/user_model.py
class UserModel:
def get_user(self):
#db connection
sql = "insert into user ..."
#execute(sql)
return result
주의할 점은 같은 레이어간의 호출하게 되면 무한한 회귀 속으로 빠질 수 있기 때문에 주의해야 한다.
DO NOT
A-Service calls B-Service
B-Service calls A-Service
'컴퓨터 공학' 카테고리의 다른 글
👉 [CS] Eager Loading vs Lazy Loading (0) | 2021.10.27 |
---|---|
👉 [CS] CS 지식은 필요한가? (0) | 2021.07.18 |
👉 [CS] Docker 기반 Microservice 구현 (0) | 2021.07.06 |
👉 [Flask] Blueprint 활용하기 (라우팅 함수 관리) (0) | 2021.06.28 |
👉 [Infra] 서버 상태 모니터링 하기 with Slack Webhook (0) | 2021.06.12 |