웹 서버란?

  • 웹 서버는 보통 소프트웨어를 말하지만, 웹 서버 소프트웨어가 동작하는 컴퓨터를 말하기도 한다.
  • 웹 서버의 가장 중요한 기능은 클라이언트가 요청하는 HTML 문서나 각종 리소스를 전달하는 것이다.
  • 웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장된 정적인 데이터이거나 동적인 결과가 될 수 있다.
    • 웹 크롤러 : 네이버나 구글같은 검색 사이트에서 다른 웹 사이트 정보를 읽어갈 때 사용하는 소프트웨어이다.
    • 정적인 데이터는 이미지, HTML, CSS, JS 파일 등 컴퓨터에 저장되어있는 리소스이고, 동적인 데이터는 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물이다.

웹 서버 소프트웨어의 종류

  • 가장 많이 사용하는 웹 서버는 Apache, Nginx, Microsoft IIS
  • Apache 웹 서버는 오픈소스 소프트웨어로 거의 대부분의 운영체제에서 설치 및 사용할 수 있다.
  • Nginx는 차세대 웹 서버로, 더 적은 자원으로 더 빠르게 데이터를 서비스 하는 것을 목적으로 만들어졌다.
  • 아래 그림을 통해 Nginx의 추세를 확인할 수 있다.
[##_Image kage@bVleF1/btqBrm0IQAd/dPOvukPu55KMKzfg4hSbd1/img.png CDM 1.3 {“originWidth”:695,”originHeight”:429,”style”:”alignCenter”}_##]

DBMS ( Database Management Sysyem )

개발 초창기에는 개발자들이 직접 파일에 데이터를 저장하고 읽어들이는 기능을 모두 구현해야 했다. 이후 DBMS 라는 소프트웨어의 등장으로 상대적으로 쉡게 데이터를 관리할 수 있게 되었다. 보통 서버 형태로 서비스를 제공하였기 때문에 DBMS 에 접속해서 동작하는 클라이언트 프로그램이 많이 만들어졌다. 하지만 클라이언트 로직이 많아지고, 프로그램의 크기가 커진다는 문제가 생겼고, 프로그램 로직이 변경되면 클라이언트가 매번 다시 배포되어야한다는 문제점이 있었다. 또한 대부분의 로직이 클라이언트에 포함되어 배포되면서 보안성도 떨어졌다.

미들웨어 ( MiddleWare )

DBMS를 직접 클라이언트와 연결되어 동작하는 방식의 문제점으로 클라이언트와 DBMS 사이에 또 다른 서버를 두는 방식이 생겨났다. 클라이언트는 요청만 중앙서버인 미들웨어로 보내고 대부분의 로직은 미들웨어에서 수행된다. 데이터를 조작할 일이 있으면 DBMS 결과를 클라이언트에게 전달하는 방식으로 이루어졌다. 클라이언트는 복잡한 로직이 사라지고, 사용자로부터 입력만 받아서 미들웨어에게 보내기만 했다. 이로 인해 클라이언트의 크기가 작아지고, 프로그램 로지깅 변경되어도 중앙의 미들웨어만 변경하면 된다.

[##_Image kage@zJQdC/btqBqn6TbSR/snK552dJgE1RvjkTuzl2Fk/img.png CDM 1.3 {“originWidth”:985,”originHeight”:483,”style”:”alignCenter”}_##]

WAS ( Web Application Server )

최초의 웹은 정적인 데이터만 사용하였다. 하지만 이후 웹에서 데이터를 입력하고 조회하는 등의 동적인 데이터를 요구하게 되었다. 웹에서 프로그래밍 기능을 하는 CGI도 단순한 프로그래밍에는 문제가 없었지만 DBMS와 연관된 복잡한 프로그래밍은 수행하지 못했다. 따라서 브라우저가 클라이언트라고 보면 브라우저와 DBMS 사이의 미들웨어가 필요하게 되었고, 이로인해 WAS가 생겨났다.

WAS의 기본기능은 3가지로 아래와 같다

  • 프로그램 실행환경과 데이터베이스 접속 기능을 제공한다.
  • 여러 개의 트랜잭션(논리적인 작업 단위)을 관리한다.
  • 업무를 처리하는 비즈니스 로직을 수행한다.

또한 WAS는 웹 서버의 기능도 제공한다.

[##_Image kage@rx7j8/btqBoOkjAZA/qQQgLufjkAQFxr3nOZ1k1K/img.png CDM 1.3 {“originWidth”:969,”originHeight”:615,”style”:”alignCenter”}_##]

서버 vs WAS

보통 웹 서버는 정적인 콘텐츠를 웹 브라우저에 전송하고, WAS는 프로그램의 동적인 결과를 웹 브라우저에 전송한다. WAS가 웹 서버의 기능을 제공하지만 따로 웹 서버가 필요한 이유는 규모가 커질 때 발생한다. 대용량 웹 어플리케이션의 경우 서버의 수가 여러 대이고, 프로그래밍의 문제로 WAS 자체에 문제가 생기면 해당 WAS를 재시작해야한다. 이때, 웹서버가 있으면 해당 WAS를 이용하지 못하게 하고 재시작하기 때문에 사용자는 WAS에 문제가 있었는지 알아차리지 못한다. 이러한 처리를 장애극복기능이라하며 대용량 웹 어플리케이션을 무중단으로 이용하기 위해서는 상당히 중요한 기능이다.

업데이트:

댓글남기기