ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [디자인패턴] 프록시 패턴, 프록시 서버
    CS/디자인 패턴 2023. 1. 19. 16:26

    디자인 패턴이란?

    프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 "규약" 형태로 만들어 놓은 것을 의미

    종류는 아래와 같다.
    1. 싱글톤 패턴
    2. 팩토리 패턴
    3. 전략 패턴
    4. 옵저버 패턴
    5. 프록시 패턴과 프록시 서버
    6. 이터레이터 패턴
    7. 노출모듈 패턴
    8. MVC 패턴
    9. MVP 패턴
    10. MVVM 패턴

     


    프록시 패턴

    대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채

    대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다.

     

    프록시 서버에서의 캐싱

    캐시 안에 정보르 담아두고, 캐시 안에 있는 정보를 요구하는 요청에 대해
    캐시 안에 있는 데이터를 활용하는 것을 말한다.

    => 트래픽을 줄일수 있다.

     


    프록시 서버

    서버와 클라이언트 사이에서 클라이언트가 자신을 통해

    다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램

     

    nginx

    비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹서버
    주로, Node.js 서버 앞단의 프록시 서버로 활용한다.

    node.js 창시자 라이언 달은 이렇게 말했다.

     

    "Node.js의 버퍼 오버 플로우 취약점을 예방하기 위해서 nginx를 프록시 서버로 앞단에 놓고
    Node.js를 뒤쪽에 놓는 것이 좋다."


    버퍼 오버블로우
    버퍼(데이터를 저장하는 메모리 공간)을 벗어나는 경우

    gzip 압축
    DEFLATE 알고리즘을 기반으로 한 압축 기술이다.
    데이터 전송량은 줄일 수 있지만 압축 해제시 CPU오버헤드도 생각해야 한다.

     

    프로시 서버의 예시

    CloundFlare

    프록시 서버로 쓰는 CloudFlare는 전세계적으로 반산된 서버가 있고 이를 통해 어떠한 시스템의 콘텐츠 전달을 빠르게 할 수 있는 CDN 서비스이다.

    웹 서버 앞단에 프록시 서버로 두어 DDOS 공격 방어나 HTTPS 구축에 쓰인다.

    서비스를 배포한 이후 해외에서 무언가 의심스런 트래픽으로 발생하는 클라우드 서비스 비용을 예방할 수 있다.

     

    CDN 
    Content Delivery Network로 사용자가 인터넷에 접속하는 곳과 가까운 곳에서 콘텐츠를 캐싱 또는 배포하는 서버 네트워크를 말한다. 이를 통해 웹 서버로부터 콘텐츠를 다운로드하는 시간을 줄일 수 있다.

     

    DDOS 공격 방어
    DDOS는 짧은 기간 동안 네트워크에 많은 요청을 보내 네트워크를 마비시켜 웹 사이트의 가용성을 방해하는 사이버 공격 유형을 말한다. 
    HTTPS 구축
    서버에서 HTTPS를 구축할 때 인증서를 기반으로 구축할 수 있다.
    CloudFlare를 사용하면 별도의 인증서 설치 없이 좀 더 쉽게 HTTPS를 구축할 수 있다.

     

    CORS
    Cross-Origin Resource Sharing은 서버가 웹 브라우저에서 리소스를 로드할 때 다른 오리진을 통해 로드하지 못하게 하는 HTTP 헤더 기반 메커니즘이다. 
    오리진
    프로토콜과 호스트 이름, 포트의 조합이다. 예시 : http://naver.com:12012

     

     

    예상질문
    Q.  프록시 서버를 설명하고 사용 사례에 대해 설명해보세요.

    A.  프록시 서버란 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접근할 수 있게 해 주는 서버를 말합니다. 주로 서버 앞단에 둬서 캐싱, 로깅, 데이터 분석을 서버보다 먼저 하는 서버로 쓰입니다. 이를 통해 포트 번호를 바꾸어 사용자가 실제 서버의 포트에 접근하지 못하게 할 수 있으며, 공격자의 DDOS 공격을 차단하거나 CDN을 프록시 서버로 캐싱할 수 있습니다. nginx를 이용해 Node.js로 이루어진 서버의 앞단에 둬서 버퍼 오버플로우를 해결할 수 있습니다.
Designed by Tistory.