디자인 패턴(Design Pattern) - 3. 프록시 패턴(proxy pattern), MVC(Model ,View Controller) 패턴

LEE ·2022년 6월 14일
0

CS 정리

목록 보기
4/12

프록시 패턴 (proxy pattern) :

대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴 입니다.
이를 통해 객체의 속성, 변환 등을 보환하며 보안, 데이터 검증, 캐싱, 로깅에 사용합니다.
프록시 패턴은 프록시 객체로 쓰기이도하지만 프록시 서버로도 활용됩니다.

  • 프록시 서버에서의 캐싱

    캐시 안에 정보를 담아두고, 캐시 안에 있는 정보를 요구하는 요청에 대해 다시 멀리 있는 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용하는 것을 말합니다.이를통해 불필요하게 외부와 연결하지 않기 때문에 트레픽을 줄일 수 있다는 장점이 있습니다.(네트워크 병목 현상을 방지하는 효과도 얻을 수 있게 된다.)

프록시 서버(proxy server) :

서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킵니다.

  • 프록시 서버의 사용 목적은 잠재적으로 다양합니다.(위키백과)

  1. 익명으로 컴퓨터를 유지 (주로 보안을 위하여)[1]
  2. 캐시를 사용하여 리소스로의 접근을 빠르게 하기 위해. 웹 프록시는 웹 서버로부터 웹 페이지를 캐시로 저장하는 데 흔히 쓰인다.[2]
  3. 네트워크 서비스나 콘텐츠로의 접근 정책을 적용하기 위해. (이를테면 원치 않는 사이트를 차단)
  4. 사용률을 기록하고 검사하기 위해 (이를테면 회사는 인터넷 이용을 파악)
  5. 보안 및 통제를 뚫고 나가기 위해
  6. 바이러스 전파, 악성 루머 전파, 다른 정보들을 빼낼 목적으로
  7. 역으로 IP추적을 당하지 않을 목적으로
  8. 전달에 앞서 악성 코드를 목적으로 전달된 콘텐츠를 검사하기 위해
  9. 밖으로 나가는 콘텐츠를 검사하기 위해 (데이터 유출 보호)
  10. 지역 제한을 우회하기 위해
  • 프록시 서버로 쓰이는 nginx( 엔진 x )

    비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹서버며, 주로 Node.js 서버 앞단의 프록시 서버로 활용됩니다.
    Node.js 서버를 구축 할 때 앞단에 주는 이유는 익명 사용자의 직접적인 서버로의 접근을 차단하고 간접적으로 한 단계를 더 거침으로써 보안성을 더욱 강화할 수 있습니다.
    또한 실제 포드를 숨길 수 있고 정적 자원을 gzip 압축하거나, 메인 서버 앞단에서 로깅 할 수도 있습니다.
  • 프록시 서버로 쓰이는 CloudFlare( 클라우드 플레어 )

    CloudFlare는 전 세계적으로 분산된 서버가 있고 이를 통해 어떠한 시스템의 콘텐츠 전달을 빠르게 할 수 있는 CDN 서비스입니다.
    CDN 말고도 장점이 많다. 대표적으로 DDOS 공격방어, HTTPS 구축이 있습니다. 이 모든 것이 웹 서버 앞단에 두어 '프록시 서버'로 쓰기 때문입니다.
    사용자, 크롤러, 공격자가 자신의 웹사이트에 접속할 때 앞단에서 공격자로부터 보호할 수 있습니다.

CDN이란?

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

DDOS 공격 방어 :

DDOS 는 짧은 기간 동안 네트워크에 많은 요청을 보내 네트워크를 마비시켜 웹 사이트의 가용성을 방해하는 사이버 공격 유형 입니다.
CloudFlare 는 의심스러운 트래픽, 특히 사용자가 접속하는 것이 아닌 시스템을 통해 오는 트래픽을 자동으로 차단해서 DDOS 공격으로 부터 보호합니다. CloudFlare의 거대한 네트워크 용량과 캐싱 전략으로 소규모 DDOS 공격은 쉽게 막아낼 수 있으며 이러한 공격에 대한 방화벽 대시보드도 제공합니다.

HTTPS 구축

서버에서 HTTPS를 구축할 때 인증서를 기반으로 구축할 수도 있습니다. 하지만 CloudFlare를 사용하면 별도의 인증서 설치 없이 좀 더 손쉽게 HTTPS를 구축 할 수 있습니다.

MVC 패턴 :

MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴입니다.
애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성 요소에만 집중해서 개발 할 수 있습니다.
재사용성과 확장성이 용이하다는 장점이 있고, 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해지는 단점이 있습니다.

모델 :
애플리케이션의 데이터인 데이터베이스, 상수, 변수 들을 뜻합니다. 뷰에서 데이터를 생성하거나 수정하면 컨트롤러를 통해 모델을 생성하거나 갱신합니다.

뷰 :
inputbox, checkbox, textarea 등 사용자 인터페이스 요소를 나타냅니다. 즉 모델을 기반으로 사용자가 볼 수 있는 화면을 뜻합니다. 모델이 가지고 있는 정보를 따로 저장하지 않아야 하며 단순히 화면에 표시하는 정보만 가지고 있어야 합니다.

컨트롤러 :
하나 이상의 모델과 하나 이상의 뷰를 잇는 다리 역할을 하며 이벤트 등 메인 로직을 당담합니다.
또한, 모델과 뷰의 생명주기도 관리하며 ,모델이나 뷰의 변경 통지를 받으면 이를 해석하여 각각의 구성요소에 해당하는 내용에 대해 알려줍니다.

출처 : 면접을 위한 CS 전공지식 노트 - 지은이 : 주홍철
을 읽고 정리한 내용입니다.

0개의 댓글