[취업을 위한 CS 지식] 33강. 프록시와 안정적인 트래픽
- 프록시는 클라이언트와 오리진 서버 사이에 위치한 중간 서버로, 클라이언트의 요청을 대리하거나 오리진 서버의 응답을 처리하는 등 다양한 역할을 수행합니다. 🌐
- 오리진 서버는 자원을 생성하고 권한 있는 응답을 보내는 원본 서버이며, 중간 서버는 자원을 생성하지 않고 클라이언트와 오리진 서버 사이에서 특정 기능을 수행합니다. 🔄
- 프록시(포워드 프록시)는 클라이언트 측에 가까워 캐싱, 암호화, 접근 제한 등 클라이언트 대리 역할을 하며, 게이트웨이(리버스 프록시)는 오리진 서버 측에 가까워 부하 분산(로드 밸런싱) 및 캐싱 등 서버 대리 역할을 합니다. 🤝
- 서버의 안정성을 나타내는 지표인 가용성은 업타임 비율로 계산되며, 고가용성(High Availability)은 시스템이 대부분의 시간 동안 사용 가능한 상태를 유지하는 것을 목표로 합니다. 📈
- 안정적인 시스템은 99.999% 이상의 가용성(Five Nines)을 목표로 하지만, 이는 1년에 약 5분의 다운타임을 의미하므로, 민감한 시스템에서는 더 높은 가용성이 요구될 수 있습니다. ⏱️
- 고가용성을 달성하기 위한 핵심은 문제가 발생하지 않도록 막는 것이 아니라, 문제가 발생하더라도 시스템이 계속 기능하도록 설계하는 '결함 감내(Fault Tolerance)'입니다. 🛡️
- 결함 감내의 대표적인 방법은 '다중화(Redundancy)'로, 여러 개의 시스템을 두어 하나가 다운되어도 다른 시스템이 대체할 수 있도록 하며, 이 자동 전환 과정을 '페일오버(Failover)'라고 합니다. 👯
- 다운된 서버를 감지하는 방법으로는 주기적으로 상태를 확인하는 '헬스 체크(Health Check)'와 서버 간 주고받는 신호가 끊겼을 때 감지하는 '하트비트(Heartbeat)'가 있습니다. ❤️🩹
- '로드 밸런싱(Load Balancing)'은 다중화된 서버에 트래픽을 고르게 분배하여 고가용성을 유지하는 기술이며, 로드 밸런서(L4/L7 스위치 또는 소프트웨어)에 의해 수행됩니다. ⚖️
- 로드 밸런싱 알고리즘(예: 라운드 로빈, 최소 연결)은 트래픽 분배 방식을 결정하며, 각 서버의 처리 역량을 고려하여 '가중치(Weighted)'를 부여함으로써 효율적인 부하 분산이 가능합니다. 🎯
- 인프라 확장 방법에는 더 좋은 부품으로 교체하는 '스케일 업(Scale Up, 수직적 확장)'과 더 많은 부품을 추가하는 '스케일 아웃(Scale Out, 수평적 확장)'이 있습니다. ⬆️➡️
- 스케일 아웃은 유연성과 결함 감내 설계에 유리하며, '오토 스케일링(Auto Scaling)'은 필요에 따라 시스템 자원을 동적으로 확장하거나 축소하여 경제적이고 탄력적인 운영을 가능하게 합니다. 🚀