포스트

Architecture Pattern

Architecture Pattern

아키텍처 패턴


  • 서로 다른 시스템과 환경에서 시도되고 테스트된 우수한 사례를 정형화하고 추상화한 기술
  • 이전 시스템에서 성공적이었던 시스템 구조 기술
  • 해당 패턴을 언제 사용하기에 적절하고 적절하지 않은지에 대한 정보 포함
  • 패턴의 강점과 약점에 대한 상세한 내용 포함

MVC


Model, View, Controller의 약자
사용자 인터페이스로부터 비즈니스 로직을 세 가지 파트로 분리하여 서로 영향 없이 개발할 수 있는 설계가 가능

비즈니스 로직: 사용자가 원하는 기능을 수행하기 위해 필요한 데이터를 처리하는 로직 (Input 받고, Process 하고, Output 내보내기)

  • Model: DB와 연동하여 데이터를 처리하는 부분
  • View: 사용자에게 보여지는 부분
    • 회원가입 버튼, 로그인 버튼
  • Controller: 사용자의 입력을 받아 처리하는 부분
    • View에서 버튼을 누르면, Controller가 요청을 받아서 처리

Model

  • 데이터를 처리하는 영역
  • 데이터베이스와 연동을 위한 DAO(Data Access Object)와 데이터의 구조를 표현하는 DO (Data Object)로 구성됨

i.e. 검색을 위한 키워드가 넘어오면 DB에서 관련된 상품의 데이터를 받아 뷰에 전달

View

  • 데이터를 보여주는 화면 자체의 영역을 뜻함
  • 사용자 인터페이스(UI) 요소들이 여기에 포함되며, 데이터를 각 요소에 배치함
  • 뷰에서는 별도의 데이터를 보관하지 않음

i.e.검색 결과를 보여주기 위해 모델에서 결과 상품 리스트 데이터를 받음

Controller

  • 모델(Model)과 뷰(View) 사이에서 브릿지 역할을 수행
  • 앱의 사용자로부터 입력에 대한 응답으로 모델 및 뷰를 업데이트하는 로직을 포함
  • 사용자의 요청은 모두 Controller로 들어온다. (진행해야 한다.)
  • 컨트롤러로 들어온 요청은 어떻게 처리할지 결정하여 모델로 요청을 전달함

i.e. 쇼핑몰에서 상품을 검색하면 그 키워드를 받아서 입력을 처리하여 모델과 뷰에 적절하게 전달

Layered Architecture


MVC 패턴과 비슷한 이야기, 다만 레이어(계층) 기준으로 설명
유사 관심사를 레이어로 묶어 수평적으로 분리한 구조

일반적으로 3계층 또는 4계층으로 구성됨
프로젝트에 따라 커스터마이징해서 사용

Presentation

  • 사용자 인터페이스를 제공하는 계층
  • 사용자가 요청을 보냄

Business

  • 비즈니스 로직을 처리하는 계층
  • 사용자의 요청을 처리하고, 데이터를 처리하는 계층

Data (Access)

  • 데이터베이스와 연동하는 계층

U_설명

  • 서브 시스템의 인터페이스를 모델링하는데 이용
  • 각 층이 서비스 집합을 제공하는 계층 집합(추상 머신)으로 시스템을 구성
  • 상이한 계층에 있는 서브 시스템의 점증적 개발을 지원. 계층 인터페이스가 변경될 때, 인접 계층에만 영향을 줌.

U_장점

  • 시스템의 점증적인 개발을 지원한다. 한 계층이 개발됨에 따라, 그 계층에 의해 제공되는 서비스들의 일부를 사용자가 이용할 수 있다.
  • 변경 가능하며 이식 가능하다. 계층의 인터페이스가 변경되지 않는 한, 동등한 다른 계층에 의해 대체될 수 있다.

U_단점

  • 시스템을 구조화하는 것이 어려울 수 있다. 최상위 수준의 사용자가 요구하는 서비스는 그 아래의 여러 계층이 제공하는 서비스에 접근하기 위해 인접 계층을 ‘뚫고 지나가야’ 할 수도 있다. 이런 방식은 시스템의 외부 계층이 바로 그 이전의 계층에 종속되지 않음에 따라 계층 모델을 망가뜨리게 된다.
  • 여러 수준의 명령어 해석이 필요하기 때문에 성능이 문제가 될 수 있다. 최상위 계층으로부터의 서비스 요청은 처리되기 전에 상이한 계층에서 여러 번 해석되어야 한다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.