[Section4] 운영 환경 구성 - 고가용성(HA: High Availability)
2023. 7. 26. 14:32
🧑🏻💻 TIL(Today I Learned)
✔️ 프록시 서버, 로드 밸런서, 오토 스케일링
💡 프록시 서버(Proxy Server)
➡️ 클라이언트가 서버와 소통할 때 서버에 바로 접근하지 않고 자신을 통해 서버에 접근할 수 있도록 해주는 일종의 대리(proxy) 서버
➡️ 보통 일반 사용자는 제한되어있는 서비스를 이용하기 위해 우회하거나 캐시를 통해 더 빠른 이용을 하기 위해 사용함
🔎 프록시 서버 종류
➡️ 위치에 따라, 프록시 서버가 클라이언트에 가까이 있는지 서버에 가까이 있는지, 두 가지로 구분
- Forward Proxy
: 클라이언트에 가까이 위치한 프록시 서버, 클라이언트를 대신해 서버에 요청 전달
: 주로 캐싱을 제공하는 경우가 많아 사용자가 빠른 서비스를 이용 할 수 있도록 도와줌- 캐싱을 통한 빠른 서비스 이용 가능
→ 클라이언트는 서비스의 서버가 아닌 프록시 서버와 소통하게 됨, 이 과정에서 여러 클라이언트가 동일한 요청을 보내는 경우,
첫 응답을 하며 결과 데이터를 캐시에 저장해놓고 이후 서버에 재요청을 보내지 않아도 다른 클라이언트에게 빠르게 전달 가능 - 보안
→ 서버에서 클라이언트의 IP 추척이 필요한 경우 클라이언트의 IP가 아닌 프록시 서버의 IP가 전달됨
즉 서버가 응답받은 IP는 프록시 서버의 IP이기 때문에 서버에게 클라이언트를 숨길 수 있음
- 캐싱을 통한 빠른 서비스 이용 가능
- Reverse Proxy
: 서버 가까이에 위치한 프록시 서버, 서버를 대신해서 클라이언트에 응답 제공함
: 분산처리를 목적으로 하거나 보안을 위해 프록시 서버 이용- 분산처리
→ 클라이언트-서버 구조에서 사용자가 많아져 서버에 과부하가 올 경우에 부하를 분산할 수 있음
프록시 서버로 요청이 들어오면 여러대의 서버로 요청을 나누어 전달 후 처리 - 보안
→ 클라이언트에게 서버를 숨길 수 있음
클라이언트 입장에서 요청을 보내는 서버가 프록시 서버가 되기 때문에 실제 서버의 IP 주소가 노출되지 않음
- 분산처리
💡 로드 밸런서
➡️ 하나의 서버에 너무 많은, 너무 잦은 요청을 보낸다면 서버에 과부하가 오게 됨
➡️ 서버의 하드웨어를 업그레이드하는 방법과 서버의 갯수를 늘리는 방법 두 가지 선택을 할 수 있음
- Scale-up
: 물리적으로 서버의 사양을 높이는 하드웨어적인 방법
: 서버의 수를 늘리지 않고 프로그램 구현에 있어 변화가 필요없다는 장점
: 서버의 사양을 높이는데에 많은 비용이 들고 하드웨어의 업그레이드에는 한계가 있다는 단점 - Scale-out
: 서버의 갯수를 늘려 하나의 서버에 줄 부하를 분산시키는 방법
: 많은 요청이 오더라도 나눠서 처리를 하기 때문에 서버 사양을 높이지 않고도 저렴한 방법으로 부하 처리 가능
⭐️ 여러대의 서버로 부하를 처리하는 경우 클라이언트로 온 요청을 여러 서버 중 어느 서버에 보내서 처리를 해야할지 교통 정리를 해줄 역할이 필요함 이 역할을 하는 것이 "로드 밸런서", 여러 서버에 교통 정리를 해주는 기술 혹은 프로그램 "로드 밸런싱"
🔎 로드 밸런서의 종류
➡️ 클라이언트의 요청을 어떤 것을 기준으로 분산시키냐에 따라 네 가지의 종류로 나눌 수 있음
- L2
: 데이터 전송 계층에서 Mac 주소를 바탕으로 로드 밸런싱 - L3
: 네트워크 계층에서 IP 주소를 바탕으로 로드 밸런싱 - L4
: 전송 계층에서 IP 주소와 Port를 바탕으로 로드 밸런싱 - L7
: 응용 계층에서 클라이언트의 요청을 바탕으로 로드 밸런싱(ex. 엔드포인트)
💡 오토 스케일링
➡️ 클라우드 컴퓨팅에서 자동으로 서버 리소스를 확장 또는 축소하여 서버 인프라의 유지 관리를 최소화하는 기능
➡️ 서버 부하가 증가하면 자동으로 추가 리소스를 할당하여 서버가 부하를 처리할 수 있도록 하고 서버 부하가 감소하면 자동으로 리소스를 줄여 불필요한 리소스 사용을 방지함
➡️ 클라우드 컴퓨팅의 핵심 기능 중 하나, 서버 부하를 신속하게 처리하고 서버의 성능을 유지하는 데 매우 유용함
➡️ 자동으로 스케일 아웃과 스케일 인을 할 수 있는 방식
- 스케일 아웃
: 서버가 부하를 감당할 수 없을 정도로 많은 사용자들이 서비스를 이용하고 있을 때 서버가 더 많은 리소스를 사용할 수 있도록 하는 것 - 스케일 인
: 서버 부하가 감소할 때 사용되며 리소스 사용량을 줄여 불필요한 리소스 사용 방지
: 서버 인프라 비용을 절감할 수 있음
🔎 구성 요소
- 스케일링 그룹
: 서버 인스턴스의 집합, 그룹 안의 인스턴스들은 동일한 크기의 이미지를 사용하며 동일한 네트워크 구성과 보안 그룹 구성을 가짐
: 오토 스케일링 그룹 안의 인스턴스들은 동일한 자동 스케일링 정책 공유 - 자동 스케일링 정책
: 리소스를 자동으로 확장하거나 축소하는 데 사용되는 규칙- 조건 → 자동 스케일링이 발생하는 조건
- 동작 → 자동 스케일링이 발생했을 때 취해지는 동작
- 로드 밸런서
: 서버 인스턴스 간의 트래픽을 분산시키는 데 사용, 클라이언트의 요청을 여러 서버 인스턴스로 분배하여 부하를 분산시킴
: 애플리케이션의 가용성을 높일 수 있음 - CloudWatch
: AWS에서 제공하는 모니터링 서비스
: 리소스 사용률을 모니터링하고 자동 스케일링 정책의 조건으로 사용할 수 있음
🔎 장점
- 자동화된 리소스 관리
- 높은 가용성
- 비용 절감
- 유연성
'SEB_BE_45 > 공부 정리' 카테고리의 다른 글
[Section4] 지속적 배포 (0) | 2023.07.28 |
---|---|
[Section4] 지속적 통합 (0) | 2023.07.27 |
[Section4] 운영환경(cloud) - AWS (0) | 2023.07.24 |
[Section4] 쿠버네티스(kubernetes) - 워크로드 (0) | 2023.07.21 |
[Section4] 쿠버네티스(Kubernetes) (0) | 2023.07.21 |