서버 아키텍처

단일서버

단일서버

가장 기본적인 서버 구성으로 테스트 서버나, 간단한고 작은 서비스를 할 때 많이 사용된다.

클라이언트는 웹, 애플리케이션은 웹서버, 데이터베이스는 Mysql과 같은 RDB 등으로 생각할 수 있다.

장점

  • 환경 구축이 쉬움

단점

  • 전체 서비스에 장애가 생길 확률이 높음
    => 애플리케이션, 데이터베이스가 같은 자원(CPU, 메모리 등)을 공유하므로 둘 중 하나라도 자원을 모두 사용하거나, 서버 장애가 발생하면 전체 서비스가 완전히 죽는다.

  • 서버 자원을 효율적으로 사용하기 어렵다.
    => 애플리케이션, 데이터베이스가 각 속성에 따라 더 중요한 최적화를 필요한 설정이 다를 수 있음

  • 보안 취약
    => 테이터 베이스는 보안상 포트나 IP등 접속 지점을 최소화, 웹은 특성상 다양한 IP 포트에 대해 요청받아야 함.

  • 스케일 아웃(서버확장)이 어렵다.
    => 서버가 여러대 되면 클라이언트가 여러대의 서버들의 주소를 모두 알아야 하므로 관리 어려움.

애플리케이션/데이터베이스 서버 분리

애플리케이션/데이터베이스 서버 분리

단일 서버 구성에서 데이터베이스를 별도의 서버로 분리한 구성.

단일서버의 단점인 전체 서비스 장애 확률, 효율적인 자원 사용, 보안취약이 해결된다.

장점

  • 전체 서비스에 장애가 생길 확률이 높음이 개선
  • 효율적인 자원 사용 개선
  • 보안 취약 개선

단점

  • 관리서버 증가.
  • 네트워크 보안 고려.
  • 스케일 아웃(서버확장)이 어렵다.

로드 밸런서

로드밸런서 클라이언트는 로드 밸런서 서버와 통신하고 그 뒤에 여러 애플리케이션 서버를 두는 구성.

장점

  • 스케일 아웃이 가능.
  • 애플리케이션 서버 중 일부 서버에 장애 발생 시 대응 가능
    => 정상 서버에만 요청을 가능하도록 할 수 있음.

단점

  • 로드밸런서 서버 장애 시 연결된 모든 애플리케이션 서버 장애.
    => 로드밸런서 서버를 통해 모든 요청과 응답이 이뤄지므로 애플리케이션 서버가 정상이여도 로드밸런서 서버가 장애가 날 경우 전체 서비스에 영향

Contents