November 11th 2020
Contents
이번 글에서는 기본적인 운영 서버 구성에 대해 간단히 살펴보려합니다.
클라이언트의 요청을 받는 서버가 한 대 있는 구성입니다. 매우 단순한 구성이기 때문에 테스트나 간단한 애플리케이션 서비스 시 사용됩니다. 데이터베이스도 같은 서버에서 실행되고 있기 때문에 별도의 네트워크 설정을 할 필요가 없습니다.
구성이 단순하지만, 그에 따른 단점이 있습니다. 애플리케이션과 데이터베이스가 같은 자원을 공유하기 때문에 둘 중 하나라도 자원을 모두 사용해 버리거나 하드웨어 장애가 발생하면 전체 서비스가 이용이 불가능 해 집니다.
애플리케이션과 데이터베이스는 각 역할에 맞게 자원(CPU, 메모리, 디스크)나 OS 설정(I/O 컨트롤러, 디스크 설정)이 다를 수 있는데, 둘 다 맞추다 보면 고사양 서버를 사용해야 하는 일이 생길 수 있습니다.
보안 문제도 있을 수 있습니다. 데이터베이스는 보안상 포트나 IP 등 접속 지점을 최소화 해야 좋습니다. 하지만, 웹 애플리케이션은 일반적으로 오픈 돼 있고 여러 요청을 처리해야 하는데, 이에 따라 데이터베이스가 공격당할 가능성도 높아집니다.
또한, 서버 스케일 아웃이 어려워 집니다. 같은 구조로 서버 추가 시 클라이언트에서는 추가된 서버 주소를 알아야 하는 문제와, 서버 측에서는 데이터 동기화 등의 번거로운 관리 문제가 발생합니다.