반응형
미들웨어 (MiddleWare) 란?
미들웨어의 탄생 배경
과거에는
애플리케이션과 시스템을 동일한 서버에서 실행 ⇒ 서로 다른 애플리케이션들이 상호작용하기 힘듦
∴ 각각의 애플리케이션은 자체적으로 모든 기능을 구현해야 했음
⇒ 애플리케이션의 개발 및 유지보수가 복잡해짐
클라이언트 쪽에 비즈니스 로직이 많을 경우, 클라이언트 관리(배포 등)로 인해 비용이 많이 발생하는 문제도 발생
이러한 문제들를 해결하기 위해 미들웨어가 등장하였다.
미들웨어란?
- 서로 다른 애플리케이션, 시스템, 프로토콜 등의 컴퓨터 프로그램들이 서로 상호작용할 수 있도록 도와주는 소프트웨어
(즉, 다른 소프트웨어와 소통하기 위한 인터페이스 역할을 함) - 비즈니스 로직을 (클라이언트와 DBMS 사이의) 미들웨어 서버에서 동작하도록 함으로써 클라이언트는 입력과 출력만 담당하도록 함.
- 다양한 애플리케이션들이 서로 상호작용할 수 있는 인터페이스 역할을 함
⇒ 애플리케이션들의 의존성을 줄이고, 개별적으로 개발 및 유지보수 가능 - 분산 시스템이 등장하면서 미들웨어는 분산 환경에서 자원을 관리하고, 애플리케이션 간의 통신을 관리하는 역할을 맡게 됨
- 대표적인 미들웨어로는 웹 서버와 WAS, 메시지 브로커, 데이터베이스 연동 라이브러리 등이 있다.
미들웨어의 기능
- 프로토콜 변환 (Protocol Translation)
- 서로 다른 프로토콜을 사용하는 애플리케이션 간에 데이터를 주고받을 수 있도록 변환하는 기능
- 예시) HTTP와 HTTPS 프로토콜 간의 변환, 혹은 FTP와 SFTP 프로토콜 간의 변환 등
- 메시지 큐 (Message Queuing)
- 분산 환경에서 서로 다른 애플리케이션 간의 비동기식 통신을 위해 사용되는 기능
- 메시지를 큐에 저장하고, 이를 다른 애플리케이션에서 수신할 수 있도록 함
- 메시지 큐를 이용하여 안정적으로 메시지를 전달하고, 복구 기능 제공
- 데이터베이스 연결 (Database Connectivity)
- 데이터베이스와 애플리케이션 간의 연결을 관리하는 기능
- 데이터베이스 연결 미들웨어를 이용하면 데이터베이스 연결 관리, 세션 관리, 데이터베이스 풀링 등을 간편하게 처리할 수 있음
- 보안 (Security)
- 인증, 권한 부여, 암호화 등 보안 관련 기능 제공하는 미들웨어
- 예시) 웹 애플리케이션 방화벽(WAF), 인증 미들웨어 등
- 로깅 (Logging)
- 애플리케이션에서 발생하는 로그를 수집•저장•분석하는 기능
- 로깅 미들웨어를 이용하면 애플리케이션에서 발생하는 문제를 빠르게 파악하고 대처할 수 있음
- 인터페이스 (Interface)
- 다양한 프로그래밍 언어나 플랫폼 간의 인터페이스를 제공하는 미들웨어
- 예시) JAVA와 .NET 간의 인터페이스를 제공하는 미들웨어
- 트랜잭션 (Transaction)
- 여러 개의 애플리케이션에서 발생하는 트랜잭션을 관리하는 기능
- 여러 단계로 이루어진 작업을 하나의 논리적인 단위인 트랜잭션으로 처리
- 트랜잭션 관리를 위한 로깅, 롤백 등의 기능 제공
- 분산 처리 (Distributed Computing)
- 분산 시스템에서 다수의 서버가 작업을 처리할 수 있도록 하는 기능
- 분산되어 있는 자원을 하나의 시스템처럼 사용할 수 있도록 지원
- 서비스 (Service)
- 분산된 서비스를 통합하여 하나의 서비스처럼 제공
- 예시) 웹 서비스, RESTful API,, 마이크로서비스 아키텍처 등
- 모니터링 (Monitoring)
- 시스템 및 어플리케이션의 성능 및 상태 모니터링
- 로그 수집, 분석, 트랜잭션 추적, 성능 모니터링 등
- 배포 (Deployment)
- 어플리케이션 및 구성 요소의 배포 및 관리
- 배치 처리, 자동화된 배포, 확장성 관리, 자원 모니터링 등
- 라우팅 (Routing)
- 메시지 또는 요청을 적절한 시스템으로 전달
- 로드 밸런싱, 라우팅, 라우터 등
반응형
'Back-End > 부스트코스' 카테고리의 다른 글
[웹 백엔드] 웹서버와 WAS를 분리하는 이유 (0) | 2023.04.07 |
---|---|
[웹 백엔드] WAS (0) | 2023.04.07 |
[웹 백엔드] HTTP 요청 메서드 (0) | 2023.04.05 |
[웹 백엔드] JDBC (0) | 2023.04.05 |
[웹 백엔드] MySQL - DDL (create, drop) (0) | 2023.01.25 |