일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Spring Boot
- devops
- 맛집
- jsp
- Oracle
- ReactJS
- java
- IntelliJ
- db
- JVM
- Spring Batch
- AWS
- tool
- Design Patterns
- elasticsearch
- Git
- Web Server
- ubuntu
- php
- jenkins
- Gradle
- 요리
- linux
- springboot
- it
- redis
- laravel
- Spring
- MySQL
- javascript
- Today
- Total
아무거나
3 Tier Architecture(3계층 구조) 본문
3계층 구조(3 Tire Architecture)란 프레젠테이션 로직(클라이언트, 사용자 인터페이스), 비즈니스 로직, 데이터베이스를 각각 다른 플랫폼 상에서 구현한 것이다.
우리가 보편적으로 개발하는 웹프로그램은 최소 3tier이상, 4tier로도 개발을 할 수 있다. 보통 프레젠테이션 로직은 UI를 구성하는 document 페이지(ex-html)정도로 생각할 수 있고, 비즈니스로직은 웹서버 즉 iis, apache... 등에서 돌아가는 서비스로 보면되며 마지막은 데이터베이스가 된다.
그래서 보통 웹은 3tier로 가져간다. 특별한 경우에는 데이터 트랜잭션 등의 용도로 미들웨어를 웹 서버와 데이터베이스서버 사이에 두는 경우도 있다. 이런 구조는 데이터 작업의 부분적인 프로세스를 미들웨어로 분산시키는 4tier 구조이다.
3계층을 바로 보기전에 1, 2, 3계층 구조를 순서대로 알아보자.
[ 1계층 구조(1 Tier) ]
1계층 구조는 한 컴퓨터에 3가지 로직을 다 구현한 것이다. 그러므로 한 가지 로직을 바꾸려면 다른 로직의 변경도 필요한 단점이 있다.
[ 2계층 구조(2 Tier) ]
Client Tier와 Data Tier로 2개의 물리적 컴퓨터로 구분되며 클라이언트와 서버를 분리하여 어플리케이션과 데이터베이스가 분리되어있기 때문에 데이터베이스의 변경이 편리한 장점을 가지고 있다.
[ 3계층 구조(3 Tier) ]
3계층은 각 계층별로 물리적으로 독립적이며 각 계층의 변경이 다른 계층에 의존하지 않는다.
(1) 프레젠테이션(클라이언트) 계층
- 사용자 인터페이스를 지원한다. (인터넷 브라우저의 정적인 데이터를 제공한다.)
- 이 계층은 Front-end라고도 불린다.
- 비즈니스로직이나 데이터관리 코드를 포함해서는 안된다.
(2) 애플리케이션 계층
- 정보처리의 규칙을 가진다. (동적 데이터 제공)
- middleware 또는 back-end라고도 불린다.
- 프레젠테이션코드나 데이터관리 코드를 포함해서는 안된다.
(3) 데이터 계층
- 데이터베이스를 주로 뜻한다.
- DB 또는 File System 를 접근 및 관리한다.
- 주로 DB서버를 뜻한다.
[장단점 비교표]
|
2 Tier |
3 Tier |
개발 편의성 측면 |
프로그래밍 개발에 용이함 |
프레젠테이션 로직과 비즈니스/데이터접근 로직을 별도로작성하므로 2-Tier에비해 개발이 불편 함 |
재사용성 측면 |
모든 로직이 클라이언트에 존재하므로 내용 변경시에 모든 로직을 재개발 하여야 하므로 재사용성 측면에 좋지않다. |
동일한 비즈니스 로직을 필요로 하는 프레젠테이션 로직을 다양하게 구현할 수 있다. 비즈니스 로직을 모듈화하여 클라이언트 / 서버 환경과 웹 환경에서 동시에 사용 가능 |
성능 측면 |
동시 사용자 수가 증가 함에 따라 성능이 급격하게 저하 된다. |
동시 사용자 수가 증가해도 일정한 응답속도와 처리량을 보장한다. |
자원 활용 측면 |
H/W 자원(CPU, 메모리 등)과 데이터베이스 자원을 비효율적으로 사용한다. |
미들웨어에서 부하 분산, 큐잉 메커니즘을 통해 효율적으로 자원을 활용한다. |
시스템 관리 측면 |
모니터링 및 관리가 용이하지 못하다. |
처리되고 있는 애플리케이션 정보, 프로그램별 처리 건수 등 다양한 모니터링이 가능하여 관리 및 모니터링에 용이하다. |
* 결론적으로 3 Tier 구조를 사용하면 각 계층별로 역할분담을하여 일을 효율적으로 할 수 있다. 또한 문제가 생겨도 서로 각각의 계층을 갖고 있으므로 문제되는 부분만 해결해주면 된다. -> 회사 규모 및 사용자의 증가에 따라서 Tier 구조를 고려해야 한다.
'IT > 기타 IT지식' 카테고리의 다른 글
Rest API 정의 (0) | 2019.03.12 |
---|---|
웹 서비스 캐시 전략 (0) | 2019.03.07 |
oauth와 sso(싱글사인온)의 차이 (0) | 2019.03.07 |
티스토리 소스코드 플러그인 사용 ( 업로드 필요없음 ) (0) | 2018.06.10 |
URL과 URI의 의미와 차이점 (0) | 2018.06.06 |