Tag Archives: 2-Tier Architecture

Client-server pattern은 TCP/IP를 통해 데이터를 주고 받는 이메일, 웹하드 등이 주로 이용하는 아키텍쳐

클라이언트-서브 아키텍쳐 패턴(Client-Server Architectural pattern)은 서버와 다수의 클라이언트로 구성된 2-Tier Architecture입니다.

서버는 다수의 클라이언트 컴포넌트에게 서비스를 제공하고, 클라이언트는 서버로부터 서로 약속한 서비스를 받는 구조입니다. 따라서, 이 구조에서는 서버가 클라이언트로부터 지속적으로 요청을 받아 처리하도록 설계되어져 있습니다.

 

Client-server pattern은 TCP/IP를 통해 데이터를 주고 받는 이메일, 웹하드 등이 주로 이용하는 아키텍쳐

응용분야로는 TCP/IP를 기반으로하는 Client-Server 소프트웨어로 이메일, 문서 공유 웹하드, 홈뱅킹 등이 있습니다.

클라이언트-서브 아키텍쳐 패턴(Client-Server Architectural pattern)은 클라이언트가 요청할 수 있는 일련의 서비스를 모델링 할 수 있다는 장점이 있습니다. 또한 이 아키텍쳐는 일반적으로 서버에서 별도의 스레드로 구현되며, 프로세스간 통신의 프로토콜이 달라 오버헤드가 발생할 수 있다는 단점이 있습니다.

2-Tier 아키텍쳐와 3-Tier 아키텍쳐의 다른점

아키텍쳐를 디자인하다 보면 2-Tier이냐 3-Tier이냐에 대한 질문을 까끔 듣습니다.

이는 보통 Java개발자들에게서 많이 듣는 질문이기도 한데요. 왜냐하면 J2EE 어플리케이션이 2-Tier 또는 3-Tier로 구분되기 때문입니다.

아래는 2-Tier 아키텍쳐의 사례입니다.

2-Tier 아키텍쳐와 3-Tier 아키텍쳐의 다른점

위에서 보시면 클라이언트가 비즈니스로직과 데이터베이스로직, 그리고 UI까지 다 가지고 있는 구조라고 할 수 있습니다. 위의 그림상에서 보면 다음의 두개 티어(Tier)로 구성되어져 있다고 보면 맞습니다.

  • 클라이언트 어플리케이션 (Client Tier)
  • 데이터베이스 (Data Tier)

이 아키텍쳐의 장점은 아래와 같습니다.

  • 유지보수가 쉽다
  • 커뮤니케이션이 빠르다

단점이라고 한다면

  • 사용자 수가 증가하면 어플리케이션의 퍼포먼스도 떨어진다
  • 비용 대비 비효율적이다

3-Tier 아키텍쳐(3-Tier Architecture)는 우리가  이미 많이 접해 본 구조라고 할 수 있는데 그 구성을 보면 아래와 같습니다.

2-Tier 아키텍쳐와 3-Tier 아키텍쳐의 다른점

즉, 아래와 같은 3단계 레이어로 구성이 됩니다.

  • 클라이언트 레이어
  • 비즈니스 레이어
  • 데이터 레이어

장점이라고 한다면 다음과 같습니다.

  • 가볍우면서 고성능의 컴포넌트 구현 가능
  • 확장성이 좋다
  • 퍼포먼스가 좋다 – 각각의 티어가 캐시 개념을 가져갈 수 있어 성능 개선 가능
  • 재사용 가능하다
  • 데이터 정합을 개선할 수 있다
  • 보안을 강화 할 수 있다 – 클라이언트가 DB를 직접 건드리지 못하므로
  • 비즈니스로직과 UI를 분리할 수 있다
  • 비즈니스를 세분화하여 쪼갤 수 있다
  • 유지보수가 쉽다
  • 관리하기가 쉽다
  • 각각의 컴포넌트의 의존도를 낮출 수 있다

단점이라면 복잡도가 늘어난다는 것?

요즘은 클라이언트에서 DB에 직접 접속하여 어플리케이션을 구현하는 경우가 거의 없으므로 3-Tier 내지는 4-Tier로 소프트웨어가 구현되고 있다고 보는 것이 맞을 것 같습니다.