-
디자인 패턴과 아키텍쳐Programming/TIL 2020. 3. 7. 16:45
"MVC패턴을 적용하였고 3tier 구조로 되어있는 프레임워크를 갖추고 있다"라는 기술설명서는 우리나라에서 흔하게 접해볼 수 있는 애플리케이션 설명문이다.
아마 이 MVC와 3Tier는 엔터프라이즈급 산업에서는 가장 많이 채택되고 있는 구조일 것이다.
사실, 배울때에는 2개의 개념이 비슷하게 와 닿았다.
MVC로 설명하나 3Tier로 설명하나 같은 말 같은데, 굳이 왜 두개의 개념을 다 써주는 걸까?응.. 그렇다.. 이유가 있다.
한번에 써주는 데는 두 개념이 소프트웨어를 정의하는 관점이 다르기 때문이다.Software Achitecture
위키피디아에 설명된 SW 아키텍쳐에 관한 설명을 보면, 청사진으로 비유해 두었다.
그만큼 SW 아키텍쳐는 프로그램에 있어 기초이자 근본이다.
그리고 설계단계에서 어떤 아키텍쳐를 선택하여 설계를 진행할 것인지는 결국에는 프로그램의 전체적인 방향성, 비용과 시간에 직결된 문제이기 때문에 매우 신중하게 결정되고 진행되어야 한다.
SW 아키텍쳐는 프로그램에 있어 기초이자 근본으로 아키텍쳐를 선택한다는 것은 프로그램의 전체적인 방향성, 비용과 직결된 문제이다.
Layering Model : Multi-tire Architecture 또는 n-tier Architecture
계층 모델은 비즈니스 로직을 완전히 분리하여 클라이언트와 DB 시스템 사이에 배치한 클라이언트-서버 시스템의 일종이다. 예를 들어 사용자와 데이터베이스간의 데이터 요구 서비스에 미들웨어를 이용하는 것을 들 수 있다. 일반적으로는 3-tier 구조가 널리 쓰인다.
3-tier의 분류를 보고 n-tier architecture 또는 multi architecture 라고하여 software architecture를 정의하여 구분을 하기도 하지만, client - server architecture 라고 분류하기도 하다.
해당 분류에대해서는 서적마다 분류체계마다 다르기도 하다.
통상적으로 SEI (Software Engenieering Institute) 분류 기준으로 설명이 되어있기도 하다.* 비즈니스 로직 : 중복적으로 호출되는 업무와 관련된 메서드
Disign Pattern
프로그램의 규모가 커질수록, 진행해 나갈 수록 구현화 하는데 다양한 문제들을 직면할 수 있다.
이미 지난 프로그래밍 역사속에서 SW 설계에 직면한 다양한 문제들을 겪어왔었고
이를 효율적으로 적용할 수 있는 해결책을 유형별로 패턴화 한것이 바로 "디자인 패턴”이다.SW 개발 과정에서 발생하는 문제에 대한 일반적이고 재사용 가능한 해결책
프로젝트마다 띄는 특성은 다르겠지만 기본적으로 디자인 패턴에 대한 이해도가 깊으면
설계시, 개발시 만나는 문제를 좀 더 “효율적”으로 해결 할 수 있는 아주 좋은 방법이다.
필요한 디자인패턴을 채택해서 적재적소에 사용하는것 또한 능력이다라고 생각한다.디자인패턴은 SW 개발 과정에서 발생하는 문제에 대한 일반적이고 재사용 가능한 개발 방법론
3-Tier Architecture
3-Tier 란 사용자 인터페이스, 비즈니스 로직, 데이터베이스를 말하며 이들을 각각 독립된 모듈로 개발하고 유지하는 구조로, 일반적으로 이들은 각각 다른 플랫폼 상에서 구동된다. "3tier Architecture” 라고 명명한 것을 보면 알 수 있듯이 3 tier는 아키텍처적인 관점으로 봐라봐야 한다.
각 레이어는 선형적인 구조로 설게되어있으며, 직접적인 하위 레이어만 알면 된다.
즉, 프레젠테이션 계층은 직접적으로 데이터계층과 통신하지 않는다.
다시말해, 프레젠테이션/데이터 각 계층은 반드시 미들웨어인 비지니스 계층을 통해서만 통신이 가능하다.- Presentation Layer
: 프레젠테이션 계층은 응용 프로그램의 최상위에 위치하고 있는데 이는 서로 다른 층에 있는 데이터 등과 커뮤니케이션을 한다.- Service Layer
: 이 계층은 서비스 계층이라고 하는데, 비즈니스 로직은 워크스테이션으로부터의 클라이언트 요청에 대해 마치 서버처럼 행동한다. 그것은 차례로 어떤 데이터가 필요한지를 결정하고, 메인프레임 컴퓨터 상에 위치하고 있을 세 번째 계층의 프로그램에 대해서는 마치 클라이언트처럼 행동한다.- Repository Layer
: 데이터 계층은 데이터베이스와 그것에 액세스해서 읽거나 쓰는 것을 관리하는 프로그램을 포함한다.
애플리케이션의 조직은 이것보다 더욱 복잡해질 수 있지만, 3계층 관점은 대규모 프로그램에서 일부분에 관해 생각하기에 편리한 방법이다.MVC Design Pattern
MVC 디자인 패턴은 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.
MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 모델과 뷰 사이의 상호동작을 관리한다.
- Model
: 모델(model)이란 어떠한 동작을 수행하는 코드를 말한다. 표시 형식에 의존하지 않는 데이터 자체.- View
: 사용자에게 실제로 보여지는 부분, 요청에 따른 처리 결과를 받아서 보여주는 영역- Controller
: 컨트롤러는 사용자의 액션에 응답하는 컴포넌트, 클라이언트로 부터 받은 요청을 Model에 전달하고 로직에 따라 실행한 결과를 View에 전달하는 중재자 역할Architecture vs Disign Pattern
아키텍쳐는 SW 시스템의 전체적인 방향, 비용, 시간을 고려한 근간이되는 구조, 구조를 만드는 방법, 구조의 문서화를 말하고,
디자인패턴은 그러한 구조 속에서 SW 개발을 할 때, 일반적으로 발생했던 문제에 대한 효율적인 솔루션을 SW의 특성에 따라 패턴화 한 것이다.
'Programming > TIL' 카테고리의 다른 글
Spring과 Spring Boot (0) 2020.11.04 OOP(Object Oriented Programming) (0) 2020.11.02 프레임워크 vs 라이브러리 (0) 2020.02.12 Domain Object, DAO, DTO, (0) 2020.02.12 MVC 패턴과 Layerd Architecture (0) 2020.02.12