미들웨어는 양 쪽을 연결 하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할 을 하는 소프트웨어. 네트워크를 통해서 연결된 여러 개의 컴퓨터에 있는 많은 프로세스들에게 사용할 수 있도록 연결해 주는 소프트웨어를 말한다. 3계층 클라이언트/서버 구조에서 미들웨어가 존재한다. 웹 브라우저에서 데이터베이스로부터 데이터를 저장하거나 읽어올 수 있게 중간에 미들웨어가 존재한다.
광범위한 설명이지만 위에 표시한 2개의 키워드가 미들웨어의 역할 이라고 한다.
큰 범위로 보면 매개체 간 연결해주는 레이어 로써, 매개체는 클라이언트(사용자) - 서버, 서버-서버 간의 통신이 될 수도 있다.
통상적으로 기업에서 말하는 미들웨어 환경은 웹/어플리케이션 서버를 의미한다.
기존 웹 어플리케이션 운영 환경에서 사용자의 요청이 유입되는 순간부터 비즈니스 로직 처리, 데이터 처리 등을 모두 한 곳의 물리적 환경(서버)에서 통합 제공했다. 운영자의 입장에서 하나의 서버만 죽자고 운영하면 되니 관리포인트가 1개 라는 장점이 있었다.
-> 과연 1개의 관리 포인트는 장점만 있을까?
바꿔서 생각하면 그 1개의 통합 서버에 문제가 생겼을 때 전체 서비스 장애로 이어지고, 어느 포인트에서 장애를 일으켰는지 분석이 쉽지 않다. 여기까지기 1-Tier 구조 일때의 얘기다.
한 발자국 더 나아가 데이터 처리 분리를 하고 DBMS 만큼은 분리된 환경에서 제공하니 서비스 안정성이 증가 했을 것이다.
한 발자국 더 나아가 데이터 처리 분리를 하고 DBMS 만큼은 분리된 환경에서 제공하니 서비스 안정성이 증가햇을 것이다. 그러나 간과한 부분이 있다.
우리에게 아직 "1) 사용자의 요청이 유입되는 순간, 2) 비즈니스 로직처리" 만큼은 통합된 서비스에서 제공 하기 때문이다.
예를 들어 우리가 네이버에 접속을 했을 때, 메인 페이지가 띄워지는 건 불과 5초 이내지만 사실은 무수히 많은 파일 호출, 네트워크 통신 등 우리 눈에 보이지 않는 곳에서 서버는 매우 바빳다.
동시다발적인 사용자의 호출이 쌓이게 되면 통합된 서비스에서도 부하를 받을 것이다. 따라서 호출적인 서비스 처리를 위해 아래 기준대로 서비스를 나누게 되었다.
1) 사용자의 요청이 유입되는 순간 호출되는 앞단의 정적 페이지(html,css,js,png 등) 를 전용으로 처리하는 서버
2) 로그인, 검색 등 데이터를 가공하고 처리하는 뒷단의 동적 페이지(jsp, servlet 등) 를 전용으로 처리하는 서버
=> 이렇게 3개의 관리 포인트로 쪼개진 것을 3-Tier 구조라고 하며, 위 두개의 서버는 각각 WEB Server / WAS 를 의미한다.
미들웨어 담당자는 아래 그림에서의 Client - DB 사이에 위치한 WEB Server / WAS를 관리하다.