[백엔드] 도메인 설계, MVC 설계란, API 설계란, SCHEMA

안지수·2023년 9월 2일
0

😀 도메인이란?


: 소프트웨어로 해결하고자 하는 문제 영역
ex) 온라인 서점: 소프트웨어로 해결하고자하는 문제 영역
-> 이 도메인에서는 하위 도메인으로 상품조회, 구매, 결제, 배송 추적 등의 기능을 제공
-> 하위 도메인은 다른 하위 도메인과 연결되어 완전한 기능을 제공
-> 도메인이 제공할 모든 기능을 구현해야하는 건 아니다 (결제와 같은 기능은 외부업체에 맡길수도)

-> '도메인'은 우리가 만들고자하는 대상이되는 소프트웨어(문제 영역)이고, '도메인 설계'라고 하면, 우리가 만들고자하는 소프트웨어에 하위 어떤 기능들을 제공할 지, 어떤 데이터 구성을 가질 지, 각 기능들의 관계를 어떻게 할 지를 설계하는 것

더욱 깊게 공부하면 DDD와 같이 엄청 복잡한데, 나는 일단 백엔드 친구들이랑 협업할 때 알아들을 수 있을 정도의 개념만 정리하려고 한다. 나중에 기회가 되면 더욱 깊게 공부해보겠다!!

😀 MVC 설계란 (Model View Controller)

  • 디자인 패턴
    : 자주 발생하는 문제들이 또 발생했을 때, 해결하기 위한 패턴


: 소프트웨어를 조금 더 쉽게 유지하고 수정하기 위한 디자인 패턴

  • model
    : 데이터와 데이터가 동작하는 방식을 제공

  • view
    : 데이터의 표현
    -> 화면에 무엇인가를 보여주기 위한 역할

  • controller
    : 모델과 뷰의 연결고리
    -> 모델이 어떻게 처리할지를 알려주는 역할을 한다. 즉, 데이터를 받고 시스템의 다른 부분에 전달

mvc 처리 과정

  • 사용자가 애플리케이션과 컨트롤러에 최초 처리를 요청한다.
    -> 모델에서 데이터 생성, 갱신, 삭제라는 조작을 한다.
    -> 그리고 모델은 이 결과를 컨트롤러에 전달한다.
    -> 컨트롤러는 뷰에 결과를 전달하여 결과적으로 뷰는 사용자가에 응답을 보여준다.
    --> 즉, 사용자가 요청하면, 모델에서 조작을 하고 그 결과 데이터를 컨트롤러에 전달하고 컨트롤러는 뷰에 전달하여 사용자에게 응답을 보여준다.
    --> 개발자들이 각각 특정 로직 코드에만 집중할 수 있도록 업무를 분할할 수 있다.

MVC 패턴의 예

  • angular, python, django, react

--> 즉, mvc설계하는 것은 소프트웨어 구조 유지보수를 위한 패턴 중 하나이다. mvc는 프론트와 백 개발자가 분리된다는 장점이 있는 것이다. 클라이언트의 요청에 따라 컨트롤러는 받아서 모델에 전달하고 모델에서 데이터 처리하고 결과를 다시 컨트롤러에게 전달해주면 컨트롤러는 뷰에 전달하여 프론트엔드에서는 그것을 사용자에게 응답으로 보여주게 된다.
즉, mvc 설계는 사용자의 요청부터 응답을 주기까지를 어떻게 처리할 것인지를 설계하는 것

😀 API 설계란? (Application Programming Interface)

API란?

: 하나의 프로그램에서 다른 응용 프로그램(기능)을 가져올 때,그 매개체

REST API

: rest한 원칙을 따르는 api이다. 그 중에서도 클라이언트와 서버 사이에서 요청하고 응답을 받아올 때, 어떤 식으로 받아올 건지에 대한 체계 (요청 시, 내가 뭘 원하는 지 명확히 알게끔 하는 것)
-> 네이버에서 지도 api를 가져온다고 한다면: 네이버 지도의 정보를 사용하기 위해 어떻게 그 정보를 가져올 수 있는 지를 정의 해놓은 체계를 통해서 지도 정보를 가져온다라는 의미
-> 이렇게 이미 개발되어있는 api 사용을 통해, 직접 개발해도 되지 않아서 개발 시간을 단축할 수 있다.

API 설계란

: 프로젝트 시 의미하는 api설계는 클라이언트와 서버가 요청을 하고 응답을 받아올 때, 어떤 형태로 어떤 method로 요청을 할 건지, 어떤 json 형태로 응답을 받아올 건지를 설계하는 것
-> 백엔드에서는 클라이언트와 통신하기 위해, 서버에서 처리한 데이터를 어떻게 클라이언트에게 돌려줄 건지 api를 설계해야 함

Open API

: 누구나 쓸 수 있는 api

uri

: api중에서도 어떤 특정 리소스에 접근할 거냐에 따라 해당 uri로 이동

😀 schema

: db에서 객체, 속성, 관계들을 정의하는 것

⭕ 정리

: 도메인 설계는 우리가 만들 소프트웨어의 하위 기능들 그리고 각 기능의 데이터 구성, 각 기능들의 연관관계를 설계하는 것을 말한다.
mvc 설계는 이 소프트웨어를 유지하기 위한 패턴을 설계하는 것으로, 사용자에게 요청이 왔을 때, 이것을 백과 프론트에서 각각 어떻게 처리할 것이지 설계하는 것을 말한다. (백에서 ~데이터 받아서 db에 갔다가~하고 다시 프론트에 전달) 즉, 사용자의 요청에서부터 응답까지 어떻게 이루어지는 지를 설계하는 것.
api 설계는 클라이언트의 요청을 어떤식으로 받고, 어떤식으로 응답을 줄 건지를 설계하는 것.
schema는 db의 구조 설계

  • 도메인 설계: 기능 설계
  • mvc 설계: 사용자의 요청에서부터 응답까지의 과정 설계
  • api 설계: 백과 프론트의 통신을 위한 설계
  • schema: db 구조 설계
profile
지수의 취준, 개발일기

1개의 댓글

comment-user-thumbnail
2023년 9월 11일

모던 개발자에게 필요한 핵심 개념들에 대해 공부하셨군요! 멋집니다👍 머릿속에 알고 있는것과 실제로 만들면서 배우는 건 다르니 알게 된 시점과 만드는 시점의 간격을 같이 최대한 좁혀봐요!

답글 달기