미들웨어(Middleware)
미들웨어는 미들(Middle)과 소프트웨어(Software)의 합성어로, 운영체제와 해당 운영체제에서 실행되는 응용 프로그램 사이에서 운영체제가 제공하는 서비스 이외의 추가적인 서비스를 제공하는 소프트웨어를 의미한다. 즉, 운영 체제와 응용 소프트웨어 중간에서 접착제의 역할을 수행하는 것이다. 양쪽을 연결하여 쉽게 데이터를 주고받게 하는 매개 역할을 하는 소프트웨어로써 네트워크를 통해 연결된 수많은 컴퓨터에 있는 프로세스들에 추가적인 서비스를 이용할 수 있도록 연결해준다. 연결이라는 관점에서 소프트웨어 글루(Software Glue)로 표현되기도 한다. 클라이언트-서버 구조에서 웹브라우저에서 데이터베이스로부터의 데이터를 열람하거나 저장할 수 있게 중간에 미들웨어가 존재하는 것이다. 애플리케이션들을 직접 연결할 경우, 일반적으로는 관련되는 모든 애플리케이션에 코드를 추가 수정하여 서로 대화할 수 있게 지시해야 하는데, 미들웨어는 이 대화 과정에서 독립적인 제삼자의 역할로서 번역을 수행한다. 따라서 모든 애플리케이션에 추가로 코드를 넣는 번거로움을 피할 수 있다. 미들웨어는 표준화된 인터페이스를 제공함으로써 시스템 간의 데이터 교환에 일관성을 보장하고 통신 제공 방법이나 기능에 따라 구분되는데 DB 미들웨어, RPC(Remote Procedure Call), MOM(Message-Oriented Middleware), TP(Transaction Processing) 모니터 등으로 나뉜다. DB 미들웨어는 데이터베이스와 애플리케이션 사이의 원활한 통신을 목적으로 하는 미들웨어로, 다양한 형태로 구성된 데이터베이스 사이에서 통신이 가능하게끔 해준다. RPC는 애플리케이션 간의 연결을 위한 미들웨어로 애플리케이션에서 미들웨어로의 작업 요청이 바로 전송될 수 있도록 해준다. TP 모니터는 통신 부하량이 많은 클라이언트와 서버 사이에 위치하여 서버 애플리케이션 및 자원을 효율적으로 관리하고 통신 부하를 분배하여 클라이언트와 서버 간의 통신이 매끄러워지도록 하는 역할을 담당한다.
미들웨어(Middleware)의 종류
미들웨어의 범위를 정하고 종류별로 구분하기는 매우 어려운데, 그 이유는 네트워크 프로토콜, DB 드라이버 등의 기능에 아우르는 모든 내용을 포함해야 하기 때문이다. 미들웨어는 크게 DB 미들웨어와 통신 미들웨어로 구분하는데, 이를 구분하지 않은 포괄적인 의미의 미들웨어는 애플리케이션과 애플리케이션의 통신을 담당하는 통신 미들웨어만을 의미한다.
1. DB(DataBase) 미들웨어
DB 미들웨어는 하나의 애플리케이션을 특정 DB로 연결해주는 소프트웨어를 의미한다. 일반적으로 클라이언트에게 공통의 SQL 호출 인터페이서를 제공해줌으로써 여러 종류의 DB에 접근할 수 있도록 하는 역할을 한다. DB 미들웨어는 데이터베이스를 제조한 업체 측에서 제공하는 클라이언트에서 원격의 데이터베이스와 연결한다. 이것을 사용하여 시스템을 구축하는 경우 2계층 아키텍처라고 하는데 이것은 클라이언트가 직접 서버의 DB에 접속하여 자원을 활용하는 것을 의미한다. 편리하지만 보안에 취약하고 유지보수도 어렵다는 단점이 있다.
2. 통신 미들웨어
통신 미들웨어는 애플리케이션과 애플리케이션 사이의 정보 교환을 수행하며 클라이언트-서버 시스템 개발에 있어서 확실한 프로그램간의 통신 모델을 제시한다. DB 미들웨어가 2계층 아키텍처를 제공한다면 통신 미들웨어는 3계층 아키텍처를 제공한다. 3계층 아키텍처는 클라이언트-서버-DB로 이루어진다. 서버는 클라이언트의 요청을 받아들여서 접속을 관리하고 웹 애플리케이션은 비즈니스 로직을 실행하고 DB에 접근한다. 클라이언트가 서버의 DB에 직접 접속하지 않으므로 DB서버를 따로 구성해야한다. 3계층 아키텍처는 각 계층이 서로 다른 팀에서 동시에 작업이 가능하므로 보다 신속한 개발이 가능하다. 필요에 따라 임의의 계층을 다른 계층과 독립적으로 확장해 확장성을 개선할 수 있고 서로 영향을 미치지 않으므로 안정성도 향상된다. 클라이언트가 DB에 직접 접근할 수 없으므로 SQL 인젝션 및 기타 악의적인 행위를 미연에 방지함으로써 보안성도 강화된다는 장점이 있다.
'소프트웨어 공학' 카테고리의 다른 글
소프트웨어 개발 비용 산정의 종류와 개념 (0) | 2021.11.18 |
---|---|
암호 알고리즘의 정의와 암호화 기법의 종류 (0) | 2021.11.18 |
릴리즈 노트 작성 시 고려사항과 작성 순서 (0) | 2021.11.18 |
소프트웨어 패키징의 개요와 작업의 이해 (0) | 2021.11.18 |
자료구조(Data Structure)의 개념과 특징 및 이점 (0) | 2021.11.17 |
댓글