웹 브라우저를 실행한 후 주소창에 URL을 입력하면 그 주소에 해당되는 결과물이 화면에 보입니다.
웹 브라우저는 URL 주소에 해당하는 웹서버에 연결하고 해당 주소에서 볼 수 있는 내용을 읽어 들여 보여주게 됩니다.
웹 서버 소프트웨어
웹 서버는 소프트웨어를 보통 말하지만, 웹 서버 소프트웨어가 동작하는 컴퓨터를 말한다.
웹 서버의 가장 중요한 기능은 클라이언트가 요청하는 html문서나 각종 리소스를 전달하는 것입니다.
웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장되어 있는 정적인 데이 터거나 동적인 결과가 될 수 있습니다.
정적인 데이터란 보통 이미지, HTML 파일, CSS파일, JavaScript파일과 같이 컴퓨터에 저장되어 있는 파일을 의미합니다.
동적인 결과란 웹 서버에 의해 실행되는 프로그램을 통해서 만들어진 결과를 이야기합니다.
웹 크롤러는 네이버나 구글 같은 검색 사이트에서 다른 웹사이트 정보를 읽어갈 때 사용되는 소프트웨어입니다.
웹 서버 소프트웨어의 종류
가장 많이 사용하는 웹 서버는 Apache, Nginx, Microsoft , Google 웹 서버
Apache 웹서버는 Apache Software Foundation에서 개발한 웹서버로 오픈소스 소프트웨어이며, 거의 대부분 의 운영체제에서 설치 및 사용이 가능합니다. Nginx는 차세대 웹서버로 보통 불리며 더 적은 자원으로 더 빠르게 데이터를 서비스를 하는 것을 목적으로 만들어진 서버이며 오픈소스 소프트웨어입니다.
클라이언트 / 서버 구조
클라이언트는 서비스를 제공하는 서버에게 정보를 요청하여 응답받은 결과를 사용합니다.
대표적으로 웹서버와 웹 브라우저가 대표적으로 서버와 클라이언트의 관계라고 말할 수 있습니다.
DBMS / 클라이언트
DBMS는 데이터베이스를 관리하는 시스템을 이야기합니다 DBMS가 등장하기 이전에는 개발자들이 파일을 데이터를 저장하고 읽어 들이는 등의 기능들을 모두 구현해야만 했습니다. 이러한 불편함을 개선하고자 여러 가지 노력의 결과로 DBMS라는 소프트웨어가 등장했습니다. 최초 구현은 ORACLE에서 하였습니다.
다양한 DBMS가 존재하는데 예를 들면 MySQL, MariaDB, Oracle , PostgreSQL 등이 존재합니다.
DBMS가 등장하면서 개발자들은 상대적으로 쉽게 데이터를 관리할 수 있게 되었습니다.
미들웨어
DBMS를 직접 클라이언트가 연결되어 동작하는 방식이 여러 가지 단점이 있어 문제점을 해결하기 위해 등장한 것이 미들웨어라는 개념입니다. 클라이언트와 DBMS 사이에 또 다른 서버를 두는 방식입니다.
단점이란 클라이언트 쪽에 비즈니스 로직이 많을 경우, 클라이언트 관리(배포 등)로 인해 비용이 많이 발생하는 문제가 발생합니다.
해결하기 위한 방법으로 비즈니스 로직을 클라이언트와 DBMS사이의 미들웨어 서버에서 동작하도록 함으로써 클라이언트는 입력과 출력만을 담당하도록 하여 해결합니다.
이렇게 미들웨어가 비즈니스 로직을 가지고 있음으로 해서 클라이언트의 크기가 줄어들며 프로그램 로직이 변경된다 해도 재배포될 일이 없이 미들웨어만 변경하면 되었습니다.
WAS
WAS는 일종의 미들웨어로 웹 클라이언트의 요청 중 보통 웹 애플리케이션이 동작하도록 지원하는 목적을 가집니다.
최초의 웹이 등장했을 때는 웹 브라우저는 정적인 데이터만을 보여주었는데요
웹이 널리 사용되면서 사용자들의 요구사항이 증가하여 웹에서 데이터를 입력하고 조회하는 등의 동적인 기능을 요구하게 되었습니다.
이러한 미들 웨어를 WAS라고 합니다.
WAS가 가지는 중요한 3가지 기능이 존재합니다.
프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다.
여러 개의 트랜잭션을 관리한다. - 논리적인 작업 단위.
업무를 처리하는 비즈니스 로직을 처리한다.
이외에도 다양한 기능이 있지만
대표적으로 웹서버의 기능 또한 할 수 있습니다.
우리가 공부할 때 Apache 같은 웹서버까지 같이 설치하지 않고
WAS인 톰캣만 설치하여 사용하는 이유입니다.
다만 보통 구성을 할 때 웹 서버는 정적인 콘텐츠를 웹브라우저에게 전송하는 역할로 사용하며
WAS는 프로그램의 동적인 결과를 웹브라우저에게 전송하는 역할을 담당합니다.
웹 서버는 상대적으로 WAS보다 간단한 구조로 만들어져 있습니다.
WAS 앞단에 웹서버가 존재하게 된다면
만약 WAS에 오류가 생겨 재시작을 해야 할 경우 웹 서버가 해당 WAS를 이용하지 못하도록 막고 WAS를 재시작한다면
웹 애플리케이션을 사용하는 사용자는 WAS의 문제가 발생하였는지를 모르고 이용할 수 있습니다.
이러한 이유 때문에 대용량 웹 애플리케이션에서는 웹서버와 WAS를 분리하는 일이 매우 잦습니다.
웹 서버 VS WAS
WAS도 보통 자체적으로 웹 서버 기능을 내장하고 있다.
현재는 WAS가 가지고 있는 웹 서버도 정적인 콘텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다.
규모가 커질수록 웹 서버를 앞단에 WAS를 웹서버 뒷단에 두어 구조를 분리하는데. 그 목적은 장애 극복 기능인 경우가 많습니다.
우리가 사용되는 TOMCAT은 VERSION에 따라 JSP, EL, WEBSOCKET, SERVLET의 SPEC이 달라지는 차이점이 존재합니다.
'웹 프로그래밍 기초' 카테고리의 다른 글
HTML Class , Id (0) | 2020.05.06 |
---|---|
HTML Layout 태그 와 구조설계 (0) | 2020.05.05 |
Browser의 동작 (0) | 2020.05.05 |
웹 FE 웹 BE (0) | 2020.05.05 |
HTTP 프로토콜의 이해 (0) | 2020.05.05 |
댓글