본문 바로가기

Develop/CS

[백엔드 개발자 면접 단골 질문 뿌시기 - 1] 3계층 아키텍처(3 Tier- Architectur)가 뭘까?

MSA 환경에 개발을 하는 회사에서는 아마 면접에서 자주 물어보는 질문일 것이라고 생각이 들어 

남겨 놓는다 🤣

 

 

 3계층 아키텍처란?

 

IBM에서는 이렇게 정의하고 있다.

 

3계층 아키텍처(3 Tier-Architectur)는 애플리케이션을 프레젠테이션 계층 또는 사용자 인터페이스, 데이터가 처리되는 애플리케이션 계층 그리고 애플리케이션과 관련된 데이터가 저장 및 관리되는 데이터 계층이라는 3개의 논리적이고 물리적인 컴퓨팅 계층으로 구성하는 확립된 소프트웨어 애플리케이션 아키텍처입니다.

 

정의는 알았으니 각 계층에 대해서 상세히 알아보자면 🤔


 

3Tier Architecture - logianalytics.com

 

 

프리젠테이션 계층

- 사용자가 애플리케이션과 상호작용하는 애플리케이션의 사용자 인터페이스 및 커뮤니케이션 계층

- 웹 브라우저, 데스크탑 애플리케이션 또는 그래픽 사용자 인터페이스(GUI)에서 실행

- 일반적으로 HTML,CSS,JS를 사용하여 개발 ( React, Angular, Ember, Aurora , Vue , Svelte  프레임워크 사용)

 

애플리케이션 계층

- 논리 계층 또는 중간 계층이라고도 불리며 애플리케이션의 핵심

- 사용자 입력을 처리하는 데 사용되는 비즈니스 논리를 수용하는 중간 계층

-  일반적으로 Java,C++,Python,Ruby 개발

 

데이터 계층

- 애플리케이션 데이터 대한 액세스를 제공하는 데이터베이스 관리 시스템 계층

- MSSQL,MYSQL,ORACLE,PostgreSQL

 

 

3계층 아키텍처의 간단한 예

 

CGV 사이트에서  영화를 예매한다고 가정하면

 

프레젠테이션 계층

- CGV 사이트

애플리케이션 계층

- CGV 사이트에서 영화를 예매한 정보들이 애플리케이션 계층에 넘어와서 비지니스 로직을 거쳐

데이터베이스 계층

- 예매 정보를 저장 후 결과 값을 애플리케이션으로 반환

 

3계층 아키텍처를 사용했을 경우 얻을 수 있는 장점단점

 

장점

1.각 계층을 담당하는 팀들을 구성하여 업무 분담이 가능하다. (업무 효율성 증가)
2.프레젠테이션 계층과 데이터 계층끼리 직접 통신할 수 없다. (보안성 강화)
3.한 계층의 가동 중단은 다른 계층의 성능에 별로 영향을 끼치지 않는다. (안정성 향상)
4.필요에 따라 임의의 계층을 다른 계층과는 독립접으로 확장할 수 있다.  (확장성 개선)

단점

1. 많아진 계층으로 인해 그만큼 많은 관리 포인트가 생긴다. (비용 증가)

2. 장애가 발생하는 포인트가 늘어난다. (비용 증가)


따라서 비용이 그만큼 많이 발생하게 되므로 서비스 규모 및 증가에 따라
계층 구조 및 설계가 고려되어야 한다.


Reference

https://www.ibm.com/kr-ko/topics/three-tier-architecture

 

3계층 아키텍처란? | IBM

3계층 아키텍처는 애플리케이션을 프리젠테이션 계층, 애플리케이션 계층 및 데이터 계층으로 분리합니다.

www.ibm.com

 

 

https://insightsoftware.com/blog/5-benefits-of-a-3-tier-architecture/

 

5 Benefits of a 3-Tier Architecture

To keep up with the pace of change required to deliver a compelling software product and to leverage emerging technologies, a microservices or three-tier architecture provides numerous benefits. It allows a developer the opportunity to extend, modularize,

insightsoftware.com

 

반응형