새소식

Tech Interview/Interview

4. 질문 (Middleware)

  • -

 미들웨어란, 운영 체제와 해당 운영 체제에서 실행되는 응용 프로그램 사이에 존재하며 분산 컴퓨팅 환경에서 컴퓨터와 컴퓨터간의 연결을 안전하고 용이하게 해주는 전반적 관리를 도와주는 소프트웨어입니다. 응용소프트웨어가 운영체제로부터 제공받은 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어입니다.

다시 말해, 서로 다른 기종의 하드웨어나 프로토콜, 통신환경 등을 연결하여, 응용프로그램과 그 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있게 하는 소프트웨어를 말하며, 특정 정보 시스템 환경에서 작동할 수 있도록 지원해주는 역할을 한다고 이해할 수 있습니다. OS는 기본적인 기능 밖에 없기 때문에, 단독으로 할 수 있는 일은 많지 않습니다. 미들웨어가 있으면 복잡한 처리가 실현됩니다. 예를 들어 서버와 데이터베이스와의 상호 작용은 미들웨어가 담당합니다. 웹브라우저에서 데이터베이스로부터 데이터를 저장하거나 읽어올 수 있게 중간에 미들웨어가 존재하게 됩니다.

 

미들웨어는 네트워크, DB, OS에 대하여 호환성을 제공합니다. C/S 기술에서 미들웨어를 중요시하는 이유는 어떤 종류의 미들웨어가 시스템 구축에 사용되었는지에 따라 C/S 시스템의 논리적구조(2-계층, 3-계층)가 변경되는 것은 물론, 시스템 전체의 기반 구조에 변화를 가져올 수 있기 때문입니다.

 

 

미들웨어의 종류

1. 기능에 따른 분류

 웹 서버 : 웹 서버는 브라우저의 요청에 따라 웹 페이지를 전송하는 미들웨어입니다. 우리가 사용하는 PC나 스마트폰 등에서 보는 콘텐츠들은 웹 서버에 있는 문자와 이미지를 표시 합니다. 이 콘텐츠들은 정적이며 웹서버에 저장된 내용이 그대로 전송 됩니다. 한편, 사용자나 시간에 의해 내용이 바뀌는 동적 콘텐츠가 요구 될 때에는 애플리케이션 서버에 요구 합니다. 동적인 콘텐츠라 함은 변동하는 것을 말하며, E-Commerce 사이트의 포인트나 장바구니 등을 들을 수 있습니다.

 

 애플리케이션 서버 : 웹서버의 요청에 따라 응용프로그램에서 동적 콘텐츠를 생성하는 미들웨어입니다. 애플리케이션은 Java, PHP, Ruby등의 언어로 작성됩니다. 애플리케이션 서버만으로 요청에 응할 수 없는 경우에는 데이터베이스 관리 서버에 요청하여 정보를 얻어야 합니다. 예를 들어 데이터베이스에 저장된 고객 데이터가 필요한 요청을 받은 경우입니다.

 

 데이터베이스 관리 서버 : 데이터베이스 관리 서버는 데이터베이스 관리 시스템이 실행되는 서버입니다. 데이터 자체는 데이터베이스 관리 서버에 저장 되지 않고, 어디까지나 스토리지에서 필요한 정보를 꺼내거나 쓰는 것이 데이터베이스 관리 서버의 역할입니다. 데이터베이스 관리 서버는 애플리케이션 서버로부터 요청을 받고 데이터베이스 언어인 SQL을 이용하여 필요한 정보를 추출 전송합니다.

 

여기까지 소개 한 Web/애플리케이션/데이터베이스 관리 서버로 이루어지는 구조를 ‘Web 3층 구조’ 혹은 ‘3계층 시스템’이라고 합니다. 보안의 강도, 관리의 용이함 그리고 고장 시 복구가 빠르기 때문에 대규모 시스템으로 널리 채용되고 있는 방식입니다.

 

 

2. 통신 방식에 따른 분류

통신 미들웨어는 애플리케이션과 애플리케이션 간의 정보 교환을 제공하며, 클라이언트 서버 시스템 개발에 있어 확실한 프로그램 간 통신 모델을 제공합니다. 데이터베이스 미들웨어는 2계층 클라이언트 서버 구조를 제공하는 반면, 통신 미들웨어는 3계층 클라이언트 서버 구조를 제공합니다.

 

 원격프로시저호출(RPC : Remote Procedure Call) : 클라이언트가 원격에서 동작하는 프로시저를 호출하는 시스템입니다. 응용프로그램의 프로시저(procedure : 필요한 작업을 순서대로 수행하기 위해 ‘명령을 꾸러미로 만든 함수’ 의미)를 사용하여 원격 프로시저를 로컬 프로시저처럼 호출하는 방식의 미들웨어입니다. 즉, 원격임에도 불구하고 로컬처럼 프로시터를 호출 할 수 있도록 도와주는 미들웨어입니다. 전통적인 프로그램에 포함된 서브루틴을 호출하는 것과 같은 모습을 하고 있지만, 네트워크로 연결된 서버 사이의 원격 프로시저를 호출한다는 점에서 차이가 있습니다. 기존 개발자들에게 익숙하기 때문에, 네트워크나 운영체제의 복잡함을 숨기고, 네트워크상에서의 통신 애플리케이션을 작성할 수 있습니다.

 

