프록시 패턴은 RMI 라는 상당히 오래된 기술을 바탕으로 구현 방법을 제시하고 있습니다. 따라서, 이번 챕터에서는
- 어떤 문제가 있는지?
- 프록시 패턴이 뭔지?
- 어떻게 해결 하는지? : RMI
- RMI의 한계점과 그 대체재
이런 내용들에 대해 다루어 보려고 합니다.
프록시 패턴(State Pattern) ; 추상화
어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴
책에서 나오는 예제 - 뽑기기계 리모트에서 모니터링하기
이 챕터에서 나오는 프록시 패턴은 비교적 최근 말하는 프록시 객체에 대한 이야기가 아니다.
클라이언트 - 서버 간 객체를 주고받기 위한 대리인 객체를 어떻게 설계할 것인가에 대한 문제이다.
따라서, 객체를 어떻게 네트워크로 주고 받을 것인가? 에 대해 Java RMI
API를 그 해결법으로 제시하고 있다.
RMI(Remote Method Invocation)
자바의 원격 메소드 호출 라이브러리(Java.rmi.Remote)
장점
- 이기종 시스템 간 객체를 주고 받아 활용할 수 있다.
단점
- RMI 는 자바 라이브러리이기 때문에, 클라이언트 - 서버 둘 다 자바로 작성해야 한다.(결국 내부적으론 객체 직렬화 - 역직렬화)
생각해보자
프록시 패턴은 ‘이기종 시스템 간 객체를 어떻게 제어하는가?’ 에 대한 문제를
‘객체를 주고 받는 역할과 책임을 가진 별도 객체로 분리’하는 방법이다.
책에서 RMI 로 구현하고 있긴 하지만, 결국 REST
를 통해 json 으로 주고 받느냐gRPC
, GraphQL
등등 Infrastructure 차원에서는 변경이 있을 수 있으나,
결국 객체를 어떻게 원격에서 제어할 것인지? 에 대한 해결방법으로는 동일하다고 볼 수 있다.