미들웨어(middleware) 란?
중간에 위치한 소프트웨어라는 뜻으로, 서버와 클라이언트 사이에서 데이터 주고 받을 수 있도록 매개 역할 데이터 교환을 할때는 인터페이스가 필요하고 각각의 시스템에 따라 형태가 다르다.
나는한국말만 해도 다른 나라 사람들이 알아들수 있도록 중간에 통역사 역할을 하는 것이 미들웨어이다. 내가 처리를 못하는 걸 대신해서 처리 해주는 것. 표준화된 인터페이스를 제공해서 시스템 간의 데이터 교환에 일관성을 보장한다.
미들웨어의 분류
DB 미들웨어(커넥터)
클라이언트에서 원격의 데이터베이스간에 원활한 통신을 하도록 연결하는 미들웨어. 2-Tier 아키텍처 구조 : 클라이언트계층 서버계층 2계층으로 나뉨 클라이언트가 늘어날때마다 프로세스도 함께 늘어난다.
RPC (Remote Procedure Call) 원격 프로시저 호출
네트워크 상에서 멀리떨어진(Remote) 프로시저를 마치 내 로컬 프로시저 처럼 호출하는 미들웨어. 애플리케이션과 애플리케이션 간의 연동을 위한 미들웨어
MOM (Message Oriented Middleware) 메시지 지향 미들웨어
비동기 메시지 전달 방식(대기하지 않고 다음작업 실행). 애플리케이션과 미들웨어간의 상호연동을 위한 미들웨어. 온라인 업무 보다는 이기종(서로 다른기기) 분산데이터 시스템의 데이터 동기화에 많이 사용된다. ex) 네이버 클라우드, 구글 드라이브
만약 내컴퓨터에서 작업한 파일을 클라우드로 전송 한다고 했을때 클라우드에 전송한 파일은 컴퓨터 뿐만 아니라 이기종(스마트폰이듯 태블릿이든 다른 기기) 에서도 동일한 형태의 데이터로 보이도록 (동기화) 하는 것
동기형이라면 클라우드에서 응답이 올때까지 기다려야 하지만 비동기형이기 때문에 파일을 클라우드에 올리고 컴퓨터를 바로 꺼도 상관이 없다. 클라우드가 알아서 하고 결과는 나중에 내가 컴퓨터를 다시 키면 그때 받으면 된다.
TP모니터 (Transaction Processing Monitor) 트랜잭션 처리 모니터
트랜잭션 : 한꺼번에 여러작업을 실행. 통신부하를 효과적으로 분배 (load balancing). 클라이언트가 늘어나면 늘어날 수록 서버는 과부하에 걸릴 수가 있다. 그때 중간에 TP모니터를 설치해서 클라이언트 데이터를 TP모니터가 대신 받아서 TP 모니터랑 서버랑 빠른 속도로 데이터를 처리할 수 있도록 도와주는 것
온라인 트랙잭션 업무에서 트랜잭션 처리 및 감시 하는 미들웨어. 항공기나 철도 예약 업무등에서 사용자 수가 증가해도 빠른 응답이 가능하다.
3-Tier 구조 : 3계층으로 이루어짐. 여러 대의 서버로 나누어서 각 계층이 동작 하므로 서버의 부하를 줄일 수 있다.
ORB (Object Request Broker) 객체 요청 브로커
객체를 생성, 배포, 관리하는 미들웨어. CORBA (Common Object Request Broker Architecture) 공통 객체 요구 매개자 구조
코바 표준 스펙을 구현한 객체 지향 미들웨어. 최근에는 TP-Monitor 장점인 트랙잭션 처리와 모니터링 등을 추가로 구현한 제품도 있다. 네트워크에서 오브젝트를 분산시킬 때 적용되는 규격
WAS(Web Application Server) 웹어플리케이션 서버
동적인 콘텐츠를 처리는 웹 환경에 필요한 미들웨어. 웹환경을 구현하기 위한 미들웨어. 웹서버 + 웹컨테이너(클라이언트의 요청이 있을때 결과를 만들어서 다시 클라이언트에 전달해 주는 역할). ex) Tomcat, Oracle ..
1. 미들웨어의 개념 및 종류
- 미들웨어에서 미들(Middle)과 소프트웨어(Software)의 합성어로, 운영체제와 해당 운영체제에서 실행되는 응용 프로그램 사이에서 운영체제가 제공하는 서비스 이외에 추가적인 서비스를 제공하는 소프트웨어이다. 혹은 클라이언트와 서버 간의 통신을 담당하는 소프트웨어라고도 한다.
- 미들웨어는 표준화된 인터페이스를 제공하며 시스템 간의 데이터 교환에 일관성을 보장한다.
- 미들웨어 종류로는 DB, RPC, MOM, TP-Monitor, ORB, WAS 등이 있다.
DB (DataBase) |
- 데이터베이스 벤더에서 제공하는 클라이언트에서 원격의 데이터베이스와 연결하기 위한 미들웨어이다. - DB를 사용해 시스템을 구축하는경우 보통 2-Tier 아키텍처라고 한다. - 마이크로소프트 ODBC, 볼랜드의 IDAPI, 오라클의 Glue |
RPC (Remote Procedure Call) |
- RPC(원격 프로시저 호출)는 응용 프로그램의 프로시저를 사용해 원격 프로시저를 로컬 프로시저처럼 호출하는 방식의 미들웨어이다. - 이큐브 시스템즈의 Entera, OSF의 ONC/RPC |
MOM (Message Oriented Middleware) |
MOM(메시지 지향 미들웨어)은 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어이다. - 온라인 업무보다 이기종 분산 데이터 시승템의 데이터 동기를 위해 많이 사용된다. - IBM의 MQ, 오라클의 Message Q, JPC의 JMS |
TP-Monitor (Transaction Processing Monitor) |
- TP-Monitor는 항공기나 철도 예약 업무 등과 같은 온라인 트랜잭션을 처리 및 감시하는 미들웨어이다. - 사용자 수가 증가하더라도 빠른 응답속도를 유지해야 할 경우 주로 사용된다. - 오라클의 tuxedo, 티맥스소프트의 tmax |
ORB (Object Request Broker) |
- ORB(객체 요청 브로커)는 객체 지향 미들웨어로 코바(CORBA) 표준 스펙을 구현한 미들웨어이다. - TP-Monitor의 장점인 트랜잭션 처리와 모니터링을 추가한 제품도 나오고 있다. - Micro Focus의 Orbix, OMG의 CORBA |
WAS (Web Application Server) |
- WAS(웹 어플리케이션 서버)는 정적인 콘텐츠를 처리하는 웹 서버와 달리 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위한 미들웨어이다. - 클라이언트/서버 환경보다는 웹 환경을 구현하기 위한 미들웨어이다. - HTTP 세션 처리를 위한 웹 서버 기능뿐만 아니라 미션-크리티컬한 기업 업무까지 JAVA, EJB 컴포넌트 기반으로 구현이 가능하다. - 오라클의 WebLogic, IBM의 WebSphere |
미들웨어(Middleware)는 응용 소프트웨어가 운영체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어입니다. 응용 소프트웨어는 유연하고 확장, 축소가 편리해야하며 이러한 장점을 충족하기에 개발자의 다른 기종간 플랫폼을 다시 구축할 필요가 없어야 합니다. 이를테면 데이터베이스 시스템, 전자통신 소프트웨어, 메시지 및 쿼리 처리 소프트웨어를 들 수 있습니다.
정의
미들웨어는 양 쪽을 연결하여 데이터를 주고받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어, 네트워크를 통해서 연결된 여러 개의 컴퓨터에 있는 많은 프로세스들에게 어떤 서비스를 사용할 수 있도록 연결해주는 소프트웨어를 말합니다. 3계층 클라이언트/서버 구조에서 미들웨어가 존재합니다. 웹브라우저에서 데이터베이스로부터 데이터를 저장하거나 읽어올 수 있게 중간에 미들웨어가 존재하게 됩니다.
TP 모니터(TP Monitor: Transaction Processing Monitor)는 가장 대표적인 미들웨어라 할 수 있습니다. 이러한 미들웨어는 메인 프레임 소프트웨어에서 분산 컴퓨팅으로 전환되는 과정에서 나타나게 됩니다.
미들웨어를 이용하는 분산 컴퓨팅은 2-tier 형태를 벗어나서 3-tier와 N-tier 형태로 발전하게 됩니다. 대부분 3-tier 혹은 N-tier 분산 컴퓨팅에서 모든 비즈니스 로직은 서버 컴퓨터에 존재하게 되고, 개인용 컴퓨터는 오직 프레젠테이션을 위해서 사용됩니다.
이러한 방법은 여러가지 장점들을 제공하게됩니다.
1. 모든 비즈니스 로직을 서버에서 관리하기 때문에 관리와 유지 보수가 간편해진다. 만약 변경 사항이 있는 경우에 오직 서버 측만 변경하기 때문에 유지 보수가 간편해지는 것이다.
2. 확장성이 좋아진다. 3-tier는 씬 클라이언트(thin-client) 형태를 사용하기 때문에 클라이언트 컴퓨터의 성능이 약간 떨어져도 프로그램을 실행시키는데 문제가 없다. 이러한 형태는 서버측에 약간 무리가 있을 수 있지만, 서버 측은 멀티 프로세스 시스템이나 클러스터링(clustering)을 이용함으로써 문제를 해결할 수 있다.
이점
- 표준화된 인터페이스 제공 가능
- 다양한 환경 지원, 체계가 다른 업무와 상호 연동이 가능
- 분산된 업무를 동시에 처리 가능하여 자료의 일관성이 유지
- 부하의 분산이 가능
활용 방안
- 향후 5년 후에 새로운 e-business 애플리케이션 투자를 불러올 주요 트랜드 및 사건은 무엇인가?
- 차세대 e-business 아키텍처를 창조하는데 있어서 패키지화된 애플리케이션 소프트웨어의 역할은 무엇인가?
- 기술의 발전과 비즈니스 변화는 e-business 애플리케이션을 시작하려는 결정에 어떤 영향을 미칠 것인가?
- 21세기의 경쟁에 필요한 이상적인 e-business 애플리케이션 아키텍처는 무엇인가?
- 어떻게 아키텍처를 통합하는 것이 정보관리 능력을 빠르게 향상시킬 것이며, 조직을 건실하게 운영할 수 있을 것인가?
- 이전에 없던 복잡성과 변화에도 불구하고 비즈니스 애플리케이션을 활용할 수 있는 경영 구조를 어떻게 만들 수 있을까?
종류
1. 원격 프로시저 호출(Remote Procedure Call, 약칭 RPC): 클라이언트가 원격에서 동작하는 프로시저를 호출하는 시스템. 동기 또는 비동기 지원.
2. 메시지 지향 미들웨어(Message Oriented Middleware, 약칭 MOM): 클라이언트가 생성한 메시지는 저장소에 요청할 때 저장하면서, 다른 업무를 지속할 수 있도록 하는 비동기식 미들웨어.
3. ORB(Object Request Broker): 객체지향 시스템에서 객체 및 서비스를 요청하고 전송할 수 있도록 지원하는 미들웨어.
4. DB 접속 미들웨어: 애플리케이션과 데이터베이스 서버를 연결해주는 미들웨어
또다른 분류법
1. TP모니터(Transaction Processing(TP) monitor): 분산 시스템의 애플리케이션을 지원하는 미들웨어. 주로 C/S 시스템에 사용됨.
2. 웹 애플리케이션 서버(Web Application Server): 웹 애플리케이션을 지원하는 미들웨어.
3. 엔터프라이즈 서비스 버스(Enterprise Service Bus): 메시지 기반으로 느슨한 결합형태의 표준 인터페이스 통신을 지원하는 미들웨어로 기업 안팎에 있는 모든 시스템 환경을 연동하는 미들웨어.
TP모니터란?
각종 프로토콜에서 동작하는 세션과 시스템과 데이터베이스 사이의 최소 처리단위인 트랜잭션을 감시하여 일관성있게 보관 유지하는 역할을 하는 트랜잭션 관리 미들웨어이다. 시장분석 기관인 가트너(Gartner)에서는 TPM으로 표시하고 있고, 또 다른 시장분석 기관인 IDC에서는 ASSP의 일부로 분류하고 있다.
각종 컴퓨터 시스템에서 사용자와 애플리케이션과의 다수의 자원(데이터베이스 등) 사이의 분산 트랜잭션을 실현하는 프로그램 모듈(복수 자원에 걸친 처리단위인 트랜잭션에 대해 ACID 특성을 보관 유지하는 역할을 담당하는 프로그램 모듈)을 TP모니터라고 한다.
X/Open 모델에서는 "트랜잭션 관리자" 또는 WS-Transaction 모델의 "트랜잭션 조정자"와 동의어이다.
다만, X/Open 모델을 따르지 않는 좁은 의미의 "트랜잭션 관리"는 단일 자원 내부의 로컬 트랜잭션을 처리하는 부분을 의미하므로 주의할 필요가 있다. 여기서 "트랜잭션 모니터"라고 하면 개별 자원의 외부에서 복수의 "자원 관리" 또는 복수 노드의 "자원 관리"를 이르는 분산 트랜잭션을 관리하는 독립한 프로그램 모듈을 가리키는 것이다.
레드햇 미들웨어
개념
미들웨어는 공통 서비스 및 기능을 애플리케이션에 제공하여 개발자와 운영자가 애플리케이션을 더욱 효율적으로 구축하고 배포하도록 돕는 소프트웨어 및 클라우드 서비스입니다. 미들웨어는 애플리케이션, 데이터, 사용자를 연결하는 요소처럼 작동합니다.
미들웨어는 1960년대 후반부터 소프트웨어 엔지니어링 용어에 포함되었으며, 하나의 범주로서 광범위한 현대적 소프트웨어 구성 요소에 해당한다고 할 수 있습니다. 미들웨어에는 애플리케이션 런타임, 엔터프라이즈 애플리케이션 통합 및 다양한 유형의 클라우드 서비스가 포함됩니다. 데이터 관리, 애플리케이션 서비스, 메시징, 인증 및 애플리케이션 프로그래밍 인터페이스(API) 관리는 주로 미들웨어를 통해 처리됩니다.
오늘날 미들웨어는 현대적인 클라우드 네이티브 아키텍처를 위한 기술 기반이 되고 있습니다. 멀티 클라우드 및 컨테이너화된 환경을 갖춘 조직의 경우 미들웨어를 사용하면 스케일에 따라 비용 효율적으로 애플리케이션을 개발하고 실행할 수 있습니다.
미들웨어에는 어떤 종류가 있을까요?
광범위한 범주로서 미들웨어는 웹 서버에서 인증 시스템 및 메시징 툴에 이르는 모든 요소를 포함할 수 있습니다. 현대적인 개발 환경에서 미들웨어의 공통 활용 사례 몇 가지를 살펴보겠습니다.
신규 애플리케이션 개발
미들웨어는 다양한 활용 사례에 널리 사용되는 현대적인 런타임을 지원합니다. 개발자 및 아키텍트는 기반 런타임, 프레임워크 및 프로그래밍 언어 세트를 준수하는 다양한 플랫폼 전반에서 민첩하게 작업할 수 있습니다. 미들웨어는 웹 서버, SSO(Single Sign-On), 메시징 및 인메모리 캐싱과 같이 일반적으로 사용되는 기능도 제공합니다.
기존 애플리케이션 최적화
미들웨어는 향상된 성능과 이식성을 지원하여 개발자들이 유용한 툴을 활용하면서 레거시 모놀리식 애플리케이션을 클라우드 네이티브 애플리케이션으로 트랜스폼하도록 도와줍니다.
포괄적인 통합
미들웨어 통합 툴은 중요한 내부 및 외부 시스템을 연결합니다. 트랜스포메이션, 연결성, 결합성 및 엔터프라이즈 메시징과 같은 통합 기능이 SSO 인증과 결합되어 개발자들이 다양한 애플리케이션 전체에 기능을 보다 손쉽게 확장할 수 있습니다.
애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)
많은 미들웨어 서비스는 애플리케이션 간 통신을 지원하는 툴, 정의 및 프로토콜 세트인 API를 통해 액세스할 수 있습니다. API를 활용하면 공통 레이어를 통해 완전히 다른 제품 및 서비스를 연결할 수 있습니다.
데이터 스트리밍
API가 애플리케이션 간에 데이터를 공유하는 한 가지 방법이라면, 또 다른 접근 방식으로 비동기 데이터 스트리밍을 들 수 있습니다. 비동기 데이터 스트리밍은 데이터가 여러 애플리케이션 간에 공유될 수 있는 중간 저장소에 데이터 세트를 복제합니다. 실시간 데이터 스트리밍을 위해 널리 사용되는 오픈소스 미들웨어 툴 중 하나로 Apache Kafka가 있습니다.
지능형 비즈니스 자동화
미들웨어는 개발자, 아키텍트, IT 팀 및 비즈니스 리더들이 수동 의사 결정을 자동화하도록 지원하며 자동화를 통해 리소스 관리와 전반적인 효율성을 개선할 수 있습니다.
클라우드 컴퓨팅에서 미들웨어가 중요한 이유는 무엇일까요?
조직이 클라우드 네이티브 개발로 전환할 때 소프트웨어 개발자와 시스템 아키텍트는 애플리케이션 플랫폼의 선행 설계와 아키텍처에 집중할 수 밖에 없습니다. 그러기 위해서는 애플리케이션 개발, 배포, 실행을 위한 프레임워크 및 기능을 선택하고 설정해야 하는데, 이 모든 기능은 미들웨어를 통해 처리됩니다. 이러한 기능을 갖춘 조직은 클라우드의 장점을 더욱 폭넓게 누릴 수 있습니다. 애플리케이션은 온프레미스 시스템에서 퍼블릭 클라우드에 이르는 여러 인프라 전반에 배포될 수 있고, 환경에 상관 없이 본래의 기능을 수행합니다.
조직들은 이러한 복잡성을 관리하면서 신속하고 경제적으로 애플리케이션을 개발하기 위해 미들웨어로 전환하고 있으며, 현재 상당 부분이 클라우드 서비스로 제공되어 배포와 관리가 간소화되었습니다. 미들웨어는 고도로 분산된 플랫폼 전반에서 원활하고 일관되게 작동하는 애플리케이션 환경을 지원할 수 있습니다. 또한 소프트웨어 공급망 보안, DevSecOps 전략, 자동화를 지원할 수 있기 때문에 보안 리스크를 관리하면서도 새롭게 개선된 애플리케이션을 더 빠르게 빌드할 수 있도록 팀을 지원합니다.
애플리케이션 개발에서 미들웨어의 역할은 무엇일까요?
현대적인 비즈니스 애플리케이션은 스케일에 따라 온프레미스 및 클라우드 전반에서 실행되도록 설계됩니다. 이를 구축하기 위해 개발자들은 통합 기반 기능을 갖춘 애플리케이션 환경을 필요로 합니다. 미들웨어는 바로 이러한 환경을 조합하는 핵심 요소입니다.
이러한 기능은 4개의 레이어와 툴링으로 구성됩니다.
컨테이너 레이어
이 미들웨어 레이어는 일관된 방식으로 애플리케이션 라이프사이클 제공 측면을 관리하며, CI/CD, 컨테이너 관리 및 서비스 메쉬 기능과 함께 DevOps 기능을 제공합니다.
런타임 레이어
이 레이어는 사용자 지정 코드에 대한 실행 환경을 포함합니다. 미들웨어는 마이크로서비스, 빠른 데이터 액세스를 위한 인메모리 캐싱, 빠른 데이터 전송용 메시징 등 고도로 분산된 클라우드 환경에 대해 경량화된 런타임 및 프레임워크를 제공할 수 있습니다.
통합 레이어
통합 미들웨어는 사용자 정의 애플리케이션 및 구매한 애플리케이션을 연결하는 서비스를 제공하는 것은 물론, 가동 시스템을 구축하기 위해 메시징, 통합 및 API를 통해 서비스로서의 소프트웨어(SaaS) 자산을 제공합니다. 또한 인메모리 데이터베이스 및 데이터 캐시 서비스, 데이터/이벤트 스트리밍 및 API 관리도 제공합니다.
프로세스 자동화 및 의사 결정 관리 레이어
이 마지막 개발 미들웨어 레이어는 중요 인텔리전스, 최적화 및 자동화, 의사 결정 관리를 추가합니다.
툴링
미들웨어 레이어 4가지와 더불어 애플리케이션 개발 툴링이 있습니다. 툴링을 통해 개발 팀은 미리 설정된 템플릿 및 컨테이너를 사용하여 애플리케이션을 구축하고, 효율적인 코드 공유 및 공동 개발을 지원합니다. 툴링은 온프레미스 및 클라우드에서 지속적이고 일관된 애플리케이션 개발 및 제공 경험을 지원합니다.
미들웨어 및 API
API는 소프트웨어를 통합하고, 하나의 애플리케이션이 다른 제품 및 서비스와 통신할 수 있도록 지원하는 일련의 정의와 프로토콜을 구축합니다. API는 개발자가 새로운 애플리케이션 구성 요소를 기존 아키텍처에 통합하는 방식을 간소화하므로 팀의 협업과 더불어 소프트웨어에 유용한 새 기능을 더욱 빠르게 추가하도록 지원합니다.
API와 마이크로서비스 사용은 클라우드 네이티브 애플리케이션 개발의 가장 기본적인 부분입니다. API 연결을 지원하는 서비스는 일종의 미들웨어라고 할 수 있습니다. API 관리 툴을 통해 개발자는 API를 공유하고, 배포하고, 제어하고, 수익화할 수 있습니다.
서비스 메쉬나 데이터 스트리밍과 같은 다른 애플리케이션 서비스 툴과 함께 API 관리를 통해 하이브리드 클라우드 환경 전반에서 규모에 맞게 애플리케이션을 실행할 수 있습니다
아마존 미들웨어
미들웨어란 무엇인가요?
미들웨어는 서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어입니다. 미들웨어는 더욱 빠르게 혁신할 수 있도록 애플리케이션을 지능적이고 효율적으로 연결하는 기능을 제공합니다. 미들웨어는 단일 시스템에 원활하게 통합할 수 있도록 다양한 기술, 도구, 데이터베이스 간에 다리 역할을 합니다. 그런 다음 이 단일 시스템은 사용자에게 통합된 서비스를 제공합니다. 예를 들어 Windows 프런트엔드 애플리케이션은 Linux 백엔드 서버에서 데이터를 송수신하지만, 애플리케이션 사용자는 그 차이를 인식하지 못합니다.
미들웨어가 중요한 이유는 무엇인가요?
미들웨어는 새 애플리케이션과 레거시 시스템 사이를 잇는 다리 역할로 시작했다가 1980년대에 인기를 얻게 되었습니다. 개발자는 처음에 미들웨어를 사용하여 초기 코드를 다시 쓰지 않고도 새 프로그램을 초기 시스템과 통합하였습니다. 미들웨어는 분산 시스템의 중요한 통신 및 데이터 관리 도구가 되었습니다.
개발자는 미들웨어를 사용하여 애플리케이션 개발을 지원하고 디자인 프로세스를 단순화합니다. 이렇게 하면 서로 다른 소프트웨어 구성 요소 사이를 연결하지 않고 자유롭게 비즈니스 로직 및 기능에 중점을 둘 수 있습니다. 미들웨어가 없으면 개발자는 애플리케이션에 연결된 각 소프트웨어 구성 요소의 데이터 교환 모듈을 구축해야 합니다. 이 구축 작업은 상당히 어렵습니다. 현대적 애플리케이션은 여러 마이크로서비스 또는 서로 통신하는 작은 소프트웨어 구성 요소로 구성되기 때문입니다.
미들웨어의 사용 사례로는 무엇이 있나요?
보다 일반적인 미들웨어 사용 사례는 다음과 같습니다.
게임 개발
게임 개발자는 미들웨어를 게임 엔진으로 사용합니다. 게임이 작동하기 위해서는 통신 시스템과 함께 소프트웨어가 다양한 이미지, 오디오 및 비디오 서버와 통신해야 합니다. 게임 엔진은 이러한 통신을 원활하게 하고 게임 개발의 효율성을 높입니다.
전자
전자 엔지니어들은 미들웨어를 사용하여 다양한 유형의 센서를 컨트롤러와 통합합니다. 미들웨어 계층을 통해 센서는 공통 메시징 프레임워크를 통해 컨트롤러와 통신할 수 있습니다.
소프트웨어 개발
소프트웨어 개발자는 미들웨어를 사용하여 서로 다른 소프트웨어 구성 요소를 다른 애플리케이션에 통합합니다. 미들웨어는 표준 애플리케이션 프로그래밍 인터페이스(API)를 제공하여 구성 요소에서 필요한 데이터 입력 및 출력을 관리합니다. 구성 요소와의 내부 연결은 사용자에게 표시되지 않습니다. 개발자는 API를 사용하여 소프트웨어 구성 요소에서 필요한 서비스를 요청합니다.
데이터 전송
소프트웨어 애플리케이션은 미들웨어를 사용하여 안전하게 데이터 스트림을 송수신합니다. 데이터 스트림은 일관된 데이터의 고속 전송이며, 안정적인 비디오 및 오디오 스트리밍에 중요합니다.
분산 애플리케이션
분산 애플리케이션은 네트워크의 서로 다른 컴퓨터에서 실행되는 소프트웨어 프로그램입니다. 분산 애플리케이션은 대개 프런트엔드 애플리케이션 및 백엔드 애플리케이션으로 구성됩니다. 프런트엔드 애플리케이션은 컴퓨터나 모바일 디바이스에서 사용하는 소프트웨어(예: 소셜 미디어 앱)입니다. 이와 대조적으로 백엔드 애플리케이션은 데이터 처리, 비즈니스 로직 및 리소스 관리 태스크를 처리하는 소프트웨어 프로그램입니다. 분산 애플리케이션이 원활하게 작동하도록 미들웨어가 프런트엔드 애플리케이션과 백엔드 애플리케이션 간에 통신합니다.
미들웨어 아키텍처란 무엇인가요?
미들웨어 소프트웨어 아키텍처는 통신을 통해 데이터 파이프라인을 생성하는 여러 개의 구성 요소로 이뤄져 있습니다. 데이터는 미들웨어를 통해 하나의 연결된 애플리케이션에서 다른 애플리케이션으로 이동합니다. 미들웨어는 호환성을 위해 데이터를 처리합니다. 미들웨어 소프트웨어의 공통 구성 요소는 다음과 같습니다.
관리 콘솔
관리 콘솔은 소프트웨어 개발자에게 미들웨어 시스템의 활동, 소프트웨어 규칙 및 구성에 대한 개요를 제공합니다.
클라이언트 인터페이스
클라이언트 인터페이스는 애플리케이션과 통신하는 미들웨어 소프트웨어에서 외부에 표시되는 부분입니다. 개발자는 클라이언트 인터페이스가 제공하는 기능을 사용하여 다른 애플리케이션, 데이터베이스 또는 다른 마이크로서비스와 상호 작용합니다.
미들웨어 내부 인터페이스
미들웨어 내부 인터페이스는 여러 구성 요소를 하나로 묶는 소프트웨어 연결 역할을 합니다. 미들웨어 구성 요소는 내부 인터페이스를 사용하여 자체 프로토콜과 결속되어 기능합니다.
플랫폼 인터페이스
이 미들웨어 인터페이스는 미들웨어 프로그램이 다양한 플랫폼과 호환되는지 확인합니다. 여기에는 서로 다른 유형의 운영 체제와 함께 작동하는 소프트웨어 구성 요소가 포함됩니다.
계약 관리자
계약 관리자는 미들웨어 시스템에서 데이터 교환 규칙을 정의합니다. 또한 애플리케이션이 미들웨어를 통해 데이터를 전송할 때 규칙을 준수하는지 확인합니다. 특정 규칙을 위반하는 경우 알림 또는 예외를 애플리케이션에 전송합니다. 예를 들어 계약 관리자는 단어가 예상되는 상황에서 애플리케이션이 숫자를 전송하는 경우 예외를 반환하게 됩니다.
세션 관리자
세션 관리자는 애플리케이션 및 미들웨어 사이에 안전한 통신 채널을 설정합니다. 또한 통신 흐름이 원활한지 확인하고 보고를 위해 데이터 활동 레코드를 저장합니다.
데이터베이스 관리자
미들웨어의 일부 유형에는 데이터베이스 관리자도 포함됩니다. 데이터베이스 관리자는 필요에 따라 서로 다른 데이터베이스 유형과의 통합을 담당합니다.
런타임 모니터
런타임 모니터는 미들웨어에서의 데이터 이동을 지속적으로 모니터링합니다. 또한 비정상적인 활동을 감지하여 개발자에게 보고합니다.
미들웨어는 어떻게 작동하나요?
미들웨어는 구성 요소 간의 기본 통신 프로세스를 담당합니다. 즉, 프런트엔드 애플리케이션은 미들웨어와만 통신하므로 다른 백엔드 소프트웨어 구성 요소의 언어를 배울 필요가 없습니다.
메시징 프레임워크
메시징 프레임워크는 프런트엔드 애플리케이션과 백엔드 애플리케이션 간의 데이터 교환이 원활하게 이루어지도록 합니다. 공통 프레임워크에는 다음이 포함됩니다.
- JSON(JavaScript Object Notation)
- REST(Representational State Transfer) API
- XML(Extensible Markup Language)
- 웹 서비스
- 단순 객체 접근 프로토콜(SOAP)
메시징 프레임워크는 서로 다른 운영 체제 및 언어의 애플리케이션에 대해 공통 통신 인터페이스를 제공합니다. 애플리케이션은 메시징 프레임워크에서 제공하는 표준 형식의 데이터를 쓰고 읽습니다.
미들웨어의 예
예를 들어 웹 서버는 웹 사이트를 벡엔드 데이터베이스에 연결하는 미들웨어입니다. 웹 사이트에서 양식을 제출하면 컴퓨터는 XML 또는 JSON 형식의 요청을 웹 서버에 전송합니다. 그러면 웹 서버는 해당 요청에 기반하여 비즈니스 로직을 실행하고 데이터베이스에서 정보를 검색하거나 서로 다른 프로토콜을 사용하여 다른 마이크로서비스와 통신합니다.
다른 미들웨어 기능
소프트웨어 애플리케이션 간의 중재 역할 외에도 미들웨어 프로그램은 다음과 같은 기능을 수행합니다.
- 웹 사이트가 민감한 정보를 벡엔드 애플리케이션에 안전하게 전송할 수 있도록 분산 애플리케이션 간의 안전한 통신 채널을 제공합니다.
- 트래픽 흐름을 관리하여 특정 애플리케이션 또는 파일 서버에 과도한 트래픽이 전달되지 않게 합니다.
- 요청에 대한 응답을 자동화하고 사용자 지정합니다. 예를 들어 미들웨어는 결과를 분류하고 필터링한 다음 프런트엔드 애플리케이션에 전송합니다.
플랫폼 미들웨어란 무엇인가요?
플랫폼 미들웨어는 관리형 도구 및 리소스 체계를 제공하여 애플리케이션 개발을 지원합니다. 개발자는 플랫폼 미들웨어를 사용하여 애플리케이션 간에 리소스를 공유하거나 전송합니다. 플랫폼 미들웨어 리소스의 몇 가지 예를 들면 다음과 같습니다.
런타임 환경
런타임 환경은 소프트웨어 프로그램을 실행할 수 있는 작은 운영 체제와 같습니다. 예를 들어 Java 애플리케이션은 Java 런타임 환경에서 실행되어야 합니다. 개발자는 AWS Lambda를 사용하여 모든 프로그래밍 언어를 위한 런타임 환경을 설정할 수 있습니다.
웹 서버
웹 서버는 웹 사이트로부터 요청을 수신 및 처리하고 이에 응답하는 컴퓨터 프로그램입니다. 웹 개발자는 Amazon Lightsail을 사용하여 간단한 애플리케이션의 웹 서버를 호스트하고 관리합니다.
콘텐츠 관리 시스템
콘텐츠 관리 시스템은 디지털 정보를 생성, 수정, 저장 및 게시하는 소프트웨어입니다. 예를 들어 WordPress는 웹 사이트 구축을 위한 오픈 소스 콘텐츠 관리 시스템입니다.
컨테이너
컨테이너는 애플리케이션 코드 및 필요한 리소스의 배포 준비된 번들입니다. 개발자는 Amazon Elastic Container Service(Amazon ECS)를 사용하여 컨테이너화된 애플리케이션을 배포, 관리 및 크기 조정합니다.
플랫폼 미들웨어란 무엇인가요?
플랫폼 미들웨어는 관리형 도구 및 리소스 체계를 제공하여 애플리케이션 개발을 지원합니다. 개발자는 플랫폼 미들웨어를 사용하여 애플리케이션 간에 리소스를 공유하거나 전송합니다. 플랫폼 미들웨어 리소스의 몇 가지 예를 들면 다음과 같습니다.
런타임 환경
런타임 환경은 소프트웨어 프로그램을 실행할 수 있는 작은 운영 체제와 같습니다. 예를 들어 Java 애플리케이션은 Java 런타임 환경에서 실행되어야 합니다. 개발자는 AWS Lambda를 사용하여 모든 프로그래밍 언어를 위한 런타임 환경을 설정할 수 있습니다.
웹 서버
웹 서버는 웹 사이트로부터 요청을 수신 및 처리하고 이에 응답하는 컴퓨터 프로그램입니다. 웹 개발자는 Amazon Lightsail을 사용하여 간단한 애플리케이션의 웹 서버를 호스트하고 관리합니다.
콘텐츠 관리 시스템
콘텐츠 관리 시스템은 디지털 정보를 생성, 수정, 저장 및 게시하는 소프트웨어입니다. 예를 들어 WordPress는 웹 사이트 구축을 위한 오픈 소스 콘텐츠 관리 시스템입니다.
컨테이너
컨테이너는 애플리케이션 코드 및 필요한 리소스의 배포 준비된 번들입니다. 개발자는 Amazon Elastic Container Service(Amazon ECS)를 사용하여 컨테이너화된 애플리케이션을 배포, 관리 및 크기 조정합니다.
클라우드 컴퓨팅에서 미들웨어란 무엇인가요?
클라우드 컴퓨팅에는 클라우드 네이티브 애플리케이션의 구축 및 서로 다른 인프라에서의 배포가 포함됩니다. 개발자는 복잡한 인프라 관리를 걱정할 필요없이 미들웨어를 사용하여 클라우드 리소스에 액세스할 수 있습니다. 개발자는 Amazon Elastic Compute Cloud(Amazon EC2)와 같은 확장 가능한 클라우드 기반 호스팅에 클라우드 애플리케이션을 컨테이너 단위로 배포합니다.
Web Server와 WAS(Web Application Server)의 차이( feat. 미들웨어)
클라이언트 /서버 구조
클라이언트는 서비스를 제공하는 서버에게 정보를 요청하여 응답 받은 결과를 사용한다. 웹서버와 웹브라우저가 대표적으로 서버와 클라이언트의 관계라고 말할 수 있다.
DBMS
- 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 ( Mysql, Oracle등)
- DBMS는 보통 서버형태로 서비스를 제공하기 때문에 이러한 DBMS에 접근하여 동작하는 클라이언트 프로그램이 많이 만들어졌다. 그런데 이러한 방식의 문제점은 클라이언트의 로직이 많아지고 클라이언트 프로그램의 크기가 커진다는 문제가 있다.프로그램 로직이 변경이 되면 클라이언트가 매번 배포되어야 한다는 문제가 있었고, 대부분의 로직이 클라이언트에 포함되어 배포가 되기 때문에 보안이 나쁘다는 문제가 있었다. 그래서 등장하게 된게
미들웨어!
- DBMS를 직접 클라이언트가 연결되어 동작하는 방식이 여러 가지 단점이 있었음을 알게 된 후 이러한 문제점을 해결하기 위해 등장한것이 미들웨어라는 개념이다. 클라이언트와 DBMS사이에 위의 그림과 같이 또 다른 서버를 두는 방식이다. 클라이언트는 단순히 요청만 중앙에 있는 서버에게 보내고, 중앙에 있는 서버(미들웨어)는 대부분의 로직을 수행한다. 이때, 데이터를 조작할 일이 있으면 DBMS에게 부탁한다. 그리고 그 결과를 클라이언트에게 전송하면 클라이언트는 그 결과를 화면에 보여주게 된다. 클라이언트가 해야했던 복잡한로직은 사라지고, 단순히 화면에 그 결과만 보여주고 사용자로부터 값을 입력 받아서 미들웨어에게만 보내는 역할만 수행하면 되기 때문에 크기가 매우 작아지게 됐다.
- 프로그램 로직이 변경이 된다 하더라고 모든 클라이언트를 다시 배포할 필요가 없이 중앙의 미들웨어만 변경하면 되는 장점을 가짐.
WAS( 웹서버+웹컨테이너 Ex. Jeus, Tomcat, Websphere etc..)
최초의 웹이 등장했을 때는 웹 브라우저는 정적인 데이터만 보여주었다. 웹이 널리 사용되면서 사용자들의 요구사항은 점점 커지게 됐고, 웹에서 데이터를 입려하고 조회하는 등의 동적인 기능도 요구됨. 동적인 기능은 프로그래밍을 통해서는 가능함. 웹서버에서 프로그래밍 기능이 들어가는 방식을 CGI라고 불렀었고, CGI는 단순한 프로그래밍에서는 사용시 별 문제가 없었습니다. 그러나 웹은 점점 복잡해졌고 점점 복잡한 프로그래밍적 기능을 요구하게 됨. 보통 이러한 기능들은 DBMS에 연관된 경우가 많았음 브라우저를 클라이언트라고 본다면 브라우저와 DBMS사이에 동작하는 미들웨어가 필요하게됨. WAS도 넓게 보면 미들웨어에 포함된다고 볼수있음
WAS 주요기능
- 프로그래밍 실행환경과 데이버베이스 접속 기능을 제공.
- 여러개의 트랜잭션을 관리.
- 업무를 처리하는 비즈니스 로직을 수행
이 외에도 WAS는 기본적으로 웹서버의 기능도 제공한다.
그래서 웹서버 따로 WAS 따로 설치안하고 톰캣이라는 WAS하나만 설치하고 이용이 가능한 이유는 이 WAS, 톰캣이 가지고 있는 웹서버가 충분한 기능을 하고 있기 때문에 굳이 따로 Apache같은 웹서버를 같이 설치 안하고 톰캣만 설치해서 사용하는 것임.
웹서버는 보통 정적인 콘텐츠를 웹브라우저에게 전송하는 역할을 하고 WAS는 프로그램의 동적인 결과를 웹 브라우저에게 전송하는 역할을 담당함. 즉 WEB서버는 HTML문서와 같은 정적 컨텐츠를 처리하는 것이고(HTTP프로토콜을 통해 읽힐 수 있는 문서, Ex. image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들) WAS는 jsp등의 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹앱서비스(웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물 * Servlet: WAS 위에서 돌아가는 Java Program)를 처리하는 것이다.
앞에서 WAS가 제공하는 웹서버의 기능도 웹서버가 제공하는 기능에 비해서 성능이 떨어지지는 않음. 그렇다면 웹서버는 안필요한 걸까?.... 사실 웹서버 없이 WAS만 있어도 정적인 콘텐츠와 동적인 콘텐츠를 모두 제공할 수 있음.
WAS 등장이 초창기였을 때에는 WAS에 내장된 웹서버가 성능이 좀 떨어졌음. 그랬기 때문에 초창기에는 웹어플리케이션을 실행할 때, Apache와 톰캣을 같이 설치해서 실행을 했어야 됐는데, 이게 계속 발전하면서 웹 서버의 역할도 충분히 해주고 있기 때문에 웹 서버를 따로 설치하지 않아도 충분히 동작하는 경우들이 굉장히 많아짐.
그럼에도 불구하고 웹서버가 WAS 앞단에 있으면 좋은 이유는 있음.
웹서버는 상대적으로 WAS보다 간단한 구조로 만들어져 있음. 사람들이 많이 접속하는 대용량 웹어플리케이션의 경우에는 서버의 수가 여러대 일수 있음. 가끔 프로그램이 혼자 종료되는 경우 있지않음? WAS에서 동작하도록 개발자가 만든 프로그램이 오작동이 발생해서 WAS 자체에 문제가 발생하는 경우도 있음. 이 경우, WAS를 재시작해야 하는 경우가 생기는데, 문제가 있는 WAS를 재 시작할 때 앞단의 쉡서버에서 먼저 해당 WAS를 이용하지 못하도록 하고 WAS를 재시작한다면 해당 웹 애플리케이션을 사용하는 사람은 WAS의 문제가 발생한지 모르고 이용할 수 있을 것임. 이러한 처리를 장애극복기능 이라고 함.
대용량 웹애플리케이션에는 무중단으로 운영하기 위해서 상당히 중요한기능임. 이러한 기능 때문에 보통 웹서버가 WAS앞단에 동작하도록 하는 경우가 많음.
즉 정리하자면,
- 규모가 커질수록 웹 서버와 WAS를 분리합니다.
- 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 웹서버와 WAS를 대체로 분리합니다.
컨테이너(Containner)
- -JSP와 서블릿을 이용하는 웹 응용 프로그램은 자바 언어를 이용해서 작성할 수 있는데, JSP와 서블릿을 실행시킬 수 있는 소프트웨어를 웹 컨테이너(Web Container) 혹은 서블릿 컨테이너(Servlet Container)라고 한다.
- Servlet 컨테이너, JSP 컨테이너, EJB 컨테이너 등의 종류가 있으며, 대표적인 웹 컨테이너로는 자카르타 톰캣(JSP), RESIN, Web Logic, WebtoB 등이 있다.
- 웹 서버에서 JSP를 요청하면 톰캣에서는 JSP 파일을 서블릿으로 변환하여 컴파일을 수행하고, 서블릿의 수행결과를 웹 서버에서 전달하게 된다.
Web Service Architecture
웹서비스 아키텍쳐는 그래서 다양한 구조를 가질 수 있다.
- Client -> Web Server -> DB
- Client -> WAS -> DB
- Client -> Web Server -> WAS -> DB
3번 구조의 동작과정은 아래와 같다.
1. Web Server는 웹 브라우저 클라이언트로부터 HTTP 요청을 받는다.
2.Web Server는 클라이언트의 요청(Request)을 WAS에 보낸다.
3. WAS는 관련된 Servlet을 메모리에 올린다.
4. WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다. (Thread Pool 이용)
5. HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달한다.
5-1. Thread는 Servlet의 service() 메서드를 호출한다.
5-2. service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.
5-3. protected doGet(HttpServletRequest request, HttpServletResponse response)
6. doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달한다.
7. WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달한다.
8. 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 제거한다.
'> IT (Information Technology)' 카테고리의 다른 글
FC, iSCSI, FCIP, FCoE (0) | 2023.03.09 |
---|---|
Linux, ReaR, OS Backup, Relax & Recovery (1) | 2023.03.09 |
vSphere 업그레이드 관련 호환성 검사 가이드 (0) | 2022.05.14 |
SChannel, 36887, 36871 (0) | 2022.02.15 |
Garbage Collection, GC, 가비지 컬렉션, 개념, 동작원리, 알고리즘 (1) | 2021.11.30 |