웹 서버
- 하드웨어 측면에서 웹 서버는 웹 서버의 소프트웨어와 website의 컴포넌트 파일들을 저장하는 컴퓨터이다.
웹 서버는 인터넷에 연결되어 웹에 연결된 다른 기기들이 웹 서버의 데이터를 주고 받을 수 있도록 한다. - 소프트웨어 측면에서 웹 서버는 기본적으로 웹 사용자가 어떻게 호스트 파일들에 접근하는지를 관리한다. (HTTP 요청을 받고 정적인 컨텐츠를 제공하는 컴퓨터 프로그램)
→ 웹 서버 종류에는 Apache, Nginx, IIS 등이 있다.
💡 정적 페이지와 동적 페이지
Static Pages
: 바뀌지 않는 페이지로 웹 서버는 파일 경로 이름을 받고 경로와 일치하는 file contents를 반환한다. 항상 동일한 페이지를 반환한다.
Dynamic Pages
: 인자에 따라 바뀌는 페이지로 인자의 내용에 맞게 동적인 contents를 반환한다.
브라우저가 웹 서버에서 불려진 파일을 필요로 할 때 브라우저는 HTTP를 통해 파일을 요청한다.
요청이 올바른 웹 서버에 도달했을 때 HTTP 서버는 요청된 문서를 HTTP를 이용해 보내준다.
웹 서버 기능
HTTP 프로토콜을 기반으로 클라이언트의 요청을 서비스하는 기능을 담당한다.
- 요청을 받으면 HTTP 서버는 요청받은 URL이 존재하는 파일과 매칭이 되는지 확인한다.
- 매칭된다면 웹 서버는 그 파일 내용을 브라우저에게 전달한다. 만약 매칭되지 않는다면 애플리케이션 서버는 필요한 파일을 구축한다.
- 위 둘의 과정이 불가능하다면 웹 서버는 브라우저에게 에러 메시지를 반환한다. (대부분 404 Not Found)
- 정적 콘텐츠
WAS를 거치지 않고 바로 자원을 제공한다. - 동적 콘텐츠
클라이언트 요청을 WAS로 보내고 WAS에서 처리한 결과를 클라이언트로 전달한다.
WAS
Web Application Server의 약자로 DB 조회 및 다양한 로직 처리 요구시 동적인 콘텐츠를 제공하기 위해 만들어진 애플리케이션 서버이다.
→ WAS 종류에는 Tomcat, JBoss 등이 있다.
웹 컨테이너 혹은 서블릿 컨테이너라고도 불린다.
WAS = 웹 서버 + 웹 컨테이너
✅ 웹 서버의 기능들을 구조적으로 분리하여 처리하는 역할
WAS의 주요 기능
- 프로그램 실행 환경 및 DB 접속 기능 제공
- 여러 트랜잭션 관리
- 업무 처리하는 비즈니스 로직을 수행
왜 둘을 구분하는걸까?
WAS는 DB 조회 및 다양한 로직을 처리하는 데 집중해야 한다. 따라서 단순한 정적 컨텐츠는 웹 서버에게 맡기며 기능을 분리시켜 서버 부하를 방지한다.
만약 WAS가 정적 컨텐츠까지 처리하면 부하가 커지고 동적 컨텐츠 처리가 지연되면서 수행 속도가 느려진다. (효율성이 크게 떨어진다!)
💡Apache Tomcat?
웹 서버에는 Apache가 있고 WAS 서버에는 Tomcat이 있는데 Tomcat 5.5 버전부터 정적 콘텐츠를 처리하는 기능이 추가되었다. 순수 Apache를 사용하는 것에 비해 성증적 차이가 전혀 없고, Tomcat이 Apache 기능을 포함하고 있기 때문에 Apache Tomcat이라고 부른다.
웹 서비스 아키텍처
다양한 구조를 가질 수 있다.
- 클라이언트 → 웹 서버 → DB
- 클라이언트 → WAS → DB
- 클라이언트 → 웹 서버 → WAS → DB
📢 가장 효율적인 방법은 웹 서버를 WAS 앞에 두고 필요한 WAS들을 웹 서버에 플러그인 형태로 설정하면 효율적인 분산 처리가 가능하다!
Was와 Web Server의 기능도 모두 수행하면 최적의 서버를 구성할 수 있게 된다.
- 기능을 분리하여 서버 부하 방지
- 물리적으로 분리하여 보안 강화
SSL에 대한 암복호화 처리에 Web Server를 사용 - 여러 대의 WAS를 연결 가능
특히 대용량 웹 애플리케이션의 경우 Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
→ 앞 단의 웹 서버에서 오류가 발생한 WAS를 이용하지 못하도록 한 후 WAS를 재시작하면 사용자는 오류를 느끼지 못하고 이용할 수 있다.
4. 여러 웹 애플리케이션 서비스 가능
'CS' 카테고리의 다른 글
프록시 서버(Proxy server) (0) | 2024.11.18 |
---|---|
중앙처리장치(CPU) 작동 원리 (1) | 2024.11.17 |
교착상태 (0) | 2024.11.16 |
써드 파티(3rd party)란? (0) | 2024.11.14 |
SQL - DB 트랜잭션(Transaction) (2) | 2024.11.13 |