여는 글

안녕하세요. 오랜만에 연속 포스팅이네요. 오늘은 미들웨어(Middleware)에 관한 이야기를 해보려 합니다.

프론트엔드라면 Javascript와 Javascript기반의 프레임워크. 예를 들면, Vue, Redux, React 등을 공부하고, 백엔드라면 Java와 Spring Framework 그리고 Spring Boot를 공부하게 됩니다. 저 역시 그런 공부 과정을 거쳤었습니다.

하지만 이러한 프론트엔드 및 백엔드 기술 사이의 중요한 연결 고리인 미들웨어(Middleware)에 대해서는 간과되기가 쉬운 것 같습니다. 소프트웨어 프로젝트에서 미들웨어가 필수적이기 때문에 미들웨어까지 익힌다면, 또 하나의 강력한 무기가 되리라 생각합니다. 따라서, 오늘은 미들웨어의 분류에 대해 알아보도록하겠습니다.

미들웨어(Middleware)

미들웨어란?

미들웨어는 개발자가 애플리케이션을 네트워크에 연결하는 데 사용하는 소프트웨어입니다. 정확히는 미들웨어가 어플리케이션을 다른 시스템이나 서비스와 서로 통신할 수 있도록 지원해주는 역할을 한다는 의미입니다.

미들웨어는 어떠한 두 시스템이 서로 다른 언어나 프로토콜을 사용하는 경우에도 이들 간의 상호작용을 원활하게 해줍니다.

미들웨어는 Java, Javascript, C#, C++등 다양한 언어로 작성되는 소프트웨어들입니다. 어떠한 언어로 작성되었다고 해도 애플리케이션과 운영 체제 사이에 위치하여 통신 채널의 양쪽에 별도로 설치할 필요가 없습니다. 이런 미들웨어의 특성은 미들웨어 플랫폼이 독립적으로 작동할 수 있게 해주며, 다양한 환경에서 호환성과 유연성을 보장합니다. 이는 특히 분산된 시스템이나 마이크로서비스 아키텍처에서 중요한 역할을 합니다.

엔터프라이즈 미들웨어(Enterprise Middleware)

엔터프라이즈 미들웨어(Enterprise Middleware)는 대규모 조직이나 기업에서 사용되며, 애플리케이션 간의 협업과 네트워크의 소프트웨어 구성 요소 간의 중재를 담당합니다. 엔터프라이즈 미들웨어는 보안, 신뢰성 및 확장성을 제공하기 때문에, 기업 및 정부 기관과 같은 곳에서 선호합니다. 예를 들면, IBM WebSphere, Oracle WebLogic, Red Hat JBoss Enterprise Application Platform등이 있고 또, 국내 소프트웨어 중에선 TmaxSoft의 JEUS나 WebtoB가 있습니다.

플랫폼 미들웨어(Platform Middleware)

플랫폼 미들웨어(Platform Middleware)는 애플리케이션 개발 및 배포 프레임워크에 추가 기능을 제공하여 개발자가 더 포괄적인 애플리케이션을 구축할 수 있도록 지원합니다. ASP.NET이나 Java EE (Java Platform, Enterprise Edition)등이 있습니다.

응용 프로그래밍 인터페이스(Application Programming Interface)

응용 프로그래밍 인터페이스(Application Programming Interface). 줄여서 API는 특정 운영 체제에서 애플리케이션 개발을 위한 도구라고 볼 수 있습니다. API는 웹 서비스 접근성을 높이는 것 뿐만 아니라, 모바일 애플리케이션 개발에도 중요한 역할을 합니다. 예를 들면, 웹 API를 사용하여 날씨 정보나 지도를 애플리케이션에 통합하기도 합니다.

애플리케이션 서버(Application Server)

애플리케이션 서버(Application Server)는 웹 애플리케이션을 호스팅하고 관리하는 데 사용되는 서버로, 데이터베이스 및 다른 서버와의 상호작용을 처리합니다. 앞서 언급한 JEUS. 그리고 Apache Tomcat, IBM WebSphere가 이에 속합니다.

애플리케이션 통합(Application Integration)

서로 다른 애플리케이션 시스템을 결합하여 서로 작업하고 정보를 공유할 수 있도록 합니다. 대부분의 기업과 회사는 클라우드와 온프레미스 애플리케이션의 복잡한 조합에 의존하는데, 이러한 애플리케이션 통합은 프레젠테이션 수준, 비즈니스 프로세스, 데이터 및 통신 수준 통합에 중점을 둡니다. CRM과 ERP 시스템의 통합 같은 경우가 사용 예입니다. 삼성 SDS의 EAI 솔루션이 이에 속합니다.

