Book/서비스운영이 쉬워지는 AWS 인프라 구축 가이드

2-1. 운영 서버 환경의 구성

쟈누이 2021. 3. 12. 16:35
반응형

2.1 운영 서버 아키텍처의 이해


2.1.1 단일 서버


단일 서버 구성은 단순한 구성인만큼 환경을 구축하기가 쉽다는 장점이 있어서 테스트 서버나 간단한 애플리케이션을 서비스할 때 많이 사용한다. 그리고 DB 와 애플리케이션이 같은 서버에서 실행되어 별도의 네트워크 설정을 할 필요 없이 로컬 호스트를 대상으로만 하면 된다. 

 

하지만, 아래와 같은 단점이 있다.

 

 

첫번째, 전체 서비스의 장애 발생 가능성이 높음

  • 같은 자원을 공유하기 때문
  • 둘 중 하나라도 장애가 발생할 경우 그 부분이 아닌 전체가 죽을 수 있음

 

두번째, 서버 자원의 효율적 사용 어려움

  • 각 속성에 따라 최적 OS 설정 자원의 종류(CPU, 메모리..) 등이 다를 수 있음

 

세번째, 보안성이 떨어짐

  • 애플리케이션 특성상, 여러 불특정 IP 를 받아야 되기 때문에 보안에 취약함

 

네번째, 스케일 아웃(Scale out) - 서버의 수를 여러 대로 늘려 자원을 확장 함 - 이 힘듦

  • 서버를 여러대로 늘릴 경우, 클라이언트에 추가된 서버의 주소 파악해야되며, 복제본이 여러개 생겨 관리가 힘듦

 

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


  • 애플리케이션과 DB 가 다른 자원 사용
  • 전체 서비스 장애 확률, 효율적인 자원사용, 보안성 감소 등의 문제 해결
  • 두대의 서버 관리로 구성이 조금 복잡해짐
  • 서버 사이의 지연시간과 네트워크 보안을 고려해야함 
  • 스케일 아웃은 힘듬

 

2.1.3 서버단위의 로드 밸런서


클라이언트가 애플리케이션을 실행하는 서버와 직접통신하는 대신 로드 밴런서라는 서버와 통신하고 그 뒤에 여러대의애플리케이션 서버를 두는 방식. 클라이언트는 로드밸런서를 통해 요청을 서버에게 전달하고 서버는 그 요청을 로드밸런서를 통해 클라이언트에게 전달

 

  • 스케일 아웃이 가능
  • 장애 발생시, 로드밸런서를 통해 정상서버에만 넘기면 되므로 장애 최소화
  • 단, 밸런서에 장애가 생기면 전체 서비스 장애로 이어짐

 

2.1.4 서버 내 앱 단위의 로드 밸런서


여러 애플리케이션 프로세스들에 요청을 분산시키는 앱 단위의 로드 밸러서 추가 됨. 애플리케이션 서버 안에서 똑같은 애플리케이션을 여러 프로세스로 만들어 실행하고 외부에서 들어온 요청을 프로세스 중 하나로 보내주는 역할을 하는 방식

 

  • 하나의 서버에 여러개의 프로세스를 실행
  • 하나의 서버에서 여러개의 요청을 동시 처리 가능
  • 서버 자원을 최대한으로 사용할 수 잇고 서버 자원도 효율적으로 사용 가능
반응형