가장 당연한 개념이고 전부터 수업 때에 많이 들었던 얘기지만 오늘은 TIL 첫 날이니 간단하고 가장 중요한 웹의 동작 원리에 대해 정리해보겠다.
가장 간단하게 정리해보겠다.
'클라이언트가 서버에 요청을 보내면 서버는 요청에 대한 응답을 보낸다.'
물론 클라이언트와 서버만 존재하는 것은 아니다.
(출처:How Web Works)
웹 클라이언트는 주로 일반적인 사용자를 말한다. 웹에 접근하는 프로그램을 말하는데, 대부분의 웹은 브라우저 내에서 실행되기 때문에 chrome이나 파이어폭스같은 브라우저를 말한다.
즉 결과물을 출력하는 역할을 한다.
앱/웹페이지(사이트) 를 저장하는 공간이다.
클라이언트에서 요청한 HTTP메시지를 읽고 이 요청에 해당하는 응답, 즉 HTML문서나 각종 리소스들을 가져와 클라이언트에게 보내주는 것이다.
웹 서버에는 종류가 있는데 대표적인 것으론 많이 사용하는 Apache(아파치)웹 서버가 있고 NginX도 웹서버의 한 종류이다.
위 설명만 보면 웹 클라이언트와 서버만 있다면 웹은 잘 돌아갈 것만 같은데 WAS란 무엇일까.
브라우저와 DBMS(데이터 베이스 관리 시스템) 사이에서 동작하는 미들웨어이다.
클라이언트가 10명 정도라고 생각해보자. 수가 적으니 웹서버와 DB만으로도 서버의 업무처리가 충분히 가능할 것이다.
하지만 클라이언트가 만약 1000명이 넘어간다면? 혹은 100만명.. 1억명으로 그 수가 방대해진다면 어떨까?
아마 서버는 과부하가 걸릴 것이다. WAS는 서버를 도와주는 조력자다.
클라이언트에게 요청을 받은 서버는 그 요청에 필요한 페이지의 로직이나 DB연동을 위해 WAS에게 처리를 요청한다. 즉 WAS가 중개역할을 하는 것이다. 웹서버의 할 일을 분배하여 처리하기 때문에 서버의 부담을 줄일 수 있고 (특히 동적 컨텐츠를) 빠른 속도로 처리할 수 있다.
WAS의 종류에는 아파치 톰캣(Apache Tomcat), 레진(Resin)등이 있다.
- 프로그램 실행 환경과 데이터 베이스 접속 기능을 제공
- 여러 개의 트랙잭션을 관리
- 비즈니스 로직을 수행
- 웹 서버 제공
마지막으로 DB를 살펴보겠다. DB는 정보들을 저장하는 저장소이다.
WAS에서 요청을 보내면 그 요청에 맞는 정보들을 보내준다.
더 자세히 설명해보자면 WAS에서 로직을 수행하다가 DB접근이 필요하면 SQL질의를 통해 데이터를 요청하는 것이다.
(** 웹(WWW)의 동작 원리, How Web Works 두 사이트의 도움을 받아 작성하였습니다.)