WIPIVERSE

로봇 미들웨어

개요

봇 미들웨어(Bot Middleware) 는 크게 두 가지 맥락에서 사용되는 용어이다. 하나는 Microsoft Bot Framework SDK v4에서 정의하는 개념으로, 어댑터(Adapter)와 봇 로직(Bot Logic) 사이에 위치하여 봇으로 들어오고 나가는 모든 작업(Activity)을 가로채고 처리하는 소프트웨어 계층을 의미한다. 다른 하나는 로봇 미들웨어(Robot Middleware) 로, 하드웨어 로봇이 다른 기계(컴퓨터, PDA 등)와 통신하거나 제어하기 위한 프로그램을 가리킨다.


1. Bot Framework에서의 봇 미들웨어

정의

Microsoft Bot Framework SDK v4에서 미들웨어는 어댑터와 봇 논리 사이에 있는 클래스이며, 초기화 중에 어댑터의 미들웨어 컬렉션에 추가된다. SDK를 사용하면 사용자 고유의 미들웨어를 작성하거나 다른 사람이 만든 미들웨어를 추가할 수 있다. 봇으로 들어오거나 봇에서 나가는 모든 작업(Activity)은 미들웨어를 통과한다.

동작 방식

  • 어댑터는 봇 미들웨어 파이프라인을 통해 들어오는 작업을 처리하고 봇의 논리로 전달한 후 다시 내보낸다.
  • 각 작업이 봇으로 들어가고 나올 때, 미들웨어의 각 구성 요소는 봇 논리가 실행되기 전과 후에 작업을 검사하거나 작업에 따라 동작한다.
  • 미들웨어는 추가된 순서대로 호출된다. 각 미들웨어는 next 대리자(Delegate)를 호출하여 파이프라인의 다음 미들웨어에 제어를 전달한다.

주요 사용 사례

  1. 모든 활동 관찰 또는 기록: 봇이 수신하는 모든 메시지 활동을 로깅하거나, 봇이 응답을 생성하지 않은 경우 대체 응답을 제공하는 등 전역적인 처리가 필요할 때 사용된다.
  2. 턴 컨텍스트 수정 또는 향상: 대화 상태 정보를 확인하고, 외부 데이터 소스를 쿼리한 후 봇 논리에 실행을 전달하기 전에 컨텍스트 객체(Turn Context)에 추가 정보를 제공한다.
  3. 인증, 예외 처리, 메시지 변환: 공통적으로 처리해야 하는 전처리/후처리 작업을 미들웨어에서 수행한다.

쇼트 서킷(Short Circuit)

미들웨어가 next 대리자를 호출하지 않으면 파이프라인이 단락(Short Circuit) 되어 후속 미들웨어와 봇 턴 처리기가 실행되지 않는다. 이를 통해 특정 조건에서 봇 로직 실행을 중단시킬 수 있다.

상태 처리

상태 저장 시 주의할 점은, 봇의 턴 처리기가 반환된 후에 실행되는 사용자 지정 미들웨어에서 수행된 상태 업데이트는 자동으로 저장되지 않을 수 있다는 것이다. 해결 방법으로 자동 저장 변경(Auto-save Changes) 미들웨어를 미들웨어 스택의 시작 부분에 추가하여, 모든 사용자 지정 미들웨어가 완료된 후에 변경 내용이 저장되도록 보장할 수 있다.


2. 로봇 미들웨어 (Robot Middleware)

정의

로봇 미들웨어는 하드웨어인 로봇이 다른 종류의 기계들(예: PDA, 컴퓨터)과 통신하거나 기계들을 제어하기 위한 프로그램이다. 이는 기계어로 작동되는 로봇 자체를 통제하면서 외부의 연결을 받고, 기계어 또는 스크립트 형식의 명령을 받아들이고 자신의 상태와 작업 결과를 반환해주는 역할을 한다.

특징

  • 프로그램 계층에서 네이티브 수준 바로 위에 위치한다.
  • 프로그래머는 최상위 계층 언어만 사용하여 하드웨어에 관한 직접적인 이해 없이 기계어를 쓰지 않고 프로그래밍할 수 있다.
  • 로봇의 하드웨어 추상화 계층을 제공하여 다양한 로봇 하드웨어 플랫폼 간의 이식성을 높인다.

대표적인 로봇 미들웨어

  • ROS (Robot Operating System): 가장 널리 사용되는 로봇 미들웨어로, 하드웨어 추상화, 디바이스 제어, 메시지 전달, 패키지 관리 등을 제공한다.
  • YARP (Yet Another Robot Platform): 로봇 하드웨어와 소프트웨어 간의 통신을 위한 미들웨어.
  • OROCOS (Open Robot Control Software): 로봇 제어를 위한 실시간 미들웨어.

3. 일반적인 미들웨어(Middleware)와의 관계

봇 미들웨어는 일반적인 소프트웨어 공학에서의 미들웨어(Middleware) 개념의 특수한 사례이다. 일반 미들웨어는 운영체제(OS)와 응용 프로그램 사이, 또는 서로 다른 애플리케이션 간의 데이터 통신과 상호 운용성을 돕는 소프트웨어 계층을 의미한다. 봇 미들웨어는 이 개념을 봇(Bot)이라는 특정 도메인에 적용한 것으로, 봇의 활동 처리 파이프라인에서 중간 처리 계층의 역할을 수행한다.


참고 자료

  • Microsoft Learn: "미들웨어 (Middleware) - Bot Service" (azure-bot-service-4.0)
  • 위키백과: "로봇 미들웨어" (ko.wikipedia.org)
  • AWS: "미들웨어란 무엇인가요?"
  • IBM: "미들웨어란?"
둘러보기

더 찾아볼 만한 주제

    전체 문서 보기