웹 서버란?
소프트웨어 또는 웹 서버 소프트웨어가 동작하는 컴퓨터
웹 서버의 기능
웹 서버의 가장 중요한 기능은 클라이언트(Client)가 요청하는 HTML 문서나 각종 리소스(Resource)를 전달하는 것이다.
웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장된 정적(static)인 데이터이거나 동적인 결과가 될 수 있다.
정적 데이터 : 이미지, HTML, CSS, Javascript 파일
동적인 결과 : 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물
웹 브라우저와 웹 서버간에 어떤 통신이 일어나는가
- 웹 브라우저는 www.naver.com이라는 웹서버에 접속
- 해당 주소에서 기본으로 보이는 HTML 문서를 요청
- 웹 서버는 사용자가 요청한 HTML 문서를 웹 브라우저에게 전달
- 웹 브라우저는 웹 서버로부터 전송받은 HTML 문서를 읽어들인 후에 해석
- HTML 문서를 알맞게 보여주기 위해 필요한 이미지, CSS, Javascript와 같은 이런 리소스들의 URL 추출
- 웹 서버에게 동시에 여러개의 리소스를 요청
- 웹 서버는 동시에 요청한 여러 개의 요청을 받아들여서 그 결과를 브라우저에게 전송
- 웹 브라우저는 아까 해석했던 HTML 문서와 읽어들인 여러개의 응답을 하나로 합쳐서 그 결과를 화면에 보이게 한다. (랜더링)
웹 서버의 종류
대표적인 웹 서버 : Apache, Nginx, Microsoft IIS, 구글 웹 서버
Apache웹 서버는 Apache Software Foundation에서 개발한 웹서버로 오픈소스 소프트웨어(Open-source Software)이며, 거의 대부분 운영체제에서 설치 및 사용을 할 수 있다.
Nginx는 차세대 웹서버로 불리며 더 적은 자원으로 더 빠르게 데이터를 서비스하는 것을 목적으로 만들어진 서버이며 Apache웹 서버와 마찬가지로 오픈소스 소프트웨어다.
● WAS
클라이언트/서버 구조
서버 : 서비스를 제공하는 것
클라이언트 : 서비스를 요청해서 그 결과를 보여주는 것
클라이언트(Client)는 서비스(Service)를 제공하는 서버(Server)에게 정보를 요청하여 응답 받은 결과를 사용한다.
웹 브라우저와 웹 서버의 관계가 대표적인 클라이언트/서버 관계다.
DBMS (Database Management System)
데이터베이스를 관리하는 시스템
다수의 사용자가 데이터베이스 내의 데이터에 접근할 수 있도록 해주는 소프트웨어.
대표적으로 MySQL, MariaDB, Oracle, PostgreSQL 등이 있다.
DBMS는 보통 서버 형태로 서비스르 제공하기 때문에 DBMS에 접속해서 동작하는 클라이언트 프로그램이 많아졌다.
이러한 방식의 문제점
- 클라이언트의 로직이 많아진다.
- 클라이언트 프로그램의 크기가 커진다.
- 프로그램 로직이 변경되면 매번 클라이언트가 배포되어야 한다.
- 대부분의 로직이 클라이언트에 포함되어 배포되기 때문에 보안이 나쁘다.
미들웨어 (MiddleWare)
클라이언트 쪽에 비즈니스 로직이 많을 경우, 클라이언트 관리(배포 등)로 인해 비용이 많이 발생하는 문제가 있다.
비즈니스 로직을 클라이언트와 DBMS사이의 미들웨어 서버에서 동작하도록 함으로써 클라이언트는 입력과 출력만 담당하도록 한다.
클라이언트는 단순히 요청만 미들웨어에게 보내고, 미들웨어에서는 대부분의 로직을 수행한다. 그리고 데이터를 조작할 일이 있으면 DBMS에게 요청한다.
클라이언트의 크기가 매우 작아지고, 프로그램 로직이 변경되어도 클라이언트를 다시 배포할 필요가 없이 미들웨어만 변경하면 된다.
WAS (Web Application Server)
WAS는 일종의 미들웨어로 웹 클라이언트(보통 웹 브라우저)의 요청 중 웹 애플리케이션이 동작하도록 지원하는 목적을 가진다.
처음에는 웹이 정적인 데이터만 보여주었다. 웹이 널리 사용되면서 웹에서 데이터를 입력하고 조회하는 등의 동적인 기능을 요구하게 되었다. 웹이 점점 복잡한 기능을 요구하게 되자 브라우저와 DBMS 사이에서 동작하는 미들웨어가 필요해졌다.
중요한 기본기능 3가지
- 프로그램 실행환경과 데이터베이스 접속기능을 제공한다.
- 여러개의 트랜잭션을 관리한다.
- 업무를 처리하는 비즈니스 로직을 수행한다.
웹 서버의 기능도 기본적으로 제공한다. 따로 웹서버의 설치 없이 톰캣이라는 WAS 하나 설치하고 이용이 가능하다.
웹 서버 vs WAS
- WAS도 보통 자체적으로 웹 서버 기능을 내장하고 있다.
- 웹 서버는 보통 정적인 콘텐츠를 웹 브라우저에게 전송하는 역할을 한다.
- WAS는 프로그램의 동적인 결과를 웹 브라우저에게 전송하는 역할을 담당한다.
- 현재는 WAS가 가지고 있는 웹 서버도 정적인 콘텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다.
- 규모가 커질수록 웹 서버와 WAS를 분리한다.
- 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 웹서버와 WAS를 대체로 분리한다.
글 쓰고 임시저장 해놨었는데 다른 글 발행하니까 임시저장한게 싹 날라갔다. 젠장... 티스토리는 뭐 이따구야...
전혀 다른 글인데 임시저장한게 싹다 날라가는 게 말이되나.. 신에디터 나온지도 한참 됐는데 고칠 생각이 없구먼..망할
암튼 그래서 날려먹고 다시 다 썼다. 그래서 좀 누락된 부분이 있을 수 있다.
이번에는 웹 서버와 WAS에 대해 알아보았다. 웹 서버는 무엇인지, 실제로 어떻게 동작하는지, 주요 용어 및 의미는 무엇인지. 특히 몇몇 헷갈리는 개념들이 있었는데 이 강의를 통해 확실히 알 수 있어서 좋았다.
나는 지금까지 Apache 웹 서버와 Express 미들웨어만 써봤다.
이번에 톰캣도 한번 써보겠구나~
'공부 > [부스트코스] 웹 프로그래밍' 카테고리의 다른 글
[부스트코스] 웹 프로그래밍 - Servlet (0) | 2020.02.21 |
---|---|
[부스트코스] 웹 프로그래밍 - HTML (0) | 2020.02.10 |
[부스트코스] 웹 프로그래밍 - browser에서의 웹개발 (0) | 2020.02.03 |
[부스트코스] 웹 프로그래밍 - browser의 동작 (0) | 2020.02.01 |
[부스트코스] 웹 Front-End와 웹 Back-End (0) | 2020.01.30 |