원격 호출 및 미들웨어
원격 호출은 프로그램이 마치 로컬인 것처럼 다른 시스템에서 프로시저나 메서드를 호출할 수 있게 하며, 미들웨어는 네트워크를 통해 이러한 기능과 관련 추상화를 제공하는 소프트웨어 계층입니다.
PaperMind(으)로 주제 찾기곧 제공Find papers & topics
Tools & resources
Learn & explore
동영상곧 제공
Definition
원격 호출은 클라이언트가 로컬 프로시저 호출 인터페이스를 사용하여 원격 프로세스에서 작업을 호출하고, 기본 미들웨어가 인자 마샬링, 전송 및 오류 보고를 처리하는 통신 추상화입니다.
Scope
이 주제는 원격 프로시저 호출(RPC) 및 원격 메서드 호출, 인자 마샬링, 바인딩 및 명명, 호출 의미론(최대 한 번, 최소 한 번, 정확히 한 번), 그리고 이를 구현하는 미들웨어 계층(객체 브로커, 메시지 지향 미들웨어, 최신 RPC 프레임워크)을 다룹니다. 또한 투명성의 잘 알려진 한계, 즉 원격 호출이 로컬 호출과 필연적으로 다른 방식에 대해서도 다룹니다.
Core questions
- 네트워크 상호작용을 로컬 프로시저 호출의 편리함으로 어떻게 표현할 수 있는가?
- 메시지 손실 및 프로세스 충돌이 있는 상황에서 어떤 호출 의미론을 달성할 수 있는가?
- 위치 투명성이라는 추상화는 필연적으로 어디에서 무너지는가?
Key theories
- 원격 프로시저 호출
- RPC 추상화는 원격 상호작용을 로컬처럼 보이는 호출로 묶으며, 클라이언트 및 서버 스텁이 인자를 마샬링하고 언마샬링합니다. 최대 한 번(at-most-once) 의미론을 달성하는 것조차 재전송 및 중복 감지에 대한 신중한 처리가 필요합니다.
- 미들웨어 계층화
- 미들웨어는 운영 체제와 애플리케이션 사이에 위치하여 명명, 마샬링 및 호출 서비스를 제공하며, 객체 요청 브로커에서 메시지 지향 및 발행-구독 시스템에 이르기까지 다양합니다.
- 분산 투명성의 한계
- 지연 시간, 부분적 실패, 동시성 및 메모리 접근으로 인해 원격 객체를 로컬 객체와 완전히 구별할 수 없으므로, 이러한 차이를 무시하는 설계는 부하 또는 분할 상황에서 실패하는 경향이 있습니다.
Clinical relevance
RPC와 미들웨어는 현대 분산 소프트웨어의 연결 조직입니다. 마이크로서비스 아키텍처, 서비스 메시, 클라우드 API는 모두 원격 호출 프레임워크를 기반으로 구축되며, 설계자는 호출 의미론과 부분적 실패에 대해 명시적으로 고려해야 합니다.
History
Birrell과 Nelson의 1984년 논문은 RPC를 실용적인 추상화로 확립했습니다. 1990년대에는 CORBA 및 Java RMI와 같은 객체 지향 미들웨어가 등장했으며, Waldo와 동료들의 투명성 한계에 대한 영향력 있는 경고로 인해 그 사용이 조절되었습니다. 현대 프레임워크는 웹을 통한 경량의 스키마 기반 RPC로 그 계보를 이어가고 있습니다.
Debates
- 원격 호출이 로컬 호출과 완전히 동일하게 보이도록 해야 하는가?
- 완전한 위치 투명성은 프로그래밍을 단순화하지만 지연 시간과 부분적 실패를 숨겨 취약한 시스템으로 이어질 수 있습니다. Waldo와 동료들이 주장한 반대 의견은 개발자가 실패를 명시적으로 처리할 수 있도록 분산이 노출되어야 한다는 것입니다.
Key figures
- Andrew Birrell
- Bruce Nelson
- Jim Waldo
- Andrew S. Tanenbaum
Related topics
Seminal works
- birrell1984
- waldo1994
Frequently asked questions
- 최대 한 번(at-most-once) 호출 의미론은 무엇을 의미합니까?
- 이는 요청이 재전송되더라도 원격 작업이 한 번만 실행되거나 전혀 실행되지 않음을 보장하며, 그 이상은 실행되지 않습니다. 정확히 한 번(exactly-once) 실행은 실패 상황에서 보장하기 훨씬 어렵기 때문에 이것이 일반적인 실용적 목표입니다.