본문 바로가기

서버/서버

Web Server와 DB를 분리하는 이유

0. Server의 구성

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

(web Container = Servlet Container = WAS라고도 한다.)

WEB SERVER - APACHE, NGINX

WAS - TOMCAT, 제우스

 

이 글에서는 Web Server와 Web Container를 따로 두고 Web Container = WAS로 두겠다.

 

 

1. 부하분산

가동중인 서버의 리눅스 쉘에서 다음 명령어를 실행해보자.

$ uptime

순서대로  현재시간, 서버가 가동된 후의 시간(6일 1시간 7분), 로그인한 유저의 수,

 

그리고 load average는 순서대로 1분, 5분, 10분간의 cpu 이용률을 1을 100%로 표현한 것.

 

 

예를 들어,

서버를 처음 구축했을때 웹서버와 WAS, DB서버의 이용률이 각각 0.1 0.1 0.1이라고 하자.

그럼 서버의 총 이용률은 0.3으로 문제가 없을 것이다.

 

하지만 웹서버에 접속하는 사람이 많아졌을 때, 웹서버의 이용률이 0.5, WAS도 0.5을 기록하게 된다고 치면 이 둘만으로 서버는 과부하가 걸리게 될 것이다.

 

DB서버를 따로 관리하는 것은 물리적으로나 가상으로나 돈이 많이 들겠지만, 부하분산을 위한 DB서버 분리가 이루어 질 수 있다.

 

 

2. Scale-out 시 문제점

위의 경우처럼 서버의 사용률이 높아서 과부하가 걸릴 때에는 서버의 증설을 고려할 수 있다.

DB서버를 분리하지 않고 Web Server, WAS, DB서버를 모두 증설한다 ? 이것이 문제가 될 수 있다.

 

Web Server의 부하가 생기면 단순히 수를 늘리고 L4와 같은 부하분산장비로 처리하면 문제가 해결되겠지만,

DB의 경우에는 이런 확장 및 증설이 어렵고 돈도 돈대로 나간다.

 

따라서 사용자가 많은 웹서비스의 경우 DB서버를 분리하여 고가, 고성능의 DB서버 한두개를 운영한 뒤

저가의 Web Server를 여러개 운영하고 이 웹서버들이 하나의 DB서버를 바라보는 식의 서비스를 하는 경우가 많다.

 

 

3. DB서버는 메모리에 의존적이다.

DB는 (web server에 비해) 거의 메모리에 의존적이다.

설정에 따라 다르지만 DB 서버를 여러개 운영할 경우에 DB에 물리 메모리의 80% 이상을 할당하도록 권고하고 있다고 한다.

 

사용률이 많은 서버를 운영 할 때,

이런 상황에서 WEB과 DB를 함께 운영하게 되면 메모리 자원이 부족한 현상을 겪게 된다.

 

 

'서버 > 서버' 카테고리의 다른 글

Query string vs Path Variable  (0) 2020.08.13
HTTP  (0) 2020.08.13
API  (0) 2020.08.13
데몬이란 ?  (0) 2020.08.04
포트 포워딩하기(with. ipTIME)(공유기별 설정페이지 접속주소, DEFAULT 계정.)  (0) 2020.08.04