Three-Tier architecture MVC(Model-View-Controller) 패턴 이해하기 + Persistence???

박지성 학부생·2024년 2월 21일
2

BackEnd Develop log

목록 보기
22/27

사용자의 요청이 UI를 통해 들어오고, 애플리케이션의 컨트롤러를 통해 비즈니스 로직을 거쳐 데이터를 처리하며, 그 결과가 사용자에게 다시 UI를 통해 표현되는 과정. 동시에, 각 계층은 서로 분리되어 있어서 독립적인 업데이트와 유지보수가 가능하다는 것을 보여줌!! 이것이 핵심.

자문자답 스터디

  • 클라이언트(Client): 사용자가 실제로 상호작용하는 부분으로, 여기서 사용자의 요청이 시작

    • 클라이언트를 직관적으로 정의하자면?
      • 웹 사이트를 방문하거나 앱을 사용할 때 우리 자신
  • 표현 계층(Presentation Layer): 애플리케이션에서 우리가 보고 상호작용하는 부분, MVC의 '뷰(View)'와 '컨트롤러(Controller)'가 여기에 해당. 사용자의 요청을 받아들이고 (컨트롤러를 통해), 사용자에게 정보를 보여주는 역할(뷰를 통해). 또한, 사용자의 입력을 처리하고 그에 따라 모델(Model)에 명령을 내리는 컨트롤러를 포함.

    • 컨트롤러는 리모컨, 뷰는 프론트나 껍데기로 이해 ㅇㅋ 근데 여기에서 모델(Model)이 뭔지 정확히 모르겠음
      • 사용자에게 보여줄 데이터를 가진 객체로, 상품의 가격이나 설명 같은 것들
      • 백엔드할때 Model == Entity라고 이해하면 쉬움
      • 예시로 ‘상품’이라 하면 어떤 통일된 양식이 필요하다. 어떤 상품은 이름이 없고 가격이 없고 만든사람 생일이 적혀있으면 안된다. 모든 ‘상품’(객체)에는 통일된 ‘껍데기(양식)’,이 필요하다. ‘상품’의 특성을 이름, 가격, 유통기한으로 껍데기를 딱 정해놔야 이후 비즈니스 로직에서 문제없이 사용가능하다.⇒ 왜? 이건 ‘객체지향’프로그램이기 때문. 이 객체지향적인 껍데기가 바로 Model임.
  • 비즈니스 로직 계층(Business Logic Layer): 애플리케이션의 핵심 기능과 규칙이 구현되는 부분. 표현 계층과 데이터 액세스 계층 사이에서 데이터를 처리하고 비즈니스 규칙을 적용.

    • 비즈니스 로직이라는 것이 추상적인 표현이라 정확이 그게 무슨 로직인지 왜 비즈니스 로직이라하는지 모르겠음.
      • "비즈니스 로직"이라는 용어는 소프트웨어가 해결하려는 실제 "비즈니스 문제"와 관련된 로직을 지칭. ⇒ 비즈니스의 규칙, 연산, 데이터 처리 방법 등을 컴퓨터 프로그램으로 표현한 것.
      • 아~ 애플리케이션이 특정 비즈니스 요구 사항을 어떻게 충족시킬지를 정의하는 부분이기 때문에 굳이 이렇게 어렵게 "비즈니스 로직"이라 하는구나~
      • ex) 온라인 은행 애플리케이션을 떠올려보자.
        • 사용자가 계좌 이체를 요청할 때, 은행의 "비즈니스 로직"은 다음과 같은 질문에 대답해야 한다.
          • 사용자의 계좌에 충분한 잔액이 있는가?
          • 이체 금액이 일일 이체 한도를 초과하는가?
          • 받는 사람의 계좌 정보가 유효한가?
        • 이처럼, 비즈니스 로직은 애플리케이션이 이러한 질문들에 대해 적절하게 대응할 수 있도록 만드는 일련의 조건과 계산을 말한다. 이 로직은 비즈니스의 실제 운영 규칙을 반영하며, 소프트웨어가 비즈니스의 실제 활동을 지원하도록 한다. 따라서 "비즈니스 로직"이라는 용어는 소프트웨어가 비즈니스의 실제 문제를 해결하기 위해 어떤 결정을 내리고, 어떤 조치를 취해야 하는지를 결정하는 데 사용된다.
  • 데이터 액세스 계층(Data Access Layer): 데이터베이스 또는 다른 영구 저장소와의 상호작용을 담당하는 계층. 여기서는 데이터를 저장하고 조회하는 CRUD(Create, Read, Update, Delete) 연산이 이루어짐.

    • Persistence라고 하는건가?
      • 데이터가 오랫동안(영구적으로) 저장되고 유지되어야 함을 의미
      • 웹 사이트에 회원가입을 하면, 우리의 로그인 정보는 데이터베이스에 영구적으로 저장되어야 하며, 다음에 다시 로그인할 때 그 정보를 사용할 수 있어야 함. 이렇게 정보를 안전하게 보관하고 필요할 때마다 꺼내 쓸 수 있는 기능을 'Persistence'(영속성)이라 함

딱 이해하기 쉽게 비유

컨트롤러 == 리모컨

모델 == 상품양식, 객체 껍데기

뷰 == 프론트 화면

비즈니스 로직(서비스 레이어) = 두뇌(cpu)

Data Access Layer == 창고

profile
참 되게 살자

0개의 댓글