콘텐츠 중심 미들웨어(Content-Centric Middleware)

콘텐츠 중심 미들웨어(Content-Centric Middleware)는 공급자와 소비자가 함께 작업하여 콘텐츠의 저장, 검색, 전송 및 관리를 지원하는 미들웨어입니다. Google Docs가 이에 속합니다.

데이터 통합(Data Integration)

기업이 다양한 업무를 수행하기 위해서는 데이터를 수신하고 처리하는 것이 필요합니다. 이 기능을 지원하는 데이터 통합(Data Integration)은 데이터베이스 및 기타 소스의 데이터를 사용하여 이를 단일 엔터티(Entity)로 결합하는 미들웨어입니다. LG CNS의 데이터 통합 솔루션이 이에 속합니다.

장치 미들웨어(Device Middleware)

장치 미들웨어(Device Middleware)는 다양한 장치와 애플리케이션 간의 상호작용을 지원합니다. IoT 장치의 데이터 수집 및 관리를 하는 경우에 사용됩니다. 다시 말해, 서로 다른 언어로 구축된 애플리케이션이 동일한 장치에서 실행되더라도 서로 통신할 수 있게 하는 미들웨어입니다.

임베디드 미들웨어(Embeded Middleware)

임베디드 미들웨어(Embeded Middleware)는 애플리케이션과 운영 체제의 통합 인터페이스 사이세어 매개체 역할을 합니다. 내장된 미들웨어는 애플리케이션과 운영 체제 간의 인터페이스 역할을 하여 개발자가 다양한 플랫폼에서 실행되는 애플리케이션을 만들 수 있도록 해줍니다. 자동차에 내장되는 시스템들이 임베디드 미들웨어라고 할 수 있습니다.

게임 엔진(Game Engines)

게임 엔진(Game Engines)은 그래픽, 물리, 스크립팅, 네트워킹을 위한 가이드 역할을 하여 상호 작용하고 협업할 수 있도록 하는 미들웨어입니다. 동시에 소프트웨어 프레임워크라고도 표현합니다. Unreal Engine, Unity가 이에 속합니다.

메시지 지향 미들웨어 (Message-Oriented Middleware)

메시지 지향 미들웨어 (Message-Oriented Middleware)는 다양한 시스템 간 메시지 기반의 통신을 가능하게 합니다. NHN의 TOAST, Apache Kafka, RabbitMQ가 이에 속합니다.

객체 요청 브로커 (Object Request Broker)

오브젝트 요청 브로커 (Object Request Broker)는 분산 컴퓨팅 환경에서 객체 간 통신을 담당합니다. TmaxSoft의 Tibero가 이에 속합니다.

포털(Portals)

포털(Portals)은 사용자 인터페이스 통합을 촉진하고 백엔드 시스템과 장치 간의 상호 작용을 용이하게 하는 소프트웨어입니다. 이는 사용자들이 백엔드 시스템에 직접적으로 관여하지 않고도 필요한 정보를 접근할 수 있게 해줍니다. 쉽게 포털 사이트라고 말하는 것들을 생각하면 됩니다. 네이버(NAVER), 다음(DAUM)등이 이에 속합니다.

로봇 미들웨어 (Robotic Middleware)

로봇 미들웨어 (Robotic Middleware)는 로봇 시스템을 위한 소프트웨어 계층으로, 다양한 로봇 관련 하드웨어 및 소프트웨어 컴포넌트 간의 상호작용을 지원합니다. 일반적으로 공중 드론, 산업용 로봇, 수중 탐사 차량 등 더 큰 시스템의 일부로 함께 작동 해야 하는 여러 구성 요소가 있는 애플리케이션에 사용됩니다. Miro와 같은 곳에서 로봇 미들웨어를 볼 수 있습니다.

닫는 글

생각보다 미들웨어(Middleware)라는 범주에 속하는 기술들이 많습니다. 그리고 해외 오픈소스가 아니더라도 국내 소프트웨어 업계에서 개발된 국내 미들웨어 기술들도 다양하다는 것을 알 수 있었습니다. 프론트엔드 백엔드 이외에 다룰 줄 아는 미들웨어가 있다면, 개발자로서 큰 장점이 될 것 같습니다.