3계층 아키텍처

menu icon

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) 또는 비-SQL 데이터베이스 서버(예: 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계층 아키텍처를 의미합니다.

3계층 아키텍처 및 IBM Cloud

IBM Cloud는 클라우드로의 여정에서 레거시 3계층 애플리케이션의 현대화에 도움이 되는 제품과 서비스를 제공합니다.

첫 단계 시작하기:

  • 전략, 프로세스 또는 기능에 대한 지원이 필요한지, 아니면 풀서비스 지원을 원하는지와 무관하게, IBM이  애플리케이션 현대화를 어떻게 지원하는지 살펴봅니다.
  • 모두 IBM Cloud Paks에서 번들로 제공되며 클라우드에서 실행할 수 있는 컨테이너화된 미들웨어의 사용을 시작합니다.
  • IBM Cloud for VMware Solutions를 사용하여 기존 VMWare 워크로드를 퍼블릭 클라우드로 손쉽게 마이그레이션합니다.
  • IBM의 애플리케이션 현대화 서비스의 도움을 받아서 진행 중인 디지털 혁신의 일부로서 애플리케이션 현대화 전략을 계획하고 실행합니다.

지금 IBM Cloud 계정으로 시작하세요.