단일 서버 구성
Client
↔️WAS
↔️DB Server
분리 서버 구성
웹 클라이언트
↔️WAS
↔️DB Server
예를 들어, 쇼핑몰 등에서 사진 및 영상이 많을 수 있으므로 상대적으로 데이터베이스의 사양보다는 WAS 사양을 높이는 방법이 필요, 하지만 동일 서버로 구현된 경우 WAS의 성능만 높이기 어려우므로 당연히 데이터베이스 서버를 함께 올릴 수 밖에 없으므로 가격과 성능을 고려할 경우 비효율적인 측면이 증가한다.
WAS와 달리 Database는 다른 하드웨어보다 메모리 영향이 크다. 즉 성능을 높이기 위한 기술적 방법이 각기 다르게 적용되어야 하는데 하나의 단일 서버 구현은 한계가 존재한다.
성능을 높이기 위한 확장성입니다. 앞서 말한 것처럼 단일 머신의 스펙을 높이기 위해 병렬 구조의 Scale out 방식의 서버 증설이 필요한 경우 DB 서버 분리는 반드시 필요한 과정 중 하나입니다. 이렇게 해야 자원을 WAS와 공유하지 않고 독점적으로 사용하므로 더 높은 성능을 기대할 수 있습니다.
더 높은 보안을 위해서 나누는 것이 좋습니다. 만약 WAS 서버에 해킹이 발생한 경우 예를 들어 봅니다. 해킹에 의해 루트 권한 모두가 넘어갈 수도 있고 이 경우 데이터에 심각한 문제가 발생할 수 있습니다. 하지만 별도로 데이터베이스 서버로 분리하여 제한적인 권한을 부여한 경우 심각한 문제로부터 상당 부분 보호할 수 있게 됩니다.
형상 관리 툴을 사용하는 경우 당연히 소스 등은 히스토리와 백업에 안전할 수 있습니다. 하지만 데이터베이스의 경우 별도의 백업하고 주기적으로 백업을 수행할 경우 그 크기도 작지 않으므로 분리했을 때 백업 방법의 선택의 폭이 넓습니다.
최근에는 대용량 트래픽 부하를 막기 위해 로드 밸런싱(Load Balancing)의 방법이 필요합니다. 중간에 로드밸런서를 두고 여러개의 웹서버를 분산하여 사용하려면 WAS와 데이터베이스 서버를 각각 다르게 운영해야 합니다. 그래야 WAS와 Database의 Scale Out을 각각 다르게 설정하여 사용할 수 있습니다.