웹 개발 큰그림 : WEB, WAS, 그리고 MVC

허상범·2021년 1월 20일
0

Software Engineering

목록 보기
4/8

Web vs WAS

1. WEB, WAS란?

웹서버(WEB)란?

  • 웹 서버(소프트웨어): 웹 브라우저 클라이언트로부터 HTTP요청을 받아들이고, HTML문서와 같은 웹 페이지에서 흔히 찾아 볼 수 있는 자료 콘텐츠에 따라 HTTP에 반응하는 컴퓨터 프로그램

  • 웹 서버(하드웨어): 위에 언급한 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨터

웹 애플리케이션 서버(WAS, Web Application Server)란?

인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진)이다. 웹 애플리케이션 서버는 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행이 된다.

웹 서버 + 웹 컨테이너로 웹 상에서 사용하는 컴포넌트를 올려놓고 사용하게 되는 서버이다. 여기서 웹 컨테이너란, JSP와 Servlet을 실행시킬 수 있는 SW를 웹 컨테이너라고 한다.

WAS 기본 기능

1) 프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다.
2) 여러 개의 트랜잭션을 관리한다.
3) 업무를 처리하는 비즈니스 로직을 수행한다.
4) Web Service 플랫폼으로서의 역할

  • WEB서버는 HTML 문서같은 정적 컨텐츠를 처리하는 것이고 (HTTP 프로토콜을 통해 읽힐 수 있는 문서)
  • WAS서버는 asp, php, jsp 등 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹 응용 프로그램 서비스를 처리하는 것이다.

그래서 이 둘의 차이는?

목적이 다르다.

웹 서버는 정적인 데이터를 처리하는 서버이다. 이미지나 단순 html파일과 같은 리소스를 제공하는 서버를 웹 서버를 통하면 WAS를 이용하는 것보다 빠르고 안정적이다.

반면 WAS는 동적인 데이터를 처리하는 서버이다. DB와 연결되어 데이터를 주고 받거나 프로그램으로 데이터 조작이 필요한 경우에는 WAS를 활용해야 한다.

우리가 만드는 웹페이지는 정적 컨텐츠와 동적 컨텐츠를 함께 노출하게 한다. WAS가 정적 데이터를 처리하게 되면, 동적 컨텐츠의 처리가 지연이 될 것이고 이로 인한 페이지 노출시간이 늘어나게 된다. WAS는 동적 처리에 최적화 되어 있는 서비스이기 때문에 처리 속도를 위해, 정적처리는 웹서버에서 처리를 하고, 동적 컨텐츠는 WAS에서 처리하게 된다.

사용자가 클라이언트(브라우저)에 요청을 하게 되면 이를 웹서버에서 반응하여 WAS의 처리를 거쳐 웹 페이지로 다시 웹서버에서 클라이언트(브라우저)에 응답 메시지를 주는 것이다.

추가적으로, JSP를 배울 때 대체적으로 Apache와 Tomcat을 사용한다. ASP를 구동하기 위해서는 IIS를 사용한다. ASP의 환경이 MS계열 서비스라면 WAS의 기능을 담당하는 부분이 있어 별도의 WAS가 필요하지 않다.

2. WEB과 WAS의 종류

1) apache란?

apache란 것은 소프트웨어 단체 이름이다. 그리고 우리가 흔히 부르는 아파치서버라는 것은 이 재단에서 후원하는 오픈소스 프로젝트 커뮤니티에서 만든 http웹서버를 말한다.

http 웹서버는 http 요청을 처리할 수 있는 웹서버이고, 아파치 http서버는 http요청을 처리하는 웹서버인 것이다. 클라이언트가 GET, POST, DELETE 등등의 메소드를 이용해 요청을 하면 이 프로그램이 어떤 결과를 돌려주는 기능을 한다.

즉, 아파치는 웹서버이다.

2) tomcat이란?

tomcat은 흔히 WAS(Web Application Server)라고 말한다. WAS는 웹서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는 서버를 말한다. 클라이언트의 요청이 있을 때 내부의 프로그램을 통해 결과를 만들어내고 이것을 다시 클라이언트에 전달해주는 역할을 하는 것이 바로 웹 컨테이너이다.

앞에서 본 아파치 웹 서버와의 차이는 이 컨테이너 기능이 가능하냐의 차이가 가장 크다.

3. MVC (Model View Controller)

MVC란, 애플리케이션을 세가지의 역할로 구분한 개발 방법론이다.

밑의 그림처럼 사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고, 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.

이를 Web에 적용해보면,

  1. 사용자가 웹 사이트에 접속한다 (USE)

  2. Controller는 사용자가 요청한 웹 페이지를 서비스 하기 위해서 모델을 호출한다. (Manipulates)

  3. 모델은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴한다.

  4. Controller는 Model이 리턴한 결과를 View에 반영한다. (Updates)

  5. 데이터가 반영된 View는 사용자에게 보여진다. (Sees)

profile
Engineering & Science, Since 2021 | Finance, Backend, Data

0개의 댓글