MSA 환경에 개발을 하는 회사에서는 아마 면접에서 자주 물어보는 질문일 것이라고 생각이 들어
남겨 놓는다 🤣
3계층 아키텍처란?
IBM에서는 이렇게 정의하고 있다.
3계층 아키텍처(3 Tier-Architectur)는 애플리케이션을 프레젠테이션 계층 또는 사용자 인터페이스, 데이터가 처리되는 애플리케이션 계층 그리고 애플리케이션과 관련된 데이터가 저장 및 관리되는 데이터 계층이라는 3개의 논리적이고 물리적인 컴퓨팅 계층으로 구성하는 확립된 소프트웨어 애플리케이션 아키텍처입니다.
정의는 알았으니 각 계층에 대해서 상세히 알아보자면 🤔
프리젠테이션 계층
- 사용자가 애플리케이션과 상호작용하는 애플리케이션의 사용자 인터페이스 및 커뮤니케이션 계층
- 웹 브라우저, 데스크탑 애플리케이션 또는 그래픽 사용자 인터페이스(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
https://insightsoftware.com/blog/5-benefits-of-a-3-tier-architecture/
'Develop > CS' 카테고리의 다른 글
[백엔드 개발자 면접 단골 질문 뿌시기 - 3] 스레드(thread)와 프로세스(process)의 차이를 설명해 줄 수 있어요? 😲 (122) | 2023.12.28 |
---|---|
[백엔드 개발자 면접 단골 질문 뿌시기 - 2] JVM(Java Virtual Machine) 에 대해 설명 하세요 😤 (77) | 2023.12.14 |