3계층 아키텍처란?
애플리케이션을 3개의 논리적 및 물리적 컴퓨팅 계층으로 분리하는 3계층 아키텍처는 기존의 클라이언트 서버 애플리케이션을 위한 주요 소프트웨어 아키텍처입니다.
검은색과 파란색 배경
3계층 아키텍처란?

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

3계층 아키텍처의 주요 장점은 각 계층이 자체 인프라에서 실행되기 때문에 각 계층이 별도의 개발 팀에 의해 동시에 개발될 수 있으며 다른 계층에 영향을 주지 않고 필요에 따라 업데이트되거나 확장될 수 있다는 점입니다.

수십 년 동안 3계층 아키텍처는 클라이언트-서버 애플리케이션의 지배적인 아키텍처였습니다. 현재 대부분의 3계층 애플리케이션은 현대화 대상이며 현대화에는 클라우드 네이티브 기술(예: 컨테이너마이크로서비스)이 사용됩니다. 또한 이러한 3계층 애플리케이션은 클라우드로의 마이그레이션 대상이기도 합니다.

3계층 상세 설명

프리젠테이션 계층

프레젠테이션 계층은 일반 사용자가 애플리케이션과 상호작용하는 애플리케이션의 사용자 인터페이스 및 커뮤니케이션 계층입니다. 주요 목적은 정보를 표시하고 사용자로부터 정보를 수집하는 것입니다. 이 최상위 레벨 계층은 예를 들어 웹 브라우저, 데스크탑 애플리케이션 또는 그래픽 사용자 인터페이스(GUI)에서 실행될 수 있습니다. 웹 프리젠테이션 계층은 일반적으로 HTML, CSS 및 JavaScript를 사용하여 개발됩니다. 데스크탑 애플리케이션은 플랫폼에 따라 다양한 언어로 작성될 수 있습니다.

애플리케이션 계층

논리 계층 또는 중간 계층이라고도 하는 애플리케이션 계층은 애플리케이션의 핵심입니다. 이 계층에서는 특정 비즈니스 규칙 세트인 비즈니스 논리를 사용하여 프레젠테이션 계층에서 수집된 정보가 처리됩니다(경우에 따라 데이터 계층의 다른 정보와 관련하여 처리됨). 또한 애플리케이션 계층은 데이터 계층의 데이터를 추가, 삭제 또는 수정할 수도 있습니다. 

애플리케이션 계층은 일반적으로 Python, Java, Perl, PHP 또는 Ruby를 사용하여 개발되며,  API 호출을 사용하여 데이터 계층과 통신합니다. 

데이터 계층

종종 데이터베이스 계층, 데이터 액세스 계층 또는 백엔드라고도 불리는 데이터 계층은 애플리케이션이 처리하는 정보가 저장 및 관리되는 곳입니다. 이는 관계형 데이터베이스 관리 시스템 (예:  PostgreSQL, MySQL, MariaDB, Oracle, DB2, Informix 또는 Microsoft SQL Server) 또는  NoSQL 데이터베이스 서버(예: Cassandra,  CouchDB 또는  MongoDB)일 수 있습니다. 

3계층 애플리케이션에서는 모든 통신이 애플리케이션 계층을 통과합니다. 프레젠테이션 계층과 데이터 계층은 서로 간에 직접 통신할 수 없습니다.

계층 대 레이어

