본문 바로가기

About/Docker

웹 3계층 시스템 아키텍쳐

다음 도서를 참고하여 작성하였습니다.

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=166082298 

 

완벽한 IT 인프라 구축을 위한 Docker

컨테이너 기술을 사용한 애플리케이션 실행 환경 플랫폼인 ‘Docker’를 사용하여 인프라를 구축하기 위한 입문서. 제2판에서는 Docker의 새로운 기능 및 명령과 더불어, 멀티호스트 환경에서 실행

www.aladin.co.kr


 

 애플리케이션을 가동시키려면 여러 개의 서버에 기능과 역할을 분할하여 인프라의 전체 구성을 정합니다.

대규모 웹 시스템의 경우 몇 개의 서브 시스템/기능으로 나누어 시스템을 개발하는 경우가 많기 때문에 애플리케이션 개발 기술 및 플랫폼 기술에 정통한 IT 아키텍트를 중심으로 인프라의 처리 방식을 결정합니다.

 

웹 3계층 아키텍처

 웹 3계층 아키텍처는 웹 애플리케이션의 대표적인 인프라 아키텍처 중 하나로, 웹 시스템의 서버들을 역할별로 다음 3개로 나누는 설계 사상을 말합니다.

 

프론트 서버

 클라이언트의 웹 브라우저가 보낸 HTTP 요청을 받아, HTTP 응답을 반환하는 서버 기능을 가집니다. 이 서버 기능은 웹 프론트 서버 또는 그냥 웹 서버라고 합니다.

 웹 서버의 기능은 미들웨어로 구축하는 경우도 있으며, 오픈소스인 Nginx, Microsoft의 IIS(Internet Information Services) 등이 있습니다. 요청의 처리가 메인 업무 이므로 부하가 높은 경우는 스케일러블하게 처리 대수를 늘리고, 로드밸런서 등과 같은 기기를 사용하여 부하분산을 합니다.

 

애플리케이션 서버

 애플리케이션 서버는 업무 처리를 실행하는 서버입니다. 결제 처리, 수주 처리 등 애플리케이션의 처리를 실행하는 프로그램의 실행 환경이 됩니다. 애플리케이션 서버 기능도 프론트 서버 기능과 마찬가지로 미들웨어로 구축하는 경우도 있습니다.

 

데이터베이스(DB) 서버

  데이터베이스 서버는 영구 데이터를 관리하기 위한 서버입니다. 애플리케이션의 처리 실행에서 발생하는 영구 데이터는 RDBMS(Relational Database Management System) 기능을 갖고 있는 미들웨어에서 관리됩니다.

 영구 데이터는 높은 가용성이 요구되기 때문에 클러스터링과 같은 기술로 다중화하는 경우가 많습니다. 또한 만일의 장애에 대비하여 데이터의 백업이나 원격지 보관 등과 같은 대책이 필요합니다 데이터베이스를 조작하는 처리는 부하가 걸리는 경우도 있으므로 시스템 전체의 병목 부분이 되는 경우도 있습니다.

 

 

대부분의 웹 시스템은 이 웹 3계층 아키텍처 구성을 취하고 있습니다. 논리적인 분할이므로 부하가 적은 시스템에서는 동일한 노드 상에서 실행하는 것도 가능하며, 클라우드 시스템 등에서 실행시킬 때는 부하에 따른 오토 스케일 기능을 사용하는 것이 좋습니다. 


웹 어플리케이션의 3계층 시스템 아키텍처에 대하여 다루어 보았습니다.