안녕하세요. 공유민입니다.
3계층 구조에 대해 정리하였습니다.
3계층 구조(3 Tier Architecture)란 프레젠테이션 로직(클라이언트, 사용자 인터페이스), 비즈니스 로직, 데이터베이스 로직을 각각 다른 플랫폼 상에서 구현한 것이다.
설명전에 용어에 대해 간단히 구분을 해보자.
계층(Tier) : 컴포넌트들의 물리적인 분리를 뜻한다.
층(Layer) : 컴포넌트들의 논리적인 분리를 뜻한다.
3계층을 바로 알아보기 전에 1, 2, 3계층 구조를 순서대로 알아보자.
1계층 구조(1 Tier)
위 그림은 한 클라이언트 컴퓨터에 3가지 로직을 다 구현한 것을 표현한 그림이다. 한 클라이언트 서버에서 모든걸 지원하므로 새로운 컴퓨터를 사용하고자 할 경우 모두 새로 변경해야 한다는 단점(한가지 로직을 바꾸려면 다른 로직의 변경도 필요함)이 있다.
2계층 구조(2 Tier)
Client Tier와 Data Tier로 2개의 물리적 컴퓨터로 구분된다. 클라이언트와 서버를 분리하여 어플리케이션과 데이터베이스가 분리되어있기 때문에 데이터베이스의 변경이 편리한 장점을 가지고 있다.
3계층 구조(3 Tier)
3계층 구조에서 각 계층은 물리적으로도 독립적이며 각 계층의 변경이 다른 계층에 의존하지 않는다.
1. 프레젠테이션(클라이언트) 계층
프레젠테이션 계층은 응용 프로그램의 최상위에 위치하고 있는데 이는 서로 다른 층에 있는 데이터 등과 커뮤니케이션을 한다.
- 사용자 인터페이스를 지원한다. (인터넷 브라우저의 정적인 데이터를 제공한다.)
- 이 계층은 GUI, 또는front-end도 불린다.
- 비즈니스로직이나 데이터관리코드를 포함해서는 안된다.
- 주로 웹서버를 뜻한다(물리적 : WEB서버)
ex) HTML, javascript, CSS, image
2. 애플리케이션 계층
이 계층은 비즈니스 로직 계층 또는 트랜잭션 계층이라고도 하는데, 비즈니스 로직은 워크스테이션으로부터의 클라이언트 요청에 대해 마치 서버처럼 행동한다. 차례로 어떤 데이터가 필요한지를 결정하고, 메인프레임 컴퓨터 상에 위치하고 있을 세 번째 계층의 프로그램에 대해서는 마치 클라이언트처럼 행동한다.
- 정보처리의 규칙을 가지고 있다.(동적인 데이터를 제공한다)
- middleware 또는 back-end로 불린다.
- 프레젠테이션코드나 데이터관리 코드를 포함해서는 안된다.
-주로 어플리케이션 서버를 뜻한다(물리적 : WAS서버)
ex) Java EE, ASP.NET, PHP
3. 데이터 계층
데이터 계층은 데이터베이스와 그것에 액세스해서 읽거나 쓰는 것을 관리하는 프로그램을 포함한다. 애플리케이션의 조직은 이것보다 더욱 복잡해질 수 있지만, 3계층 관점은 대규모 프로그램에서 일부분에 관해 생각하기에 편리한 방법이다.
-데이터베이스를 주로 뜻한다.
-DB 또는 File System를 접근 및 관리한다.
-back-end라고도 불린다.
-주로 DB서버를 뜻한다(물리적 : DB서버)
ex) MySQL DB, Oracle DB
3계층구조를 사용하면 각 계층별로 웹디자이너, 소프트웨어엔지니어, DB관리자가 역할분담을 하여 일을 효율적으로 할 수 있다.
회사 규모 및 사용자의 증가에 따라서 1, 2, 3계층 구조를 고려해야 한다.
(물론 비용은 3계층으로 갈수록 많이 든다.)
이 3계층 구조를 확장해서 다른 상황에서도 적용 가능하다.
예를들어 API 구조를 DB 부분 / 개발자 계층 함수 / 사용자 계층 함수(API)
도움이 되셨다면 공감 부탁드립니다.
감사합니다.