개발 일지/Apache Kafka

미들웨어(Middleware)

계란💕 2023. 3. 9. 10:56

미들웨어(Middleware)

  • 미들웨어는 서로 다른 애플리케이션통신하는데 사용되는 소프트웨어를 말한다. 
  • 미들웨어는 OS와 해당 OS 상에서 실행되는 애플리케이션 사이에 존재하는 소프트웨어이다. 
  • 단일 시스템에 원할하게 통합할 수 있도록 다양한 기수르 도구, 데이터베이스 간에 다리 역할을 한다. 
  • 웹 브라우저가 데이터베이스로부터 데이터를 저장하거나 읽어올 수 있도록 미들웨어가 존재한다. 

미들웨어의 종류

  • DB 접속 미들웨어: 애플리케이션과 데이터베이스 서버를 연결해주는 미들웨어
  • 웹 애플리케이션 서버(Web Application Server): 애플리테이션과 데이터베이스 서버를 연결해주는 미들웨어
  • 메시지 지향 미들웨어(Message Oriented Middleware, MOM)
    • 분산 응용 프로그램 간에 미시지를 보내고 받으면서 데이터를 전달하고 교환할 수 있도록 한다. 
    • 메시징 공급자를 사용해서 메시징 작업을 중재한다. 
    • 클라이언트, 메시지, MOM 공급자(API, 관리 도구 포함)로 구성된다. 
    • 메시지를 통해 여러 분산되어 있는 시스템간의 Connector 역할로 결합성을 낮추고 이들끼리 서로 실시간 비동기식 데이터 교환하는 소프트웨어
    • 단점: 느슨한 연결 (RPC 시스템에서 호출 함수는 호출된 함수가 작업을 완료할 때까지 반환되지 않는다. )
  • 원격 프로시저 호출(Remote Procedure Call, RPC): 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게 하는 프로세스 간 통신 기술이다. 
  • ORB(Object Request Broker)
  • TP 모니터(Transaction Processing monitor)
  • 엔터프라이즈 서비스 버스(Enterprise Service Bus)

MOM이 비동기 방식으로 처리되는 이유 

  • MOM(Message Oriented Middleware)은 일반적으로 메시지를 비동기적으로 처리하므로 메시지의 발신자와 수신자가 동시에 활성화될 필요가 없다. 이는 전송 및 수신 프로세스를 분리하고 분산 시스템의 유연성확장성을 향상시키기 위해 수행된다.
  • 비동기 메시징을 사용하면 발신인이 대기열 또는 주제로 메시지를 보낸 다음 응답을 기다리지 않고 다른 태스크를 계속 수행할 수 있다. 그런 다음 메시지를 수신할 수 있게 되면 메시지가 수신자에게 배달된다. 즉, MOM 시스템은 많은 수의 메시지를 처리하고 발신자가 각 수신자가 메시지를 처리할 때까지 기다리지 않고 여러 수신자에게 배포할 수 있다.
  • 메시지가 신뢰할 수 있고 올바른 순서로 전달되도록 하기 위해 MOM 시스템은 일반적으로 다양한 형태의 메시지 큐 및 라우팅을 구현한다. 여기에는 대기열의 메시지를 버퍼링하고 라우팅 알고리즘을 사용하여 각 메시지를 수신할 수신자를 결정하는 작업이 포함된다. 이러한 프로세스는 일반적으로 비동기적으로 처리되므로 메시지가 대기열에 저장되고 라우팅되는 동안 시스템이 메시지를 계속 처리하고 다른 작업을 수행할 수 있다.
  • 또한 비동기 메시징을 사용하면 분산 시스템에서 내결함성과 복원력이 향상된다. 수신인을 일시적으로 사용할 수 없거나 메시지를 처리하지 못하는 경우, 발신인 또는 다른 수신인을 차단하지 않고 메시지를 다시 시도하거나 대체 수신인에게 라우트할 수 있다.
  • 요약하면, 메시지의 비동기 처리 및 전송은 분산 시스템에서 더 큰 유연성, 확장성 및 내결함성을 가능하게 하는 메시지 지향 미들웨어의 핵심 기능이다.

 

  cf) 내결함성(Fault Tolerance)

  • 하나 이상의 구성 요소가 고장나도 시스템이 중단 없이 계속 작동할 수 있는 능력을 말한다. 
  • 장애가 생기면 우회하는 방식으로 서비스를 지속하는 방식을 내결함성 있다고 한다. 
  • <=> 고가용성: 장애가 생기면 빠른 시간 안에 장애를 고치고 서비스를 지속하는 방식을 고가용성 있다고 한다. 

 

 

참고) 

https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-%EC%9E%90%EC%A3%BC-%EC%93%B0%EC%9D%B4%EB%8A%94-aws-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EC%9A%A9%EC%96%B4-%EC%A0%95%EB%A6%AC#%EB%82%B4%EA%B2%B0%ED%95%A8%EC%84%B1/%EC%9E%A5%EC%95%A0%EB%82%B4%EA%B5%AC%EC%84%B1

'개발 일지 > Apache Kafka' 카테고리의 다른 글

Apache Kafka와 구성 요소  (2) 2023.03.12
메시지 브로커(Message Broker)  (0) 2023.03.07