본문으로 바로가기

웹 애플리케이션을 개발할 때, 코딩을 하는것도 중요하지만 기본적인 웹 시스템의 인프라 아키텍처를 알고 있어야 한다.

웹 애플리케이션은 일반적으로 각각의 기능과 역할에 맞는 여러 대의 서버로 인프라를 구성한다. 가장 많이 사용되는 일반적인 구성은 Client와 Front Server / Application Server / DB(Database) Server 의 4계층(4-Tier)로 구성된 4 Tier Web Application Architecture 다.

 

 

 

 

Front Server

 

사용자(클라이언트)의 웹 브라우저에서 요청된 HTTP request를 받아서 HTTP response로 응답하는 서버이다. 일반적으로 '웹서버' 라고 부른다. 웹서버는 클라이언트의 request를 처리하는 것이 주 기능이며, 트래픽이 몰려 부하가 생기면 스케일 아웃, 로드 밸런서 등을 사용해 서버를 늘리고 부하를 분산한다.

웹 서버 위에는 Apach HTTP Server, nginx 등의 미들웨어가 동작한다.

 

 

Application Server

 

어플리케이션 서버는 실제 비지니스 업무 로직을 처리하는 서버이다. 웹 서버에서 요청된 비지니스 업무를 처리하고 결과를 응답한다. 어플리케이션 서버에는 GlassFish, Apache Tomcat, JBoss, WebSphere등의 미들웨어로 동작한다.

 

 

DB(Database) Server

 

DB서버는 영구적인 데이터를 저장, 조회, 관리하기 위한 서버이다. 어플리케이션이 동작하며 생성되는 데이터를 DBMS(Database Management System) 역할을 하는 미들웨어에서 관리한다.

DB서버는 MySQL, PostgreSQL, Oracle Database, DB2등의 RDB와 NoSQL, ScyllaDB 등의 NoSQL DB 등이 있다.

일반적으로 DB서버는 높은 가용성이 요구되기 때문에, 클러스터링 기술로 이중화하는 경우가 많다. 또한, 장애에 대비해 데이터를 백업하는 등의 추가적인 장치가 필요하다.

 

 

대부분의 웹 시스템은 이렇게 4-Tier로 구성되어 있다. 각 서버는 논리적으로 분할되어 있기 때문에 동일 노드에서 실행할 수 있다. 클라우드에서 실행시킬 경우에는 오토 스케일링을 사용해 부하에 대응하기도 한다.

 Other Contents 

댓글을 달아 주세요

티스토리 툴바