우리가 사용하는 수많은 서비스 뒤에는 보이지 않는 복잡한 세상이 있다. 자바(Java)로 만든 서버와 C++로 만든 클라이언트가, 리눅스 서버와 윈도우 PC가 마치 한 몸처럼 데이터를 주고받는다. 이처럼 서로 다른 언어, 다른 운영체제, 다른 하드웨어의 장벽을 넘어 소프트웨어 컴포넌트들이 원활하게 통신할 수 있도록 돕는 기술이 바로 '미들웨어'이다.
그리고 그 미들웨어 기술의 역사에서 매우 중요한 위치를 차지하는 것이 바로 ORB(Object Request Broker, 객체 요청 브로커)이다.
ORB는 분산 객체 컴퓨팅 표준인 CORBA(Common Object Request Broker Architecture) 의 핵심 엔진이자 심장이다. 간단히 말해, 네트워크로 연결된 서로 다른 컴퓨터에 존재하는 객체(소프트웨어 부품)들이 마치 같은 컴퓨터 안에 있는 것처럼 서로의 메소드(기능)를 호출하고 통신할 수 있게 해주는 중개인이다.
개발자 입장에서 ORB가 없다면, 다른 컴퓨터의 객체를 사용하기 위해 소켓 통신, 데이터 직렬화, 네트워크 오류 처리 등 수많은 저수준(low-level) 작업을 직접 구현해야 한다. 하지만 ORB를 사용하면 이러한 복잡한 네트워크 관련 처리를 모두 ORB에게 위임하고, 개발자는 오직 비즈니스 로직에만 집중할 수 있게 된다. ORB는 일종의 '소프트웨어 버스' 역할을 하며 객체 간의 모든 요청과 응답을 투명하게 전달한다.
ORB가 어떻게 이 모든 것을 가능하게 하는지 그 핵심 동작 원리는 무엇일까? ORB의 가장 큰 특징은 '투명성'을 제공하는 것이다.
- 위치 투명성 (Location Transparency): 클라이언트는 자신이 호출하려는 객체가 로컬 컴퓨터에 있는지, 네트워크 건너편 다른 대륙의 서버에 있는지 전혀 알 필요가 없다.
- 구현 투명성 (Implementation Transparency): 클라이언트는 서버 객체가 어떤 프로그래밍 언어로 만들어졌는지 신경 쓸 필요가 없다.
이러한 투명성은 다양한 구성 요소들의 유기적인 협력을 통해 이루어진다.
- IDL (Interface Definition Language): 특정 프로그래밍 언어에 종속되지 않는 중립적인 언어로 객체의 인터페이스(어떤 메소드를 제공하는지, 각 메소드는 어떤 파라미터를 받는지 등)를 정의한다. 이 IDL 파일을 컴파일하면 각 언어에 맞는 클라이언트 측 '스텁(Stub)'과 서버 측 '스켈레톤(Skeleton)' 코드가 자동으로 생성된다.
- 스텁 (Stub): 클라이언트 측에 존재하는 프록시(대리인) 객체이다. 클라이언트는 원격 객체가 아닌 이 스텁 객체의 메소드를 호출한다. 스텁은 클라이언트의 요청을 ORB가 이해할 수 있는 형태로 변환(마샬링)하여 네트워크를 통해 서버로 전송하는 역할을 한다.
- 스켈레톤 (Skeleton): 서버 측에 존재하며 스텁과 반대 역할을 한다. ORB로부터 요청을 받아 원본 데이터 형태로 변환(언마샬링)한 뒤, 실제 서버 객체의 해당 메소드를 호출한다. 그리고 그 결과를 다시 ORB를 통해 클라이언트로 전달한다.
- IIOP (Internet Inter-ORB Protocol): ORB들끼리 인터넷(TCP/IP)을 통해 통신하기 위한 표준 프로토콜이다. 이 프로토콜 덕분에 서로 다른 벤더가 만든 ORB 제품이라도 상호 통신이 가능하다.
솔직히 말해, 오늘날 새롭게 시작하는 프로젝트에서 CORBA와 ORB를 주력 기술로 선택하는 경우는 드물다. 웹의 발전과 함께 등장한 RESTful API나 gRPC와 같은 기술들이 훨씬 더 간단하고 유연하며, 많은 개발자에게 익숙하기 때문이다. JSON, XML과 HTTP를 사용하는 REST API는 배우기 쉽고, 다양한 플랫폼에서 폭넓게 지원된다는 강력한 장점이 있다.
하지만 그렇다고 해서 ORB가 완전히 사라진 기술은 아니다. ORB는 강력한 타입 시스템과 언어 독립성, 높은 성능을 바탕으로 여전히 특정 도메인에서 중요한 역할을 수행하고 있다. 특히 수십 년간 안정성이 검증되어야 하는 금융, 통신, 국방, 항공 우주, 대규모 산업 제어 시스템 등 미션 크리티컬한 분야의 레거시 시스템에서는 여전히 CORBA와 ORB가 굳건히 자리를 지키고 있다.
결론적으로 ORB는 분산 컴퓨팅의 개념을 한 단계 발전시킨 선구적인 기술이다. 비록 주류의 자리에서는 내려왔지만, ORB가 제시했던 '이기종 시스템 간의 원활한 연동'이라는 목표와 위치 투명성, 인터페이스 정의와 같은 개념들은 오늘날의 마이크로서비스 아키텍처(MSA)와 API 기반 통신 기술에 깊은 영감을 주었음은 부정할 수 없는 사실이다.
#ORB #ObjectRequestBroker #CORBA #미들웨어 #분산컴퓨팅 #IT기술 #프로그래밍 #개발자 #레거시시스템 #IIOP #IDL
'IT 정보 > 용어' 카테고리의 다른 글
아직도 SOAP를 알아야 할까? 웹 서비스의 근본 SOAP의 모든 것 (0) | 2025.08.24 |
---|---|
CORBA의 국제 공용어, IIOP 프로토콜의 모든 것 (0) | 2025.08.23 |
WebIDL이란? 웹 브라우저의 보이지 않는 설계도 파헤치기 (0) | 2025.08.21 |
Thrift란? 절약이 아니다? 개발자를 위한 Apache Thrift 가이드 (0) | 2025.08.20 |
CORBA란? 사라진 기술에서 배우는 분산 컴퓨팅의 역사 (1) | 2025.08.19 |