오리진 서버와 중간 서버: 포워드 프록시와 리버스 프록시
- 오리진 서버(origin server): 자원을 생성하고 클라이언트에게 권한이 있는 응답을 보낼 수 있는 HTTP 서버
- 클라이언트와 오리진 서버 사이에는 많은 중간 서버가 있을 수 있다
- 가용성(availablity): 서버, 네트워크, 특정 하드웨어 부품을 비롯한 특정 컴퓨터 시스템이 주어진 기능을 실제로 수행할 수 있는 시간의 비율
- 고가용성(HA, high availability): 주어진 기능을 문제없이 수행하는 시간이 비율이 높을때
HTTP 중간 서버는 프록시와 게이트웨이가 있다
프록시 (proxy)
클라이언트가 선택한 메시지 전달 대리자
주로 캐시 저장, 클라이언트 암호화 및 접근 제한 등의 기능 제공
클라이언트가 어떤 프록시를 언제, 어떻게 사용할지 선택하기 때문에 프록시는 일반적으로 오리진 서버보타 클라이언트와 더 가까이 위치
게이트웨이 (gateway)
서버(들)을 향하는 요청 메시지를 먼저 받아서 오리진 서버(들)에게 전달
게이트웨이에 캐시 저장
부하를 분산하는 로드 밸런서로 동작
고가용성: 로드 밸런싱과 스케줄링
- 가용성: 주어진 특정 기능을 실제로 수행할 수 있는 시간의 비율
- 가용성 = (업타임) / (업타임+다운타임)
- 업타입(uptime): 정상적인 사용 시간
- 다운타임(downtime): 정상적인 사용이 불가능한 시간
- 발생 원인: 과도한 트래픽으로 인한 서비스 다운, 예기치 못한 소프트웨어 상의 오류 또는 하드웨어 장애, 보안 공격, 자연재해
- 문제가 발생하더라도 계속 기능할 수 있도록 설계하는 것이 중요
- 결함 감내(fault tolerance): 문제가 발생하더라도 기능할 수 있는 능력
- 서버 다중화를 통해 특정 서버에 문제가 발생하더라도 다른 예비 서버가 이를 대신해 동작할 수 있음
- 페일오버(failover): 동작하는 시스템에 문제가 생겼을 때 예비된 시스템으로 자동 전환되는 기능
로드 밸런싱
서버의 가용성에 가장 큰 영향을 끼치는 요소: 감당하기 어려울 정도의 트래픽
서버를 다중화하더라도, 특정 서버에만 트래픽이 몰리면 가용성이 떨어질 수 있다
- 로드밸런싱(load balancing): 하나 이상의 서버가 트래픽을 고르게 분배하기 위해 사용하는 기술
- 로드밸런서(load balancer): 다중화된 서버와 클라이언트 사이에 위치하여 클라이언트의 요청들을 각 서버에 균등하게 분배하는 역할
- 대표적 로드 밸런싱 소프트웨어: HAProxy, Envoy
- 웹 서버 소프트웨어인 Nginx에도 로드 밸런싱 기능이 내장되어 있음
- 로드 밸런싱 알고리즘: 부하가 균등하게 분산되도록 요청을 전달할 서버를 선택하는 방법
- 라운드 로빈 알고리즘: 서버를 돌아가며 부하 전달
- 최소 연결 알고리즘: 연결이 적은 서버부터 우선적으로 부하 전달
- 더 좋은 서버에 더 많은 트래픽을 분배하는 것이 합리적
- 이를 반영해 가중치 부여
- 각각의 알고리즘을 바탕으로 동작하되, 가중치가 높은 서버가 더 많이 선택되어 더 많은 부하를 받도록 함
스케일링: 스케일 업, 스테일 아웃, 오토 스케일링
- 스케일 업(scale-up): 기존 부붐을 더 나은 사양으로 교체
- 수직적 확장(vertical scailing)
- 설치와 구성이 단순하다
- 장비가 하나밖에 존재하지 않느다면 해당 장비에 부하가 집중되거나 병목이 생길 수 있다
- 스케일 아웃(scale-out): 기존 부품을 여러 개로 두는 방법
- 수평적 확장(horizontal scailing)
- 유연한 확장 및 축소가 가능하다
- 결함을 감내하기 용이
- 장비 중 하나가 고장나더라도 다른 장비가 고장난 장비의 역할을 대신할 수 있다
- 오토스케일링(autoscailing): 필요할 때마다 시스템을 동적으로 확장하고 축소
- 업스트림(upstream): 상위 서버로 데이터를 보내는 방향
- 업스트림 트래픽: 클라이언트에서 오리진 서버로 향하는 트래픽
- 다운스트림(downstream): 상위 서버에서 클라이언트로 데이터를 보내는 방향
- 오리진 서버가 응답 메시지를 생성해 클라이언트로 보낼 경우
- 인바운드(inbound): 네트워크 외부에서 내부로 들어오는 트래픽
- 외부 사용자가 내부 네트워크의 서버나 서비스에 접근하려는 요청
- 아웃바운드(outbound): 내부 네트워크에서 외부로 나가는 트래픽
- 내부 시스템이나 사용자들이 외부 서버나 서비스에 요청을 보내는 경우
'네트워크' 카테고리의 다른 글
[네트워크] 응용계층: HTTP (1) | 2025.01.29 |
---|---|
[네트워크] 전송 계층: TCP, UDP (0) | 2025.01.28 |
[네트워크] 네트워크 계층: IP (0) | 2025.01.27 |
[네트워크] 물리 계층, 데이터 링크 계층 (0) | 2025.01.27 |
[네트워크] 네트워크의 큰 그림 (0) | 2025.01.15 |