ssung_끄적끄적/CS지식_끄적

전략패턴, 옵저버 패턴, 프록시 패턴 (프로시 서버)

ssungcohol 2023. 8. 25. 17:29

전략 패턴 (Strategy pattern)

 - 정책 패턴 (Policy pattern)이라고 부르기도 함

 - 객체의 행위를 바꾸고 싶은 경우 직접 수정하는 것이 아닌, '전략' 이라고 부르는 '캡슐화한 알고리즘프'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만든 패턴
(컨텍스트 - 상황, 맥락, 문맥을 의미하여 개발자가 어떠한 작업을 완료하는데 필요한 모든 관련 정보를 말함)

 - Ex) 결제를 할 때, 결제 방식에 대한 '전략'을 카드, 현금, 입금 등의 다양한 방법으로 결제하는 것과 비슷


옵저버 패턴 (Observer pattern)

 - 주체가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 패턴

 - 주체 : 객체의 상태 변화를 보고 있는 관찰자

 - 옵저버들 : 객체의 상태 변화에 따라 전달되는 메서드 등을 기반으로 추가 변화 사항이 생기는 객체를 의미

 - 옵저버 패턴을 활용한 서비스 = 트위터

 - 옵저버 패턴은 주로 이벤트 기반 시스템에 사용하며 MVC 패턴에도 사용

(주체 Model에서 변경 사항이 생겨 update() 메서드를 통해 옵저버인 View에 알려주고, 이를 기반으로 Controller가 작동)


프록시 패턴과 프록시 서버

 - 프록시 객체는 디자인 패턴 중 하나인 프록시 패턴이 녹아있는 객체

  • 프록시 패턴
    • 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴
    • 객체의 속성, 변환 등을 보완하고 보안, 데이터 검증, 캐싱, 로깅 등에 사용
      • 캐싱 - 캐시 안에 정보를 담아두고, 캐시 안에 있는 정보를 요구하는 요청을 다시 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용하는 것을 말함.
        이를 통해, 외부와의 불필요한 연결이 없어 트래픽을 줄일 수 있는 장점
    • 이는 프록시 객체로 쓰이기도 하지만 프록시 서버로도 활용
  • 프록시 서버
    • 서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용프로그램을 가리킴
    • 대표적으로 CloudFlare가 있다.
      • CloudFlare
        • 전 세계적으로 분산된 서버가 있고 이를 통해 어떠한 시스템의 콘텐츠 전달을 빠르게 할 수 있는 CDN 서비스
        • DDOS 공격방어, HTTPS 구축에도 사용
      • CORS와 프론트엔드의 프록시 서버
        • CORS는 서버가 웹 브라우저에서 리소스를 로드할 떄 다른 오리진을 통해 로그하지 못하게 하는 HTTP 헤더 기반의 메커니즘
        • CORS 문제를 해결하기 위해 프록시 서버를 사용하기도 함
728x90