메시지 지향 미들웨어(MOM : Message Oriented Middleware) : 쉽게 정의하면 네트워크상에서 메시지를 전달하는 운반자입니다. 클라이언트가 생성한 메시지는 저장소에 요청할 때 저장하면서, 다른 업무를 지속하도록 할 수 있는 비동기식 미들웨어입니다. 원격 프로시저 호출이 동기적인 반면 메시지 지향 미들웨어는 비동기적인 통신을 한다는 것이 차이점입니다. 비동기형 전달 방식을 택하고 있어 서로 다른 이기종 분산 DB시스템 데이터 동기를 위해 주로 사용됩니다. 메시지 지향 미들웨어를 사용하면 원격 프로시저 호출 미들웨어를 사용할 경우 발생하는 클라이언트와 서버 간에 동기적인 통신 문제점을 해결할 수 있습니다. 또한 프로그램의 오류 및 시스템 또는 네트워크 자체의 오류로 인한 문제에서 메시지 지향 미들웨어는 데이터 전달 및 프로그램 수행에 대한 신뢰와 안전을 보장할 수 있습니다.

 

객체 요청 브로커(ORB : Object Request Broker) : 객체지향 시스템에서 서비스를 요청하고 전송할 수 있도록 지원하는 미들웨어입니다. 원격 프로시저 호출의 형태를 기본적으로 수용하고 있고, 애플리케이션에서 애플리케이션으로의 통신으로 호출과 답변의 방식을 적용하지만, 원격 프로시저 호출과 달리 객체기반의 구조를 가지고 있습니다.

또한 코드의 재사용이라는 강점을 가지고 있는데, 객체지향 언어가 아닌 3세대 언어로 개발되어 있더라도 캡슐화를 통해 재사용이 가능하며, 표준 인터페이스를 사용하여 객체들을 개발하도록 되어 있습니다. 표준 객체들 사이의 통신은 플랫폼에 독립적이고, 분산된 여러 객체 서버들과도 쉽게 연결이 가능하도록 설계되어 있습니다. 로컬 및 원격지에 위치한 객체들 사이에 통신을 담당하는 핵심기술로, 분산 객체 컴퓨팅을 지원할 수 있기 때문에 대표적인 미들웨어로 자리를 잡을 것이며, 대부분의 객체지향 미들웨어에서 핵심 기술로 사용 될 거라 예측하고 있습니다.

또 다른 분류법으로는 TP 모니터, WAS, 엔터프라이즈 서비스 버스 등의 미들웨어가 있습니다.

 

 TP모니터(Transaction Processing(TP) Monitor) : 온라인업무에서 트랜잭션을 처리, 감시하는 미들웨어로, 분산 환경의 핵심 기술인 분산 트랜잭션을 처리합니다. 분산 트랜잭션을 처리하는 만큼 주로 사용자가 많고, 안정적이면서도 즉각적인 처리가 필요한 업무 프로그램 개발에 많이 사용되어 사용자 수가 증가해도 빠른 응답 속도를 유지해야 하는 항공기나 철도 예약 업무 등과 같은 온라인 트랜잭션 업무에서 트랜잭션을 처리 및 감시하는 미들웨어입니다.

 

 웹애플리케이션 서버(WAS:Web Application Server) : 정적인 콘텐츠를 처리하는 웹서버와 달리 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어입니다. 클라이언트 / 서버 환경보다는 웹 환경을 구현하기 위한 미들웨어로 서버 계층에서 애플리케이션이 동작 할 수 있는 환경을 제공하고 안정적인 트랜잭션을 처리/관리하며, 다른 이기종 시스템과의 애플리케이션연동을 지원합니다.

 

엔터프라이즈 서비스 버스(Enterprise Service Bus) : 메시지 기반으로 느슨한 결합 형태의 표준 인터페이스 통신을 지원하는 미들웨어로, 기업 안팎에 있는 모든 시스템 환경을 연동합니다. 비즈니스 내에서 서비스, 애플리케이션, 자원을 연결하고 통합하는 미들웨어라고 할 수 있으며, 이를 통해 분산된 서비스 컴포넌트를 쉽게 통합하고 연동할 수 있어 신뢰성 있는 메시지 통신이 가능합니다. 엔터프라이즈 서비스 버스의 특징으로는 다양한 시스템과 연동하기 위한 멀티 프로토콜 지원, 느슨한 결합, 소프트웨어 컴포넌트를 조합하여 서비스를 조립하는 BPM 지원, 이벤트 지향적, 표준 지향적 5가지 정도가 있습니다. 기업 응용 프로그램 통합(Enterprise Application Integration, EAI)과 유사하지만, 기업 응용 프로그램 통합은 통합에 초점은 맞춘 기술이지만, 엔터프라이즈 서비스 버스는 프로세스 기반의 서비스 지향 아키텍처(Service Oriented Architecture, SOA)로 나아가기 위한 기반으로서 만들어졌습니다.

 

