본문 바로가기

Room 103. Front-end/Web

"웹의 동작 방식, Client & Server"

1. 웹의 등장
1990년. 팀 버너스리 경은 한 컴퓨터엔 웹 서버를, 또 다른 컴퓨터에는 웹 브라우저라는 프로그램을 만들었습니다. ​그리고 이 두 프로그램이 통신하기 위한 통신규약 HTTP와 웹 브라우저에서 어떤 정보를 표현할 수 있는 프로그래밍 언어 HTML를 개발했습니다.
이것들은 어떻게 작용하여 우리가 일상적으로 사용하는 웹 서비스들 이용할 수 있는걸까요?


2. 클라이언트 & 웹 서버
- 클라이언트
: 고객. 웹 브라우저를 통해 웹 홈페이지에 접속하는 우리의 데스크탑, 노트북 등등 입니다. HTTP 통신 규약에 맞는 주소를 통해 웹 서버에 정보를 요청(Request)합니다. 웹 브라우저에서 요청한 주소 정보는 OS, HW(LAN카드)를 지나 웹 서버에 요청됩니다.

- 웹 서버 : 클라이언트가 요청한 서비스를 응답(Response)합니다. 클라이언트로부터 요청받은 정보는 하드웨어부터 OS를 거쳐 웹 서버 프로그램에 저장된 곳으로 찾아가게 됩니다. 만약 http://pjc.serviceProgrammer/index.html 이라는 정보를 요청받았다면 default path 내 index.html 이라는 파일을 읽어 클라이언트에게 html 파일 내 코딩된 화면을 보여줍니다.


3. 개발자, 좀 더 들어가서, 웹 서버란?
그렇다면 웹 서버는 어떻게 구성되어 있는 것일까.

일단 먼저 구분짓고 갈 한 가지, 웹 서버와 웹 어플리케이션 서버(WAS)는 다릅니다.
두 가지를 구분하는 특징이라면 바로 웹 서버는 정적이고, 웹 어플리케이션 서버는 동적이라는 점입니다. 왜 정적이고 왜 동적이냐, 그것은 바로 웹 서버는 HTML 이나 기타 웹 문서들을 웹 클라이언트와 주고받으며 통신하는 것이 주 역할이고, 웹 어플리케이션 서버는 사용자 동작과 여러 환경, 상황에 따라 동적으로 다른 정보를 제공하기 때문입니다.

그럼 다시 본론으로, 그렇다면 개발자에게 좀 더 중요한 것 같이 보이는 웹 어플리케이션 서버(WAS)란 무엇일까?
개발자 입장에서 대략적으로 어떤 파트인지 정리해본다면, 웹 서버(여기선 동적인 서버가 아닌 전체를 일컫는 말)는 크게 웹 컨테이너와 비즈 컨테이너 개념으로 나뉘는 것 같습니다.(이 두 가지로 얘기하면 개발자들은 보통 다 알아들음..) 웹 컨테이너는 JSP, JSTL, AJAX 등 웹 페이지를 표현 가능한 각종 컴포넌트들을 사용하여 클라이언트가 요청한 UI 부분을 담당하는.. 느낌? 이라고 보면 될 것 같습니다. 비즈 컨테이너는 클라이언트가 화면을 통해 동작하기를 요청한 서비스(버튼 클릭 등)을 받아 로직을 처리하여 해당 요청에 맞는 데이터를 반환, 예외 처리, 또는 응답하는 파트라고 생각하면 될 것 같습니다.
웹 어플리케이션 서버(WAS)는...
솔직히 말하면 이 부분을 스터디하면서도 정확히 정리가 되지 않았습니다. 현재 다시 정리를 하며 쓰려고 해봐도 제 설명에서 구분이 애매하고, 정확한 정보를 쓰고 있지 않은 것 같아 저만 보는데도 죄책감이 들었네요. 그러므로 생각하고 있던 대로, 훗날 스프링을 깊게 공부한 후에 이 주제를 다시 한 번 세밀하게 정리할 수 있을 것 같습니다.
see u later-