3 minute read

미들웨어? 그게 도대체 뭘까요?

최근 첫 입사지원서를 냈다. (약간 강압적인 입사지원)
아직 나는 공부할 것이 산더미인데(물론 입사를 하더라도 이 직종을 그만둘 때 까지는 계속 공부를 해야하지만…) 벌써 입사지원서를 내어보니 실감이 살짝 든다.

내가 지원한 부서는 입밴부터 당하고 사실 아직 들어보지도 못한 부서에 지원하게 되었다.(사실 모든 게 생소하다.)

그 부서의 명은 OFM팀.(Oracle Fushion Middleware)
오라클은 일단 대충 알겠고 그렇담 middleware는무엇인가?

MiddleWare?

알아보자

개요

미들웨어는 운영 체제에서 제공하지 않는 일반적인 서비스와 기능을 애플리케이션에 제공하는 소프트웨어입니다. 데이터 관리, 애플리케이션 서비스, 메시징, 인증 및 API 관리는 주로 미들웨어를 통해 처리됩니다.

미들웨어는 개발자들이 애플리케이션을 보다 효율적으로 구축할 수 있도록 지원하며 애플리케이션, 데이터 및 사용자 사이를 연결하는 요소처럼 작동합니다.

멀티 클라우드 및 컨테이너화된 환경을 갖춘 조직의 경우 미들웨어를 사용하면 스케일에 따라 비용 효율적으로 애플리케이션을 개발하고 실행할 수 있습니다.

미들웨어의 기원

미들웨어라는 용어는 1968년에 독일의 가르미슈파르텐키르헨에서 NATO 소프트웨어 공학 학회가 개최된 후 발표된 리포트에 처음 등장했습니다. 이 학회는 소프트웨어 설계, 프로덕션, 배포 등을 포함한 소프트웨어 공학 분야를 정의하고자 했습니다.

미들웨어에는 어떤 종류가 있을까요?

광범위한 범주로서 미들웨어는 웹 서버에서 인증 시스템 및 메시징 툴에 이르는 모든 요소를 포함할 수 있습니다.
현대적인 개발 환경에서 미들웨어의 공통 활용 사례 몇 가지를 살펴보겠습니다.

신규 애플리케이션 개발 
미들웨어는 다양한 활용 사례에 널리 사용되는 현대적인 런타임을 지원합니다. 개발자 및 아키텍트는 기반 런타임, 프레임워크 및 프로그래밍 언어 세트를 준수하는 다양한 플랫폼 전반에서 민첩하게 작업할 수 있습니다. 미들웨어는 웹 서버, SSO(Single Sign-On), 메시징 및 인메모리 캐싱과 같이 일반적으로 사용되는 기능도 제공합니다.

기존 애플리케이션 최적화 
미들웨어는 향상된 성능과 이식성을 지원하여 개발자들이 유용한 툴을 활용하면서 레거시 모놀리식 애플리케이션을 클라우드 네이티브 애플리케이션으로 트랜스폼하도록 도와줍니다.

포괄적인 통합
미들웨어 통합 툴은 중요한 내부 및 외부 시스템을 연결합니다. 트랜스포메이션, 연결성, 결합성 및 엔터프라이즈 메시징과 같은 통합 기능이 SSO 인증과 결합되어 개발자들이 다양한 애플리케이션 전체에 기능을 보다 손쉽게 확장할 수 있습니다.

애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)
많은 미들웨어 서비스는 애플리케이션 간 통신을 지원하는 툴, 정의 및 프로토콜 세트인 API를 통해 액세스할 수 있습니다. API를 활용하면 공통 레이어를 통해 완전히 다른 제품 및 서비스를 연결할 수 있습니다. 

데이터 스트리밍
API가 애플리케이션 간에 데이터를 공유하는 한 가지 방법이라면, 또 다른 접근 방식으로 비동기 데이터 스트리밍을 들 수 있습니다. 비동기 데이터 스트리밍은 데이터가 여러 애플리케이션 간에 공유될 수 있는 중간 저장소에 데이터 세트를 복제합니다. 실시간 데이터 스트리밍을 위해 널리 사용되는 오픈소스 미들웨어 툴 중 하나로 Apache Kafka가 있습니다.

