KNOU STUDYREAD

한국방송통신대학교 통계데이터과학과 블로그

CS & Department of Statistics and Data Science

통계데이터과학과 및 컴퓨터과학 독서

04. Web application Server 구축

Harryㅤ 2022. 5. 4.

01. 인프라 아키텍쳐 :  애플리케이션을 가동시키기 위해 다양한 서버에 기능이나 역할을 분배하는 것. 인프라 전체 환경 구성을 의미.
일반적으로 대규모 Web 기반 업무 시스템은 대부분 시스템 통합 사업자(System Integrator), 하드웨어 벤더, 클라우드 벤더, 네트워크 벤더 등이 연계되어 서브시스템-기능 단위로 시스템을 구축.

업무 시스템에서 사용되는 대표적인 인프라 아키텍쳐는 크게 3가지로 나뉨.(Web 3 Tier Architecture).
Web 3계층 아키텍처 = Web 시스템 서버군을 역할별 3개로 나누는 설계 사상을 의미.


Web 3 Tier Structure

(1) Web Front Server : 웹 브라우저로부터 송신된 http request 받아 http response 담당. 미들웨어에 구현 (=web server). 리퀘스트 처리가 주 업무 이므로 부하가 많을 경우 Scale Out으로 처리 서버 숫자 증설, 또는 Load Balancer를 사용하여 부하를 분산하기도 함

- Apache Http Server: 오픈소스 웹서버, 소규모 웹 사이트에서 대규모 업무 시스템까지 폭 넓게 이용
- Nginx : 오픈소스 웹서버, 소비 메모리가 적은 reverse proxy 기능이나 로드밸런서 기능도 갖고 있음
- IIS : Ms사가 제공하는 웹서버. Window Server 시리즈 등 OS 제품 내 포함되어 있음

(2) Web Application Server : 업무를 처리하는 서버. 리퀘스트 내용에 따라 결제처리/수주 처리 등 업무 애플리케이션 본연의 업무 실행. 미들웨어에 구현.

- GalssFish : 오라클 사를 중심으로 오픈소스 커뮤니티에서 개발되고 있는 웹 애플리케이션 서버
- Apache Tomcat : 자바 서블릿과 자바 서버 페이지(jsp)를 실행하기 위한 오픈소스 기반 웹 애플리케이션 서버
- WildFly : 오픈소스 기반의 자바ee 애플리케이션 서버, 이전에는 JBoss로 불림
- Webphere Applicaion Server : IBM사가 제공하는 웹 애플리케이션 서버
- Oracle Applicaion Server : 오라클 사가 제공하는 웹 애플리케이션 서버

 

(03) Database Server : 데이터를 관리하기 위한 서버. 오픈소스 mysql이나 postgreSql, oracle db등이 있음.
데이터는 높은 가용성을 요구하므로 Clustering(클러스터링) 등의 기술을 활용하여 다중화 할 필요성이 있음.
시스템 병목현상(Bottle neck)의 가능성도 있으므로 이에 따른 튜닝(Performance Tunning)도 필요함

- MySql : 오라클 사가 제공하는 오픈소스 기반의 RDBMS.
- PostgreSQL :  오픈소스 기반의 RDBMS.
- Oracle DB : 오라클 사가 제공하는 상용 데이터베이스 서버. 업무 시스템에서 많이 사용되고 있음.

 

02. AWS에서의 Web 시스템 아키텍쳐 : ec2에서 애플리케이션 서버와 데이터베이스 서버를 설치하는 방법 / ec2에 웹 애플리케이션 서버를 설치하고 rds를 이용해 구축하는 패턴 등 다양.

 

(1) ec2에서 웹 애플리케이션 서버 - 데이터베이스 서버 구축 : 인스턴스에 웹 애플리케이션 서버와 데이터베이스 서버를 설치하는 방법.
서버사이드(Server Side) 자바 프로그램과 데이터베이스를 모두 EC2 인스턴스로 실행하는 구조


(2) EC2와 RDS를 이용 : EC2에 웹 애플리케이션 서버를 설치하고, 그 위에 개발한 웹 애플리케이션을 가동. 애플리케이션 내에서 사용하는 데이터는 aws 데이터베이스 관리 시스템인 RDS를 사용.

## 가상 서버 기능인 ec2는 가동 시간에 따라 요금이 차등 부과됨. 항상 서비스를 가동할 경우 불필요한 지불이 발생되는때 이때 AWS에서는 클라이언트로부터 발생한 Request를 어떤 Trigger로 해서 서버 기능을 제공하는 서비스를 가지고 있다.

- AWS Lamda : 람다 함수라는 java/node.js/python 어느 것이든 생성된 프로그램을 등록하며, 어떤 이벤트가 발생했을 때 자동으로 실행되게 해주는 서비스. 서버리스(serverless) 시스템 구축 가능
- API Gateway :  REST API를 쉽게 생성/관리 할 수 있는 서비스. 

 

03. RDS(Relational Database Service) : 관계형 데이터베이스 서버를 구축/운용하기 위한 aws 내에서 제공하는 서비스. Aws 관리 콘솔과 cli를 사용하여 데이터베이스를 쉽게 관리할 수 있음

RDS 감시 서비스인 CloudWatch를 사용하여, 메모리 및 스토리지 이용률, IO 접속 수 등의 항목을 감시할 수 있음.
또는 데이터베이스 스냅샷(snapshot)을 S3에 백업할 수 있음. 
AWS 자체적으로 장애 발생 시, 계속 서비스를 이요할 수 있도록 멀티 AZ에 배치할 수도있음. 멀티 AZ란, RDS를 다른 가용성 zone에 배치하고 서로 복제하는 것.