web server는 무엇인가?
- 하드웨어적인 측면: 웹 서버 소프트웨어와 웹 사이트의 구성요소 파일(HTML,이미지,css 스타일시트 및 javascript 파일)을 저장하는 컴퓨터. 웹 서버는 인터넷에 연결되어 웹에 연결된 다른 장치와의 물리적 데이터 교환을 지원
- 소프트웨어적인 측면: 웹 사용자가 호스팅된 파일에 액세스하는 방법을 제어하는 여러 부분. 최소한 HTTP 서버이다. HTTP 서버는 URL과 HTTP를 이해하는 소프트웨어. HTTP서버는 저장하는 웹사이트의 도메인 이름을 통해 액세스할 수 있으며 이러한 호스팅된 웹사이트의 콘텐츠를 최종 사용자의 장치로 전달.
정적 web 서버와 동적 web 서버
- 정적 web 서버: 컴퓨터와 HTTP 서버로 구성된다. 서버가 호스팅된 파일을 있는 그대로 브라우저에 보내기 때문에 이를 "정적"이라고 한다.
- 동적 web 서버: 정적 web 서버 + 추가 소프트웨어로 구성. application 서버가 HTTP 서버를 통해 브라우저에 콘텐츠를 보내기 전에 호스팅된 파일을 업데이트 하기 때문에 이를 "동적"이라고 한다. 예를 들어, 브라우저에 표시되는 최종 웹 페이지를 생성하기 위해 애플리케이션 서버는 데이터베이스의 콘텐츠로 HTML템플릿을 채울 수 있다.
호스팅 파일
웹 서버는 웹사이트의 파일, 이미지, css 스타일시트, javascript 파일, 글꼴 및 비디오를 포함한 모든 HTML 문서 및 관련 자산을 저장해야 한다. 기술적으로 모든 파일을 자신의 컴퓨터에 호스팅할 수 있지만 다음과 같은 이유로 전용 웹 서버에 모든 파일을 저장하는 것이 더 편리하다.
- 전용 웹 서버는 일반적으로 더 많이 사용 가능하다.
- 다운타임및 시스템 문제를 제외하고 전용 웹 서버는 항상 인터넷에 연결되어 있다.
- 전용 웹 서버는 항상 동일한 IP주소를 가질 수 있다.
- 전용 웹 서버는 일반적으로 타사에서 유지 관리
HTTP를 통한 통신
웹 서버는 HTTP를 지원한다.
- 일반적으로 클라이언트가 요청하면 서버가 응답한다. 서버는 요청되기 전에 서버 푸시라는 메커니즘을 통해 클라이언트 캐시를 데이터로 채울 수도 있다.
- HTTP를 통해 파일을 요청할 때 클라이언트는 파일의 URL을 제공해야 한다.
- 웹 서버는 최소한 오류 메시지와 함께 모든 HTTP 요청에 응답해야 한다.
웹서버에서 HTTP 서버는 들어오는 요청을 처리하고 응답합니다.
- 요청을 받으면 HTTP 서버는 먼저 요청된 URL이 기존 파일과 일치하는지 확인
- 그렇다면 웹 서버는 파일 내용을 브라우저로 다시 보낸다. 그렇지 않은 경우 application 서버는 필요한 파일을 빌드
- 두 프로세스 모두 가능하지 않은 경우 웹 서버는 브라우저에 오류 메시지를 반환하며 가장 일반적으로 404 not found를 보내준다.
웹서버 종류
Apache
- 오픈소스이다
- 다양한 모듈을 제공한다
- 강력한 커뮤니티로 방대한 자료가 있다
- 확장성이 좋다
- 보안 수준이 높다
- 많은 기능들로 인해 느린 측면이 있다
- 오버헤드가 발생한다.
- 아파치는 요청이 들어오면 프로세스를 새로 만들기 때문에 네트워크 소켓 수가 1만개가 넘어가면 하드웨어 성능이 아무리 좋아도 성능이 급격하게 떨어지는 C10K 문제가 발생한다.
Nginx
- 오픈소스이다.
- Apache에 비해 가볍다
- 프록시 기능이 뛰어나다.
- 커뮤니티 자료가 부족하다
- 확잘 모듈이 Apache에 비해 적다
IIS
- microsoft에서 지원한다.
- ASP, MSSQL과 같은 다른 Microsoft 서비스와 쉽게 통합할 수 있다
- 간편한 GUI 지원
- 가격이 비싸다
- Windows Server에서만 동작한다
- 더디고 느리다
웹서버와 WAS
웹 서버 분리의 장점
- 서버 부하 방지: WAS는 기본적으로 동적 컨텐츠 제공을 위해 존재하는 서버이다. 정적 컨텐츠 요청까지 처리하는 경우 부하가 늘어 동적 컨텐츠 처리가 지연되고 수행 속도가 느려진다
- 물리적으로 분리하여 보안 강화: 웹 서버와 WAS를 물리적으로 분리하고 그 사이에 방화벽을 두어 보안을 강화한다. SSL를 통해 데이터를 패킷화 하고 암복호화 하여 전달하기 때문에 보안이 강화된다.
- 여러 대의 WAS를 연결 가능: 로드 밸런싱을 위해서 웹 서버를 사용한다.
- 접근 허용 IP 관리, 2대 이상의 서버에서의 세션 관리 등도 웹 서버를 분리해서 웹 서버를 통해 처리하면 효율적이다.