지능형 비즈니스 자동화
미들웨어는 개발자, 아키텍트, IT 팀 및 비즈니스 리더들이 수동 의사 결정을 자동화하도록 지원하며 자동화를 통해 리소스 관리와 전반적인 효율성을 개선할 수 있습니다.

클라우드 컴퓨팅에서 미들웨어가 중요한 이유는 무엇일까요?

클라우드 네이티브 개발은 다양한 이점을 제공하지만 동시에 복잡성도 증가합니다. 애플리케이션은 온프레미스 시스템에서 퍼블릭 클라우드에 이르는 여러 인프라 전반에 배포될 수 있고, 아키텍처는 매우 다양합니다. 개발자들은 다양한 툴, 언어 및 프레임워크를 균형 있게 다룰 수 있어야 하고, 낮은 비용으로 짧은 시간에 더 많은 작업을 수행해야 하는 부담을 안고 있습니다.

조직들은 이러한 복잡성을 관리하고 애플리케이션 개발을 신속하고 비용 효율적으로 유지하기 위해 미들웨어로 전환합니다. 미들웨어는 고도로 분산된 플랫폼 전반에서 원활하고 일관되게 작동하는 애플리케이션 환경을 지원할 수 있습니다.

한 곳에서 구축하고 다른 곳에 배포할 수 있으며, 애플리케이션의 기반인 미들웨어의 이점을 활용하여 동일하게 작동합니다.

애플리케이션 개발에서 미들웨어의 역할은 무엇일까요?

현대적인 비즈니스 애플리케이션은 스케일에 따라 온프레미스 및 클라우드 전반에서 실행되도록 설계됩니다. 이를 구축하기 위해 개발자들은 통합 기반 기능을 갖춘 애플리케이션 환경을 필요로 합니다. 미들웨어는 바로 이러한 환경을 조합하는 핵심 요소입니다.

이러한 기능은 4개의 레이어와 툴링으로 구성됩니다.

컨테이너 레이어 
이 미들웨어 레이어는 일관된 방식으로 애플리케이션 라이프사이클 제공 측면을 관리하며, CI/CD, 컨테이너 관리 및 서비스 메쉬 기능과 함께 DevOps 기능을 제공합니다.

런타임 레이어 
이 레이어는 사용자 지정 코드에 대한 실행 환경을 포함합니다. 미들웨어는 마이크로서비스, 빠른 데이터 액세스를 위한 인메모리 캐싱, 빠른 데이터 전송용 메시징 등 고도로 분산된 클라우드 환경에 대해 경량화된 런타임 및 프레임워크를 제공할 수 있습니다.

통합 레이어 
통합 미들웨어는 커스텀 애플리케이션 및 구매한 애플리케이션을 연결하는 서비스를 제공하는 것은 물론, 가동 시스템을 구축하기 위해 메시징, 통합 및 API를 통해 SaaS(서비스로서의 소프트웨어) 자산을 제공합니다. 또한 인메모리 데이터베이스 및 데이터 캐시 서비스, 데이터/이벤트 스트리밍 및 API 관리도 제공합니다.

프로세스 자동화 및 의사 결정 관리 레이어

이 마지막 개발 미들웨어 레이어는 중요 인텔리전스, 최적화 및 자동화, 의사 결정 관리를 추가합니다.

툴링
미들웨어 레이어 4가지와 더불어 애플리케이션 개발 툴링이 있습니다. 툴링을 통해 개발 팀은 미리 설정된 템플릿 및 컨테이너를 사용하여 애플리케이션을 구축하고, 효율적인 코드 공유 및 공동 개발을 지원합니다. 툴링은 온프레미스 및 클라우드에서 지속적이고 일관된 애플리케이션 개발 및 제공 경험을 지원합니다.

그래서 뭘 알아가야하나요?

출처

redhat