서버 아키텍처
단일서버
가장 기본적인 서버 구성으로 테스트 서버나, 간단한고 작은 서비스를 할 때 많이 사용된다.
클라이언트는 웹, 애플리케이션은 웹서버, 데이터베이스는 Mysql과 같은 RDB 등으로 생각할 수 있다.
장점
- 환경 구축이 쉬움
단점
전체 서비스에 장애가 생길 확률이 높음
=> 애플리케이션, 데이터베이스가 같은 자원(CPU, 메모리 등)을 공유하므로 둘 중 하나라도 자원을 모두 사용하거나, 서버 장애가 발생하면 전체 서비스가 완전히 죽는다.서버 자원을 효율적으로 사용하기 어렵다.
=> 애플리케이션, 데이터베이스가 각 속성에 따라 더 중요한 최적화를 필요한 설정이 다를 수 있음보안 취약
=> 테이터 베이스는 보안상 포트나 IP등 접속 지점을 최소화, 웹은 특성상 다양한 IP 포트에 대해 요청받아야 함.스케일 아웃(서버확장)이 어렵다.
=> 서버가 여러대 되면 클라이언트가 여러대의 서버들의 주소를 모두 알아야 하므로 관리 어려움.
애플리케이션/데이터베이스 서버 분리
단일 서버 구성에서 데이터베이스를 별도의 서버로 분리한 구성.
단일서버의 단점인 전체 서비스 장애 확률, 효율적인 자원 사용, 보안취약이 해결된다.
장점
- 전체 서비스에 장애가 생길 확률이 높음이 개선
- 효율적인 자원 사용 개선
- 보안 취약 개선
단점
- 관리서버 증가.
- 네트워크 보안 고려.
- 스케일 아웃(서버확장)이 어렵다.
로드 밸런서
클라이언트는 로드 밸런서 서버와 통신하고 그 뒤에 여러 애플리케이션 서버를 두는 구성.
장점
- 스케일 아웃이 가능.
- 애플리케이션 서버 중 일부 서버에 장애 발생 시 대응 가능
=> 정상 서버에만 요청을 가능하도록 할 수 있음.
단점
- 로드밸런서 서버 장애 시 연결된 모든 애플리케이션 서버 장애.
=> 로드밸런서 서버를 통해 모든 요청과 응답이 이뤄지므로 애플리케이션 서버가 정상이여도 로드밸런서 서버가 장애가 날 경우 전체 서비스에 영향