728x90
책 '면접을 위한 CS 전공지식 노트'를 읽고 정리한 내용입니다.
프록시 패턴
- 프록시 패턴(proxy pattern)은 대상 객체(subject)에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다.
- 이를 통해 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 로깅에 사용한다. 이는 프록시 객체로 쓰이기도 하지만 프록시 서버로도 활용된다.
<aside> 🔥 프록시 서버에서의 캐싱
캐시 안에 정보를 담아두고, 캐시 안에 있는 정보를 요구하는 요청에 대해 다시 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용하는 것을 말한다. 이를 통해 불필요하게 외부와 연결하지 않기 때문에 트래픽을 줄일 수 있다는 장점이 있다.
</aside>
프록시 서버
- 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다.
프록시 서버로 사용되는 nginx
- nginx는 비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버
- 주로 Node.js 서버 앞단의 프록시 서버로 활용된다.
- nginx를 프록시 서버로 사용하여 익명 사용자가 직접적으로 서버에 접근하는 것을 차단하고, 간접적으로 한 단계를 더 거치게 만들어서 보안을 강화할 수 있다.
- nginx를 프록시 서버를 둬서 실제 포트를 숨길 수 있고 정적 자원을 gzip압축하거나, 메인 서버 앞단에서의 로깅을 할 수 있다.
프록시 서버로 쓰는 CloudFlare
- CloudFlare는 콘텐츠 전송 네트워크(CDN) 서비스, DDos 보호, 인터넷 보안 및 기타 관련 서비스를 제공하는 회사이다.
- CloudFlare의 CDN 서비스는 웹사이트 소유자가 전 세계에 위치한 정적 콘텐츠를 캐싱해서 방문자에게 웹사이트의 콘텐츠를 빠르게 전달할 수 있도록 도와준다.
- CloudFlare는 웹 서버 앞단에 프록시 서버를 두어 DDos 공격 방어나 HTTPS 구축에 쓰인다.
- 의심스러운 트래픽이 많이 발생하면 클라우드 서비스 비용이 많이 발생하게 되고 서비스에 액세스할 수 없게 되는데, 이 때 CloudFlare가 의심스러운 트래픽인지를 먼저 판단해 CAPtCHA 등을 기반으로 이를 일정 부분 막아주는 역할도 수행한다.
DDos공격 방어
- DDos는 웹 사이트의 트래픽이 넘쳐 웹사이트에 액세스할 수 없게 만드는 일종의 사이버 공격이다.
- CloudFlare는 사용자가 아닌 시스템을 통해 오는 트래픽을 자동으로 차단해서 DDos 공격으로부터 보호한다.
- CloudFlare의 거대한 네트워크 용량과 캐싱 전략으로 소규모 DDos 공격은 쉽게 막아낼 수 있으며 이러한 공격에 대한 방화벽 대시보드도 제공한다.
HTTPS 구축
- 서버에서 HTTPS를 구축할 때 인증서를 기반으로 구축할 수 있다.
- 하지만 CloudFlare를 사용하면 별도의 인증서 설치 없이 HTTPS를 구축할 수 있다.
CDN(Content Delivery Network)
- 각 사용자가 인터넷에 접속하는 곳과 가까운 곳에서 컨텐츠를 캐싱 또는 배포하는 서버 네트워크를 말한다.
- 이를 통해 사용자가 웹 서버로부터 컨텐츠를 다운로드하는 시간을 줄일 수 있다.
CORS와 프론트엔드의 프록시 서버
- CORS(Cross-Origin Resource Sharing)는 서버가 웹 브라우저에서 리소스를 로드할 때 다른 오리진을 통해 로드하지 못하게 하는 HTTP 헤더 기반 매커니즘이다.
- 프론트엔드 서버와 백엔드 서버가 통신할 때 주로 CORS 에러를 만날 수 있는데, 이를 해결하기 위해 프론트엔드에서 프록시 서버를 만들기도 한다.
- 예를 들어 프론트엔드에서는 127.0.0.1:3000으로 테스팅을 하는데 백엔드 서버는 127.0.0.1:2010이라면 포트 번호가 다르기 때문에 CORS 에러가 나타난다. 이 때 프록시 서버를 두고 프론트엔드 서버에서 요청되는 오리진을 127.0.0.1:12010으로 바꾸면 해결된다.
728x90
'책' 카테고리의 다른 글
면접을 위한 CS 전공지식 노트 - MVC, MVP, MVVM 패턴 (0) | 2023.05.05 |
---|---|
면접을 위한 CS 전공지식 노트 - 이터레이터 패턴 (0) | 2023.05.02 |
면접을 위한 CS 전공지식 노트 - 팩토리 패턴 (0) | 2023.04.21 |
면접을 위한 CS 전공지식 노트 - 싱글톤 패턴 (0) | 2023.04.21 |
면접을 위한 CS 전공지식 노트 - 시간 복잡도 (0) | 2023.04.18 |