DevOps/Middleware
Middleware 란?
peanutwalnut
2025. 3. 22. 14:11
미들웨어(Middleware)는 소프트웨어 시스템 내에서 서로 다른 애플리케이션, 서비스, 컴포넌트 간의 통신과 데이터 교환을 중개하거나 보조하는 역할을 하는 소프트웨어 계층입니다. 좀 더 구체적으로 설명하면:
- 역할과 목적
- 통신 중개: 서로 다른 시스템이나 애플리케이션이 직접 연결되지 않고도 통신할 수 있도록 중간에서 연결 역할을 합니다.
- 추가 기능 제공: 인증, 로깅, 캐싱, 오류 처리, 데이터 변환, 메시징 등의 공통 기능을 중앙에서 처리하여 개별 애플리케이션 코드가 간결해지고, 재사용성이 높아집니다.
- 종류와 활용 사례
- 웹 애플리케이션 미들웨어: 예를 들어, Express.js 같은 Node.js 프레임워크에서는 요청(request)과 응답(response) 사이에서 인증, 로깅, 데이터 파싱 등 다양한 작업을 수행하는 함수들을 미들웨어로 구현합니다.
- 엔터프라이즈 미들웨어: 대규모 시스템에서는 다양한 애플리케이션을 연결하기 위해 메시지 큐, API 게이트웨이, 서비스 버스 등으로 사용됩니다.
- 데이터베이스 미들웨어: 애플리케이션과 데이터베이스 사이에서 연결, 쿼리 최적화, 보안 기능을 제공하는 역할을 하기도 합니다.
- 장점
- 유연성: 각 기능을 독립적으로 관리할 수 있어, 유지보수와 확장이 용이합니다.
- 코드 재사용: 여러 애플리케이션에서 공통적으로 필요한 기능(예: 인증, 로깅)을 한 번만 구현하고 여러 곳에서 활용할 수 있습니다.
- 분산 시스템 지원: 서로 다른 기술 스택이나 플랫폼 간의 통합이 필요할 때, 미들웨어가 상호 운용성을 지원합니다.
대표적인 미들웨어 종류는 다음과 같습니다:
- 메시지 지향 미들웨어 (Message-Oriented Middleware, MOM)
- 메시지를 비동기적으로 전달하여 애플리케이션 간의 통신을 중개합니다.
- 예: RabbitMQ, Apache Kafka, ActiveMQ
- 원격 프로시저 호출 미들웨어 (Remote Procedure Call, RPC)
- 네트워크를 통해 원격 시스템의 함수를 호출할 수 있도록 지원합니다.
- 예: gRPC, XML-RPC
- 객체 요청 중개자 (Object Request Broker, ORB)
- 분산 객체 시스템에서 클라이언트와 서버 간의 객체 호출을 중개합니다.
- 예: CORBA
- 데이터베이스 미들웨어
- 애플리케이션과 데이터베이스 간의 연결, 쿼리, 트랜잭션 관리 등을 지원합니다.
- 예: ODBC, JDBC
- 트랜잭션 미들웨어
- 여러 애플리케이션 또는 서비스 간의 트랜잭션을 조정하고 관리합니다.
- 예: IBM CICS, Tuxedo
- 엔터프라이즈 서비스 버스 (Enterprise Service Bus, ESB)
- 다양한 애플리케이션과 서비스들을 통합하고, 메시지 라우팅, 변환, 프로토콜 변환 등을 수행합니다.
- 예: Mule ESB, Apache ServiceMix
- API 게이트웨이 및 애플리케이션 서버
- 클라이언트 요청을 받아 백엔드 서비스로 라우팅하고, 보안, 인증, 로깅 등의 기능을 제공합니다.
- 예: Kong, NGINX, Express.js (Node.js 미들웨어), Spring Boot에서 제공하는 필터/인터셉터