분산 컴퓨팅, RPC vs. XML Web Service 비교
📌 분산 컴퓨팅(Distributed Computing)이란?
분산 컴퓨팅(Distributed Computing)이란, 말 그대로 여러 대의 컴퓨터가 분산되어 하나의 일을 해결하는 개념이다.
대량의 데이터 및 연산을 처리해야 하는 거대한 문제를 해결하고자, 원격지에 존재하는 여러 대의 컴퓨터들을 이용하여 협업하는 것으로,
대규모의 데이터베이스와 빅데이터를 분산하여 일을 처리하거나, 여러 프로그램들을 분산시켜 원격으로 실행하는 경우이다.
마치 하나의 컴퓨터인 것처럼 동작하며, 자원의 공유와 협업이 가능하기 때문에 효율적으로 활용이 가능하고, 확장성이 우수하다.
✅ 장점
- 자원의 활용이 효율적
- 자원의 공유와 협업이 가능
- 확장성이 좋다.
- 빠른 성능을 제공
원격 컴퓨터를 이용하여 협업한다고 하는데,, 원격 컴퓨터를 어떻게 실행시킨다는 것일까??
❔ RPC(Remote Procedure Call)
RPC란, 원격 제어를 위해 원격지에 존재하는 프로시저나 함수를 실행시키는 방법이다.
과거부터 보편적으로 사용되던 방식으로, 위치에 상관없이 프로시저를 호출시킬 수 있는 프로토콜이다.
📌 분산 컴포넌트(Distributed Component) 컴퓨팅
분산 컴퓨팅에서 더 나아가 분산 컴포넌트 컴퓨팅이란 무엇일까?
먼저, 컴포넌트(Component)란 재사용이 가능한 독립된 소프트웨어 모듈을 의미한다. 객체 형태의 프로그램 일부의 형태로 재사용성이라는 장점과, 개발 생산성을 높이고 개발 기간을 줄일 수 있다는 장점이 있다.
분산 컴포넌트 컴퓨팅이란, 바로 원격지에 존재하는 컴포넌트들을 이용하여 처리하는 컴퓨팅 기술이다.
분산 컴포넌트 컴퓨팅 서비스들을 찾아보면, 서로의 환경이 일치해야만 한다는 문제점을 알 수 있다.
Java 환경으로 작성된 프로그램 간에서만 실행이 가능하다던가, 운영체제가 동일해야만 실행이 가능하고, 그것이 아니라면 Broker가 설치가 된 컴퓨터 간에서만 실행이 가능하다.
이렇게 다양한 운영체제, 프로그래밍 언어, 하드웨어 등(플랫폼) 환경이 동일하지 않다면, 서비스를 사용하지도 못한다는 단점이 존재한다.
또한, 방화벽과 같은 보안에 의해 통신이 차단되어 이용에 문제가 발생하기도 한다. 다수의 컴퓨터끼리 연결되어 있기 때문에 보안 취약점이 존재할 수 있다.
❗ 단점
- 연결 지향적인 서비스 ( Http 통신과 반대로, 연결이 계속 유지되어야만 한다.)
- 방화벽으로 인한 이용의 한계
- 플랫폼에 종속적
📌 XML Web Services
XML Web Services는 바로 XML을 기반으로 하는 분산 컴포넌트 모델이다.
XML이란, Extensible Markup Language의 약자로, 데이터를 정의하고 저장하며 공유할 수 있는 마크업 언어이다.
XML Web Services는 그림에서처럼 HTTP Protocol을 이용하여 XML의 형태로 요청이 진행된다.
클라이언트의 플랫폼을 살펴보면, 사용되는 플랫폼이 다른 것을 볼 수 있다. 이처럼 플랫폼에 독립적이라는 특징이 있다.
✅ 장점
- 플램폼에 독립적
- 동기, 비동기 메시징
- HTTP Protocol 이용
📌 RPC vs. XML Web Services
RPC는 주로 TCP/IP와 같은 전송 프로토콜이나 전용 프로토콜을 이용하며, XML Web Services는 HTTP 프로토콜을 이용한다.
RPC는 바이너리의 형태로 데이터를 표현하며, XML Web Services는 XML 형태로 데이터를 표현한다.
따라서, 메시지 크기가 더 작은 RPC가 처리 속도가 빠르며, XML Web Services는 메시지 크기가 커서 처리 속도가 좀더 느리다.
RPC는 플랫폼에 따라 구현 방식이 달라지므로, 플랫폼 간의 상호 운용성이 낮지만, XML Web Services는 다양한 플랫폼 간에 상호 운용성이 높다.
이제 기존의 분산 컴퓨팅에 이용되어 온 RPC와 XML Web Services를 표로 정리해보면,
RPC | XML Web Services |
처리 속도가 빠름 | 처리 속도가 느림 |
전용 프로토콜을 이용해야 함 | HTTP 프로토콜 이용 |
동기 메시징만 가능 | 동기, 비동기 메시징 가능 |
플랫폼에 종속적 | 플랫폼에 독립적 |
밀착 결합형 (tightly coupled) | 느슨한 결합형 (loosely coupled) |