미들웨어란?

LeeYulhee·2024년 4월 8일

👉 미들웨어란?


  • 운영 체제(OS)와 애플리케이션 소프트웨어 사이에서 중간 역할을 하는 소프트웨어
  • 컴퓨터 네트워크, 데이터베이스, 애플리케이션 서버 등 다양한 시스템 간의 통신과 데이터 관리를 용이하게 하는 역할
  • 미들웨어는 복잡한 하부 시스템을 추상화하여 개발자가 다양한 기술과 프로토콜을 직접 다루지 않고도 애플리케이션을 개발할 수 있도록 도와 줌
  • 미들웨어는 다양한 기능과 목적을 가진 여러 컴포넌트로 구성



👉 미들웨어의 주요 역할


  • 통신 및 메시징
    • 미들웨어는 네트워크상의 다른 애플리케이션 또는 시스템 간의 통신을 쉽게 해 줌
    • 예를 들어, 메시지 큐 시스템은 서로 다른 시스템 간에 데이터를 전송하고 받는 것을 도와 줌
  • 데이터 변환
    • 서로 다른 시스템은 데이터 포맷이 다를 수 있는데, 미들웨어는 이러한 데이터 포맷을 변환하여 다른 시스템이 이해할 수 있도록 도와 줌
  • 인증 및 보안
    • 미들웨어는 애플리케이션의 보안을 강화하는데 도움을 줌
    • 사용자 인증, 데이터 암호화 등 보안 관련 기능을 제공
      • 사용자 인증과 권한 부여 과정을 관리하여 애플리케이션에 접근할 수 있는 사용자를 제어
      • 데이터를 암호화하여 네트워크를 통해 전송되는 동안 데이터를 보호하는 등의 역할
  • 트랜잭션 관리
    • 데이터베이스 작업이나 다른 형태의 작업을 수행할 때, 미들웨어는 작업의 일관성과 정확성을 보장하기 위해 트랜잭션을 관리할 수 있음
  • 로드 밸런싱
    • 여러 서버에 걸쳐 애플리케이션의 로드(작업량)을 분산시켜 성능을 최적화하는 기능을 제공



👉 미들웨어의 컴포넌트


  • 통신 미들웨어
    • 애플리케이션 간의 데이터 전송과 메시징 기능을 담당
    • 예시
      • 메시지 지향 미들웨어(MOM)
      • 원격 프로시저 호출(RPC)과 같은 기술
  • 응용 프로그램 서버
    • 애플리케이션의 실행 환경을 제공
    • 웹 애플리케이션과 엔터프라이즈 애플리케이션을 지원하는 데 중요
    • 웹 서버(WS)와 AP 서버(WAS)가 이 카테고리에 속함
    • 예시
      • Apache, Nginx, Tomcat, JBoss, IIS
  • 데이터베이스 미들웨어
    • 애플리케이션과 데이터베이스 사이의 인터페이스 역할을 하며, 데이터의 쿼리, 관리, 변환 작업을 도와 줌
    • 예시
      • ODBC, JDBC, Oracle, MySQL 등이 여기에 해당
  • 트랜잭션 미들웨어
    • 복잡한 트랜잭션 관리 기능을 제공하여, 여러 데이터베이스나 시스템 간의 트랜잭션을 조율하고 일관성을 유지
    • 분산 트랜잭션 처리를 위한 X/Open XA(X/Open XA)와 같은 표준이 있음
    • 예시
      • DTC(분산 트랜잭션 처리 Microsoft Distributed Transaction Coordinator)
      • JTA(Java Transaction API 일반적으로 Java EE 서버에 포함되어 있는 트랜잭션 관리자)
  • 오브젝트 미들웨어
    • 분산 객체 시스템의 통신을 담당
    • 예시
      • CORBA (Common Object Request Broker Architecture) : Orbix, JacORB
      • Java RMI (Remote Method Invocation) : Java RMI는 자바 플랫폼 내장 기능
  • 콘텐츠 중심 미들웨어
    • 디지털 미디어 콘텐츠의 관리와 배포를 담당
    • 예시
      • CMS (콘텐츠 관리 시스템) : WordPress, Drupal, Joomla
  • 포털 미들웨어
    • 사용자에게 단일 접점을 제공하여 다양한 애플리케이션과 서비스에 접근할 수 있게 함
    • 사용자 맞춤형 정보 접근과 통합된 사용자 인터페이스를 제공
    • 예시
      • 엔터프라이즈 포털 솔루션 : Liferay, IBM WebSphere Portal
profile
끝없이 성장하고자 하는 백엔드 개발자입니다.

0개의 댓글