Application(응용프로그램) 설계와 개발에 있어서 가장 대표적인 아키텍처 패턴은 n-tier 아키텍처 패턴으로 알려진 Layered Architecture Pattern(계층화된 아키텍처 패턴)입니다. 이 패턴을 표준으로 많이 사용되고 있습니다. (tier(티어)는 "층" 또는 "단"을 의미합니다.)
계층화된 아키텍처 패턴은 계층(Layer - 레이어)으로 분리하여 계층마다 특정 역할을 하게 합니다. 계층은 논리적, 물리적으로 분리되어 구성됩니다.
계층(Layer)의 수와 역할은 지정된 게 아니지만 응용프로그램의 설계와 개발에 있어 대부분 3-tier(3 계층) 또는 4-tier(4 계층)으로 계층을 구성합니다.
3-tier (3계층)
Presentation Layer(프리젠테이션 레이어), Application Layer(애플리케이션 레이어), Data Layer(데이터 레이어)
3-tier(3 계층)에서 Presentation Layer(프리젠테이션 레이어)를 Client Layer(클라이언트 레이어)로 Application Layer(애플리케이션 레이어)를 Business Layer(비즈니스 레이어)라고도 합니다.
Layer(계층)에 대해 간단하게 설명하겠습니다.
Presentation Layer(프리젠테이션 레이어)
응용프로그램(또는 웹 브라우저)에서 사용자와 상호작용하는 인터페이스(UI)로 데이터를 표시하고 서버와의 통신을 처리하는 계층입니다. 사용자와 상호작용하는 인터페이스 개발을 위해서 응용프로그램은 GUI(Graphical User Interface - 그래픽 사용자 인터페이스) 개발을 위해 Java Swing이나 JavaFX로 개발하고 웹에서는 HTML과 CSS, JavaScript 등을 사용하여 개발합니다.
Application Layer(애플리케이션 레이어)
Presentation Layer(프리젠테이션 레이어)에서 사용자와 상호작용하면서 수집된 데이터를 처리하고 API를 통해 Data Layer(데이터 레이어)와 통신하는 계층입니다. 데이터 처리와 가공을 위해서 응용프로그램은 Java, Perl, Python으로 개발하고 웹에서는 JSP(Java), ASP, PHP 등을 사용하여 개발합니다.
Data Layer(데이터 레이어)
Application Layer(애플리케이션 레이어)에서 처리된 데이터를 저장하고 관리하는 계층입니다. 데이터 관리를 위해 Oracle, MySQL, MariaDB, PostgreSQL, Microsoft SQL Server, MongoDB 등을 사용합니다.
이처럼 계층화된 아키텍처 패턴의 가장 큰 장점은 각 계층 안의 구성 요소와 기능들은 해당 계층과 관련된 처리만 하면 됩니다. 다른 계층에 영향을 주지 않습니다.
이러한 특징을 사용하여 모델을 설계하면 응용프로그램을 효과적으로 개발, 테스트, 유지 관리할 수 있습니다. 그리고 각 계층마다 자체적인 인프라로 실행할 수 있기 때문에 각 계층마다 서로 다른 개발 팀이 동시에 개발할 수 있고 다른 계층에 영향을 주지 않고 수정이나 확장이 가능해집니다. 그리고 Presentation Layer(프리젠테이션 레이어)와 Data Layer(데이터 레이어)가 분리되어 있어 데이터에 대한 보안을 강화할 수 있습니다.
3-tier(3 계층)을 응용프로그램이 아닌 서버 구성에도 적용할 수 있습니다.
웹 서버(Web Server), 애플리케이션 서버(WAS - Web Application Server), 데이터베이스 서버(Database Server)로 분리하여 구성됩니다.
4-tier (4 계층)
Presentation Layer(프리젠테이션 레이어), Business Layer(비즈니스 레이어), Persistence Layer(퍼시스턴스 레이어), Database Layer(데이터베이스 레이어)
4-tier(4 계층)에서는 Application Layer(애플리케이션 레이어)를 Business Layer(비즈니스 레이어), Persistence Layer(퍼시스턴스 레이어)로 더 세분화하고 Data Layer(데이터 레이어)를 Database Layer(데이터베이스 레이어)로 됩니다. 그리고 Persistence Layer(퍼시스턴스 레이어)를 Data Access Layer(데이터 액세스 레이어)라고도 합니다.
Presentation Layer(프리젠테이션 레이어), Business Layer(비즈니스 레이어), Database Layer(데이터베이스 레이어)는 3-tier(3 계층)에서 설명하였으니 Persistence Layer(퍼시스턴스 레이어)에서만 간단하게 설명하겠습니다.
Persistence Layer(퍼시스턴스 레이어)
API를 통해 Database Layer(데이터베이스 레이어)와 통신하여 SQL Query 문으로 데이터를 가져오고 데이터를 처리(데이터 계산 또는 집계)하는 계층입니다. 3-tier(3 계층)의 Business Layer(비즈니스 레이어)에서 데이터베이스와 통신하는 부분이 분리된 겁니다.
만약, SQL Query 문이 Business Layer(비즈니스 레이어)에 있다면 Persistence Layer(퍼시스턴스 레이어)가 Business Layer(비즈니스 레이어)에 포함되게 됩니다.
이처럼 개발 방식에 따라 계층 구성이 작아지거나 커지게 됩니다.
그럼 2-tier(계층)도 간단하게 설명하겠습니다.
2-tier (2 계층)
Presentation Layer(프리젠테이션 레이어), Data Layer(데이터 레이어)
2-tier(2 계층)에서 Business Logic(비즈니스 로직)은 Presentation Layer(프리젠테이션 레이어), Data Layer(데이터 레이어) 또는 나누어져 포함됩니다. 응용프로그램 일부 중에는 Business Logic(비즈니스 로직)이 거의 없거나 단순한 데이터 검색과 계산만으로 처리되는 것도 있습니다. 그래서 간단한 로직들은 Presentation Layer(프리젠테이션 레이어)에 포함됩니다.
Spring Framework(스프링 프레임워크)를 기반으로 개발하면 4-tier(4 계층)으로 개발할 수 있습니다.
참고로 Presentation Layer(프리젠테이션 레이어)를 개발하는 개발자를 front-end(프론트엔드) 개발자라고 합니다. Application Layer(애플리케이션 레이어) 또는 Business Layer(비즈니스 레이어)를 개발하는 개발자를 back-end(백엔드) 개발자라고 합니다.
'Spring > 기초튼튼' 카테고리의 다른 글
Spring Framework Web MVC(Model, View, Controller) Pattern - 스프링 프레임워크 웹 MVC(모델, 뷰, 컨트롤러) 패턴 (0) | 2022.06.13 |
---|---|
MVC(Model, View, Controller) Pattern - 모델, 뷰, 컨트롤러 패턴 (0) | 2022.06.05 |