3계층 아키텍처에 대한 논의에서,  레이어 는 종종  계층과 혼동되어 잘못 사용됩니다(예: 프레젠테이션 레이어' 또는 '비즈니스 논리 레이어') .

이들은 동일하지 않습니다. '레이어'는 소프트웨어의 기능적 분할을 의미하지만, '계층'은 다른 분할과 구분된 인프라에서 실행되는 소프트웨어의 기능적 분할을 의미합니다. 예를 들어, 전화기의 연락처 앱은  3개 레이어의  애플리케이션이지만  단일 계층 애플리케이션입니다.  세 개의 레이어가 모두 전화기에서 실행되기 때문입니다.

레이어가 계층과 동일한 이점을 제공할 수 없으므로, 이 차이점은 중요합니다.

3계층 아키텍처의 장점

다시 말하지만, 3계층 아키텍처의 주요 장점은 기능의 논리적 및 물리적 분리입니다. 각 계층은 기능적 요구 사항에 가장 적합한 별도의 운영 체제와 서버 플랫폼(예: 웹 서버, 애플리케이션 서버, 데이터베이스 서버)에서 실행될 수 있습니다. 그리고 각 계층이 하나 이상의 전용 서버 하드웨어 또는 가상 서버에서 실행되므로, 다른 계층에 영향을 주지 않고도 각 계층의 서비스를 사용자 정의하고 최적화할 수 있습니다. 

기타 장점(단일 또는 2계층 아키텍처와 비교할 경우)에는 다음이 포함됩니다.

  • 빠른 개발: 각 계층이 서로 다른 팀에서 동시에 개발될 수 있으므로, 기업은 애플리케이션을 보다 빠르게 시장에 출시할 수 있으며 프로그래머는 각 계층에 최신 및 최상의 언어와 툴을 사용할 수 있습니다.

  • 개선된 확장성: 필요에 따라 어느 계층이든 다른 계층과 독립적으로 확장할 수 있습니다.

  • 개선된 신뢰성: 한 계층의 가동 중단은 다른 계층의 가용성 또는 성능에 별로 영향을 미치지 않습니다.

  • 개선된 보안: 프레젠테이션 계층과 데이터 계층이 직접 통신할 수 없으므로, 잘 설계된 애플리케이션 계층은 내부 방화벽의 일종으로 작동하여 SQL 인젝션 및 기타 악의적 공격을 방지할 수 있습니다.
웹 개발의 3계층 애플리케이션

웹 개발에서 계층은 서로 다른 이름을 갖지만 유사한 기능을 수행합니다.

  • 웹 서버는 프레젠테이션 계층이며 사용자 인터페이스를 제공합니다. 이는 일반적으로 사용자가 장바구니에 상품을 추가하거나 지불 정보를 추가하거나 계정을 작성하는 전자상거래 사이트와 같은 웹 페이지 또는 웹 사이트입니다. 콘텐츠는 정적 또는 동적일 수 있으며, 이는 일반적으로 HTML, CSS 및 Javascript를 사용하여 개발됩니다.

  • 애플리케이션 서버 는 사용자 입력을 처리하는 데 사용되는 비즈니스 논리를 수용하는 중간 계층에 해당합니다. 전자상거래 사례를 계속하자면, 이는 인벤토리 데이터베이스를 조회하여 제품 가용성을 리턴하거나 고객 프로파일에 세부사항을 추가하는 계층입니다. 이 레이어는 종종 Python, Ruby 또는 PHP를 사용하여 개발되며, 예를 들어 e Django, Rails, Symphony 또는 ASP.NET 등의 프레임워크를 실행합니다.

  • 데이터베이스 서버 는 웹 애플리케이션의 데이터 또는 백엔드 계층입니다. 이 서버는 데이터베이스 관리 소프트웨어(예: MySQL, Oracle, DB2 또는 PostgreSQL)에서 실행됩니다.
기타 다중 계층 아키텍처

3계층 아키텍처는 쉽게 가장 널리 채택되는 다중 계층 애플리케이션 아키텍처이지만, 작업 또는 연구에서 접할 수 있는 다른 아키텍처도 있습니다.

2계층 아키텍처 

2계층 아키텍처는 프레젠테이션 계층과 데이터 계층으로 구성되는 원래의 클라이언트-서버 아키텍처입니다. 비즈니스 논리는 프레젠테이션 계층, 데이터 계층 또는 둘 다에 상주합니다. 2계층 아키텍처에서 프레젠테이션 계층 그리고 그에 따라 일반 사용자도 데이터 계층에 직접적으로 액세스할 수 있으며, 비즈니스 논리는 제한되는 경우가 많습니다. 사용자가 연락처 데이터를 입력하고 검색할 수 있는 간단한 연락처 관리 애플리케이션이 2계층 애플리케이션의 한 예입니다. 

N계층 아키텍처

다중 계층 아키텍처라고도 불리는 N계층 아키텍처는 둘 이상의 계층을 갖는 모든 애플리케이션 아키텍처를 의미합니다. 그러나 4개 이상의 계층을 둔 애플리케이션은 거의 없습니다. 추가 계층은 별로 이득이 없으며 애플리케이션 속도를 늦추고 관리와 실행에 더 많은 비용이 들 수 있기 때문입니다. 따라서, n계층 아키텍처 및 다중 계층 아키텍처는 일반적으로 3계층 아키텍처를 의미합니다.

관련 솔루션
IBM® Cloud Paks

IBM에서 인증한 통합된 개방형의 컨테이너화된 솔루션인 Red Hat OpenShift 소프트웨어에서 실행되는 IBM® Cloud Pak 솔루션을 사용하여 보다 빠르게 클라우드로 이동합니다.

IBM® Cloud Paks 살펴보기
IBM Cloud® for VMware Solutions

IBM® Cloud를 사용하여 VMware 워크로드와 애플리케이션을 원활하게 현대화합니다.

IBM® Cloud for VMware Solutions 살펴보기
IBM® Cloud Pak for Applications

앱을 현대화하고 신규 앱을 구축하며 비용을 절감하고 ROI를 극대화합니다.

IBM® Cloud Pak for Applications 살펴보기
자원 애플리케이션 현대화란?

애플리케이션 현대화의 정의, 일반적인 장점과 과제, 그리고 이를 시작하는 방법을 살펴봅니다.

관계형 데이터베이스란 무엇일까요?

관계형 데이터베이스의 작동 원리와 이를 다른 데이터 스토리지 옵션과 비교한 결과를 알아봅니다.

클라우드 네이티브란 무엇일까요?

클라우드 네이티브 애플리케이션의 정의와 함께, 이를 이용하여 기업 내에서 혁신과 속도를 어떻게 추진할 수 있는지 알아봅니다.

다음 단계

IBM® Cloud는 클라우드로의 여정에서 레거시 3계층 애플리케이션의 현대화에 도움이 되는 제품과 서비스를 제공합니다.전략, 프로세스 또는 기능에 대한 지원이 필요한지, 아니면 풀서비스 지원을 원하는지와 무관하게, IBM이 애플리케이션 현대화를 어떻게 지원하는지 살펴보세요.모두 IBM Cloud Paks에서 번들로 제공되며 어느 클라우드에서나 실행할 수 있는 컨테이너화된 미들웨어의 사용을 시작합니다.

IBM Cloud Paks 자세히 보기