프록시 패턴은 대상 객체에 접근하기 전 그 흐름을 가로 채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴입니다
객체의 속성, 변환 등을 보완하여 보안, 데이터 검증, 캐싱, 로깅 등에 사용합니다
또한 앞서 사용한 옵저퍼패턴의 프록시 객체로 쓰이는 프록시 서버로도 활용됩니다
캐시안에 정보를 담아두어 불필요한 원격 서버 요청 없이 캐시 안에 있는 데이터를 활용하여 트래픽을 줄일 수 있습니다
프록시서버는 클라이언트와 서버 사이에서 클라이언트가 간접적으로 다른 네트워크에 접속 할 수 있게 해주는 컴퓨터 시스템(혹은 응용프로그램)을 뜻합니다
비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹서버로 Node.js 서버 앞단의 프록시 서버로 활용됩니다
Node.js 서버의 경우 버퍼 오버플로가 발생 할수 도 있기때무에 프록시서버를 앞단에 두는 것이 좋다
버퍼오버플로우 란?
버퍼 오버플로(영어: buffer overflow) 또는 버퍼 오버런(buffer overrun)은 메모리를 다루는 데에 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점을 뜻한다
전 세계적으로 분산된 서버가 있는 CDN서비스로 콘텐츠전달 뿐만 아니라 DDOS 공격방어, HTTPS 구축등도 가능합니다
CDN 이란?
사용자가 인터넷 접속하는 곳과 가까운 곳에서 캐싱 또는 배포하는 서버 네트워크
CORS(Cross-Origin Resource Sharing)는 서버가 웹 브라우저에서 리소스를 로드할때 다른 origin 을 통해 로드하지 못하게 되는 HTTP 헤더 기반 매커니즘입니다
Origin 이란?
프로토콜과 호스트 이름, 포트의 조합을 말한다
이터레이터 패턴이란 iterator를 사용하여 collection 요소들에 접근하는 디자인 패턴입니다
순회할수 있는 여러가지의 자료형이라면 구조와 상관없이 이터레이터라는 하나의 인터페이스로 순회가 가능합니다
const mp = new Map();
mp.set('a', 1);
mp.set('b', 2);
mp.set('c', 3);
for (value of mp) {
console.log(value);
}
['a', 1]
['b', 2]
['c', 3]
const st = new Set();
st.add(1);
st.add(2);
st.add(3);
for (value of st) {
console.log(value);
}
1,
2,
3