독서진행 : 189-202p (종이책)
오늘의 메모
- 프록시 디자인 패턴에서는 하나의 객체가 다른 객체에 대한 인터페이스로 동작한다. 퍼사드 패턴이 메서드 호출 몇 개를 결합시켜 편의를 제공하는 것에 불과하다면, 프록시는 클라이언트 객체와 실제 대상 객체 사이에 존재하면서 접근을 통제한다. 이 패턴은 비용이 증가하는 것처럼 보일 수도 있지만 실제로는 성능 개선에 도움을 준다. 프록시는 실제 대상 객체를 보호하여, 되도록 일을 적게 시키기 때문이다.
- 프록시 패턴의 한 예로, 객체를 초기화하는 데 많은 비용이 들지만, 실제로 초기화한 후에는 한 번도 사용하지 않는다고 해보자. 이런 경우에 실제 대상 객체에 대한 인터페이스로 프록시를 사용하면 도움이 된다. 프록시는 초기화 요청을 대신 받지만, 실제 대상 객체가 정말로 사용되기 전까지는 이 요청을 전달하지 않는다.
- 프록시 패턴은 실제 대상 객체가 비용이 많이 드는 작업을 할 때 유용하다. 네트워크 요청은 웹 애플리케이션에서 가장 비용이 많이 드는 작업중 하나다. 따라서 가능한 많은 HTTP 요청들을 하나로 결합하는 게 효과적이다.
- HTTP 서비스를 직접 호출하는 대신 proxy를 호출한다. proxy는 요청을 전달하기 전에 잠시 기다린다. 시간을 정해 그 시간동안 다른 호출이 들어오면 하나로 병합한다. 개별 요청들을 병합시킴으로써 사용자 경험의 속도를 개선하는 데 도움이 된다. 웹서버 역시 처리할 요청의 수가 줄어들기 때문에 부하를 상당히 덜 수 있다.
- 프록시의 새로운 cache 프로퍼티에 이전 요청의 결과를 캐시해두면, 실제 http 객체를 더욱 보호할 수 있다.
- 애플리케이션이 점차 커져가면서, 더욱 더 많은 객체들이 추가된다. 애플리케이션을 리팩터링하는 동안, 객체들이 제거되거나 재배치되기도 한다. 객체들이 서로에 대해 너무 많은 정보를 아는 상태로 직접 통신하게 되면 서로간에 결합도가 높아져 바람직하지 않다. 객체들이 강하게 결합되면, 다른 객체들에 영향을 주지 않고 하나의 객체를 수정하기가 어렵다. 매우 간단한 변경도 어려워지고, 수정에 필요한 시간을 예측하는 것이 사실상 불가능해진다.
- 중재자 패턴은 독립된 동료 객체들을 직접 통신하지 않고, 중재자 객체를 거친다. 동료 객체들은 자신의 상태가 변경되면 중재자에게 알리고, 중재자는 이 변경 사항을 알아야 하는 다른 동료 객체들에게 알린다.
프록시는 자주 듣는 용어이지만 프록시 서버라던가 프록시 우회라든가
항상 기억하기 어려웠다. 대강 느낌만 기억하고 있었다 중간에서 도와주는 아이로.. ? 용도가 워낙 다양해서 느낌만 기억하고 필요할 때 찾아보자라 생각했었다
심지어, 최근에 신 프레임워크를 구식 웹 서버에 연결하는데 지원하지 않아서
전용 프록시를 하나 더 추가해서 쓰라는 제안에 조용히 인터넷 창을 닫았었다..
그리고 예전 회사의 동료를 만나서 동료가 프록시에 대해서 뭘 했었다 라고 했었는데
또 남의 일이라고 귀 기울이며 듣지 않았었다.. 그렇구나 하고 넘어갔었는데
이렇게 직접적으로 프록시 패턴에 대해서 예제를 본 것은 처음이었다
아마 동료가 구현한 것도 자바스크립트의 HTTP 요청에서 일정시간 동안 데이터 리스트 병합 요청을 했던 것 같다
리스트 성능 개선에서 나온 이야기였으니까?
당장에 실습할 수 있는 좋은 사례들도 뽑을 수 있을 거 같다
중재자 패턴도 재밌겠지만 이건 잘 할 수 있을 것 같고
프록시 패턴을 도전해보면 많이 부딪히고 배울 수 있을 거 같다
2022.12.28 - [전체보기] - 자바스크립트 코딩 기법과 핵심 패턴 - Day 1
2023.01.27 - [습관/독서] - 자바스크립트 코딩 기법과 핵심 패턴 - Day 2
2023.01.28 - [습관/독서] - 자바스크립트 코딩 기법과 핵심 패턴 - Day 3
2023.01.30 - [습관/독서] - 자바스크립트 코딩 기법과 핵심 패턴 - Day 4
2023.01.31 - [습관/독서] - 자바스크립트 코딩 기법과 핵심 패턴 - Day 5
2023.02.01 - [습관/독서] - 자바스크립트 코딩 기법과 핵심 패턴 - Day 6
2023.02.03 - [습관/독서] - 자바스크립트 코딩 기법과 핵심 패턴 - Day 7
2023.02.05 - [습관/독서] - 자바스크립트 코딩 기법과 핵심 패턴 - Day 8
2023.02.07 - [습관/독서] - 자바스크립트 코딩 기법과 핵심 패턴 - Day 9
2023.02.08 - [습관/독서] - 자바스크립트 코딩 기법과 핵심 패턴 - Day 10
'습관 > 독서' 카테고리의 다른 글
뉴스는 싫지만 호구도 되기 싫다 : 경제상식 편 - Day 6 (0) | 2023.02.28 |
---|---|
뉴스는 싫지만 호구도 되기 싫다 : 경제상식 편 - Day 5 (0) | 2023.02.23 |
뉴스는 싫지만 호구도 되기 싫다 : 경제상식 편 - Day 4 (0) | 2023.02.23 |
뉴스는 싫지만 호구도 되기 싫다 : 경제상식 편 - Day 3 (1) | 2023.02.22 |
자바스크립트 코딩 기법과 핵심 패턴 - Day 12 (0) | 2023.02.20 |