[Section4] 운영 환경 구성 - 고가용성(HA: High Availability)

2023. 7. 26. 14:32

🧑🏻‍💻 TIL(Today I Learned)


✔️ 프록시 서버, 로드 밸런서, 오토 스케일링

 

💡 프록시 서버(Proxy Server)

➡️ 클라이언트가 서버와 소통할 때 서버에 바로 접근하지 않고 자신을 통해 서버에 접근할 수 있도록 해주는 일종의 대리(proxy) 서버

➡️ 보통 일반 사용자는 제한되어있는 서비스를 이용하기 위해 우회하거나 캐시를 통해 더 빠른 이용을 하기 위해 사용함 

 

 

🔎 프록시 서버 종류

➡️ 위치에 따라, 프록시 서버가 클라이언트에 가까이 있는지 서버에 가까이 있는지, 두 가지로 구분

  1. Forward Proxy
    : 클라이언트에 가까이 위치한 프록시 서버, 클라이언트를 대신해 서버에 요청 전달 
    : 주로 캐싱을 제공하는 경우가 많아 사용자가 빠른 서비스를 이용 할 수 있도록 도와줌
    • 캐싱을 통한 빠른 서비스 이용 가능 
      → 클라이언트는 서비스의 서버가 아닌 프록시 서버와 소통하게 됨, 이 과정에서 여러 클라이언트가 동일한 요청을 보내는 경우,
      첫 응답을 하며 결과 데이터를 캐시에 저장해놓고 이후 서버에 재요청을 보내지 않아도 다른 클라이언트에게 빠르게 전달 가능 
    • 보안 
      → 서버에서 클라이언트의 IP 추척이 필요한 경우 클라이언트의 IP가 아닌 프록시 서버의 IP가 전달됨
      즉 서버가 응답받은 IP는  프록시 서버의 IP이기 때문에 서버에게 클라이언트를 숨길 수 있음

  2. Reverse Proxy
    : 서버 가까이에 위치한 프록시 서버, 서버를 대신해서 클라이언트에 응답 제공함 
    : 분산처리를 목적으로 하거나 보안을 위해 프록시 서버 이용 
    • 분산처리
      → 클라이언트-서버 구조에서 사용자가 많아져 서버에 과부하가 올 경우에 부하를 분산할 수 있음 
      프록시 서버로 요청이 들어오면 여러대의 서버로 요청을 나누어 전달 후 처리
    • 보안
      → 클라이언트에게 서버를 숨길 수 있음 
      클라이언트 입장에서 요청을 보내는 서버가 프록시 서버가 되기 때문에 실제 서버의 IP 주소가 노출되지 않음

 

 

💡 로드 밸런서 

➡️ 하나의 서버에 너무 많은, 너무 잦은 요청을 보낸다면 서버에 과부하가 오게 됨

➡️ 서버의 하드웨어를 업그레이드하는 방법과 서버의 갯수를 늘리는 방법 두 가지 선택을 할 수 있음 

 

  1. Scale-up
    : 물리적으로 서버의 사양을 높이는 하드웨어적인 방법 
    : 서버의 수를 늘리지 않고 프로그램 구현에 있어 변화가 필요없다는 장점
    : 서버의 사양을 높이는데에 많은 비용이 들고 하드웨어의 업그레이드에는 한계가 있다는 단점 

  2. Scale-out
    : 서버의 갯수를 늘려 하나의 서버에 줄 부하를 분산시키는 방법
    : 많은 요청이 오더라도 나눠서 처리를 하기 때문에 서버 사양을 높이지 않고도 저렴한 방법으로 부하 처리 가능

    ⭐️ 여러대의 서버로 부하를 처리하는 경우 클라이언트로 온 요청을 여러 서버 중 어느 서버에 보내서 처리를 해야할지 교통 정리를 해줄 역할이 필요함 이 역할을 하는 것이 "로드 밸런서", 여러 서버에 교통 정리를 해주는 기술 혹은 프로그램 "로드 밸런싱"

 

🔎 로드 밸런서의 종류 

➡️ 클라이언트의 요청을 어떤 것을 기준으로 분산시키냐에 따라 네 가지의 종류로 나눌 수 있음 

 

  • L2 
    : 데이터 전송 계층에서 Mac 주소를 바탕으로 로드 밸런싱
  • L3
    : 네트워크 계층에서 IP 주소를 바탕으로 로드 밸런싱
  • L4
    : 전송 계층에서 IP 주소와 Port를 바탕으로 로드 밸런싱
  • L7
    : 응용 계층에서 클라이언트의 요청을 바탕으로 로드 밸런싱(ex. 엔드포인트)

 

 

💡 오토 스케일링 

➡️ 클라우드 컴퓨팅에서 자동으로 서버 리소스를 확장 또는 축소하여 서버 인프라의 유지 관리를 최소화하는 기능 

➡️ 서버 부하가 증가하면 자동으로 추가 리소스를 할당하여 서버가 부하를 처리할 수 있도록 하고 서버 부하가 감소하면 자동으로 리소스를 줄여 불필요한 리소스 사용을 방지함

➡️ 클라우드 컴퓨팅의 핵심 기능 중 하나, 서버 부하를 신속하게 처리하고 서버의 성능을 유지하는 데 매우 유용함

➡️ 자동으로 스케일 아웃과 스케일 인을 할 수 있는 방식 

  • 스케일 아웃 
    : 서버가 부하를 감당할 수 없을 정도로 많은 사용자들이 서비스를 이용하고 있을 때 서버가 더 많은 리소스를 사용할 수 있도록 하는 것 
  • 스케일 인 
    : 서버 부하가 감소할 때 사용되며 리소스 사용량을 줄여 불필요한 리소스 사용 방지 
    : 서버 인프라 비용을 절감할 수 있음 

 

🔎 구성 요소 

  • 스케일링 그룹 
    : 서버 인스턴스의 집합, 그룹 안의 인스턴스들은 동일한 크기의 이미지를 사용하며 동일한 네트워크 구성과 보안 그룹 구성을 가짐
    : 오토 스케일링 그룹 안의 인스턴스들은 동일한 자동 스케일링 정책 공유

  • 자동 스케일링 정책 
    : 리소스를 자동으로 확장하거나 축소하는 데 사용되는 규칙
    • 조건 → 자동 스케일링이 발생하는 조건
    • 동작 → 자동 스케일링이 발생했을 때 취해지는 동작
  • 로드 밸런서
    : 서버 인스턴스 간의 트래픽을 분산시키는 데 사용, 클라이언트의 요청을 여러 서버 인스턴스로 분배하여 부하를 분산시킴
    : 애플리케이션의 가용성을 높일 수 있음 

  • CloudWatch
    : AWS에서 제공하는 모니터링 서비스 
    : 리소스 사용률을 모니터링하고 자동 스케일링 정책의 조건으로 사용할 수 있음 

 

🔎 장점

  • 자동화된 리소스 관리
  • 높은 가용성
  • 비용 절감
  • 유연성

BELATED ARTICLES

more