시스템 운용에 사용되는 ‘운용 미들웨어’의 역할

미들웨어는 OS와 애플리케이션 중간 존재입니다. 그러나 시스템을 운영하는데 사용되는 “운용 미들웨어”는 다릅니다. 운용 미들웨어는 OS에 존재 하지만 별도의 애플리케이션을 필요로 하지 않으며 그 자체가 애플리케이션으로서 기능합니다.

 

 시스템 백업 : 시스템 운용에서 데이터 손실은 매우 큰 위협입니다. 예를 들어 E-Commerce사이트에서는 구매정보, 인터넷 뱅킹의 계좌 등은 시스템을 유지하는데 필수적입니다. 정기적으로 백업을 수행하고 데이터 손실에 대비해야 합니다. 또한, 운용 미들웨어는 백업의 역할을 담당합니다. 백업할 대상(데이터, 애플리케이션, 로그 등)을 확정 할 뿐만 아니라, 업데이트 빈도 등에 따라 백업을 실시하는 시간대도 중요하게 설정할 필요가 있습니다. 그리고, 백업 대상의 저장 매체 관리도 중요합니다. 어느 매체에나 있는 장/단점을 고려한 후에 최적인 것을 선택합니다.

 

 작업 운용 효율성 : 작업은 정형적인 작업을 말합니다. 시스템을 운용하는 동안 백업, 로그 검색, 서버 재부팅 등 많은 작업이 발생하는데, 이것들을 매번 수동으로 작업하고 있다면 큰 부담이 아닐 수 없습니다. 따라서, 운용 미들웨어에 이러한 작업을 맡깁니다. 사전처리 절차와 스케줄을 설정하면 작업운용을 자동화 할 수 있습니다.

 

 시스템모니터링 : 시스템에 장애가 발생하면 신속하게 발견하는 것이 중요합니다. 따라서 다음 모니터링을 수행하는 운용 미들웨어가 존재합니다.

-노드 모니터링 : 서버, 스토리지, 네트워크 장비 등의 가동 상황 모니터링

-자원 모니터링 : 메모리, CPU, 디스크 등의 사용 상황 모니터링

-프로세스 모니터링 : 서버가 시작했는지 혹은 서비스가 멈추지 않았는지 모니터링

-로그 모니터링 : OS 및 미들웨어 로그에 이상이 없는지 모니터링

 

 고가용성 클러스터에 의한 서버 이중화 : 고가용성 클러스터는 비상시 서버를 예비 클러스터로 전환하는 시스템입니다. 예를 들어, 같은 기능의 서버를 하나 이상으로 준비하는 것입니다. 그리고 고가용성 클러스터는 비상시 서버를 예비 클러스터로 전환하는 메커니즘입니다. 자동적으로 같은 기능의 서버로 전환을 하는 것으로, 시스템 정지를 방지하는 것입니다.

 

 

미들웨어의 3가지 장점

 난이도 높은 처리의 실현 가능 : 미들웨어를 사용하지 않고 OS만으로도 애플리케이션은 움직이지만 미들웨어를 사용함으로써 효율적으로 더 높은 수준의 처리가 가능합니다.

개발 비용 절감 : 미들웨어는 애플리케이션에서 사용하는 범용적인 기능을 정리하고 있기 때문에 효율적으로 애플리케이션 소프트웨어를 개발할 수 있습니다. 즉, 업무처리에 특화된 부분만을 개발하면 되므로 개발기간과 비용을 절감할 수 있습니다.

다른 OS / 하드웨어로 동작 가능: 미들웨어의 가장 뛰어난 특징의 하나는 OS 및 하드웨어의 차이를 수용한다는 것입니다. 그래서 애플리케이션은 차이점을 인식하지 못하고 다른 OS 및 하드웨어에서도 동일한 방식으로 작동 할 수 있습니다.

 

참고사이트

https://12bme.tistory.com/289

https://terms.naver.com/entry.naver?docId=1180065&cid=40942&categoryId=32837

https://www.redhat.com/ko/topics/middleware/what-is-middleware

https://azure.microsoft.com/ko-kr/overview/what-is-middleware/

https://blog.naver.com/skyhomo/220086099002

https://it-trend.jp/development_tools/article/32-0044

https://lemonlemon.tistory.com/204

https://circleci.com/ja/blog/what-is-middleware/

'Tech Interview > Interview' 카테고리의 다른 글

5. 질문 (웹 브라우저에 URL 전체 동작과정)  (0) 2024.03.09
3. 질문 (Proxy & SpringBoot)  (1) 2023.11.30
1. JPA 소개 & 영속성 관리  (1) 2023.11.30
2. 질문  (0) 2023.11.27
1. 질문  (0) 2022.07.20
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.