핵심 개념
- Apache
- Nginx
- HTTP
- 클라이언트 (Client)
- 서버 (Server)
웹 서버란?
- 웹 서버는 소프트웨어(Software)를 보통 말하지만, 웹 서버 소프트웨어가 동작하는 컴퓨터를 말합니다.
- 웹 서버의 가장 중요한 기능은 클라이언트(Client)가 요청하는 HTML 문서나 각종 리소스(Resource)를 전달하는 것입니다.
- 웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장된 정적(static)인 데이터이거나 동적인 결과가 될 수 있습니다.
정적인 데이터란,
이미지, HTML파일, CSS파일, JS파일 등처럼 컴퓨터에 저장된 파일들을 의미
동적인 결과란 웹 서버에 의해서 실행되는 프로그램을 통해 만들어진 결과물
웹 브라우저와 웹 서버
URL주소가 HTTP로 시작되는 이유는 HTTP를 사용한다는 의미
HTTP란 인터넷상의 데이터를 주고받기 위한 프로토콜(규약,규칙)
클라이언트와 서버도 미리 정해둔 규칙을 가지고 통신을 해야만 제대로 통신가능
예시
1. 클라이언트는 서버에 HTML 문서를 요청
2. 웹 서버는 사용자가 요청한 HTML문서를 웹 브라우저에게 전달
3. 웹 브라우저는 웹 서버로부터 전송받은 HTML문서를 읽어들인 후 해석
HTML문서를 보여주기 위해 필요한 img,CSS,JS 같은 리소스들에 대해 URL을 추출하며 동시에 웹 서버에 여러 개의 리소스를 요청하고 웹 서버는 이 여러 개의 요청을 받아들인 뒤 하나로 합쳐서 그 결과를 브라우저에 전송
웹 서버 소프트웨어의 종류
- 가장 많이 사용하는 웹 서버는 Apache, Nginx, Microsoft IIS
- Apache웹 서버는 Apache Software Foundation에서 개발한 웹서버로 오픈소스 소프트웨어(Open-source Software)이며, 거의 대부분 운영체제에서 설치 및 사용을 할 수 있습니다.
- Nginx는 차세대 웹서버로 불리며 더 적은 자원으로 더 빠르게 데이터를 서비스하는 것을 목적으로 만들어진 서버이며 Apache웹 서버와 마찬가지로 오픈소스 소프트웨어입니다.
WAS (Web Application Server)
핵심 개념
- WAS (Web Application Server)
- Apache Tomcat
클라이언트/서버 구조
클라이언트(Client)는 서비스(Service)를 제공하는 서버(Server)에게 정보를 요청하여 응답 받은 결과를 사용합니다.
클라이언트/서버 구조
DBMS (DataBase Management System) _ DB관리하는 system
다수의 사용자가 데이터베이스 내의 데이터에 접근할 수 있도록 해주는 소프트웨어입니다.
(대표적으로 MySQL, MariaDB, Oracle, PostgreSQL 등)
DBMS (DataBase Management System)
미들웨어 (MiddleWare)
클라이언트 쪽에 비즈니스 로직이 많을 경우, 클라이언트 관리(배포 등)로 인해 비용이 많이 발생하는 문제가 있습니다.
비즈니스 로직을 클라이언트와 DBMS사이의 미들웨어 서버에서 동작하도록 함으로써 클라이언트는 입력과 출력만 담당하도록 합니다.
데이터 조작은 미들웨어가 하고 그 결과를 클라이언트에게 전송하면 클라이언트는 그 결과를 화면에 보여줌.
클라이언트는 복잡한 로직이 사라지고 단순히 화면에 결과만 보여주면 되기에 사용자로부터 입력만받아서 미들웨어에게만 보내면 되는역할만 하면되기에 크기가 작아짐.
프로그램 로직이 변경되도 모든 클라이언트를 다시 배포할 필요없이 미들웨어만 변경하면 된다.
미들웨어(MiddleWare)
WAS (Web Application Server)
WAS는 일종의 미들웨어로 웹 클라이언트(보통 웹 브라우저)의 요청 중 웹 애플리케이션이 동작하도록 지원하는 목적을 가집니다.
웹이 정적인 기능을 넘어 동적인 기능이 필요.
동적인 기능은 프로그래밍기능으로 구현가능
웹 서버에 프로그래밍 기능이 들어가는 것은 CGI
웹이 점점 복잡해지게되면서 더 복잡한 프로그래밍 기능을 요구하게 됨
이렇게 복잡한 기능은 DBMS와 연관된 경우가 많았다
미들웨어가 필요해짐. 이를 WAS
WAS의 기능
1. 프로그램 실행 환경, DB접속 기능 제공
2. 여러개의 트랜잭션(논리적 작업단위) 관리
3. 비즈니스 로직 수행
4. 웹 서버의 기능
아파치같은 웹서버를 설치하지 않고 톰캣이란 WAS만 설치해서 사용
WAS (Web Application Server)
웹 서버 vs WAS
- WAS도 보통 자체적으로 웹 서버 기능을 내장하고 있습니다.
- 현재는 WAS가 가지고 있는 웹 서버도 정적인 콘텐츠를 처리하는 데 있어서 성능상 큰 차이가 없습니다.
- 규모가 커질수록 웹 서버와 WAS를 분리합니다.
- 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 웹서버와 WAS를 대체로 분리합니다.
웹 서버는 보통 정적인 콘텐츠를 웹 브라우저에게 전송하는 역할
WAS는 프로그램의 동적인 결과를 웹 브라우에게 전송하는 역할
프로그램이 동작해서 얻은 결과를 보통 동적인 콘텐츠라 한다.
웹 서버없이 WAS가 제공한 웹 서버의 기능으로도 정적,동적인 컨텐츠를 모두 제공가능
WAS초창기에는 WAS의 성능이 부실하여 Apache와 함께 설치했으나 지금은 WAS만으로 충분하다.
그럼에도 웹 서버가 WAS 앞단에 있으면 좋은 이유!
웹 서버는 WAS보다 간단한 구조로 설정.
대용량웹앱일때는 서버가 여러대인경우가 많다.
WAS자체에 문제가 발생할 경우 WAS재시작.
문제가 있는 WAS재시작할 때, 앞단의 웹서버에서 먼저 해당 WAS이용못하도록 막고 재시작하면 해당 웹앱 유저는 WAS 문제 발생 유무를 모르고 이용함. 이를 장애 극복 기능이라고 한다.
대용량 웹앱에선 무중단으로 운영하기위해 상당히 중요한 기능!