간단하게 요약하자면,
웹서버란 클라이언트로부터 HTTP 요청을 받아들이고,
해당 요청에 따라 웹페이지, 이미지, 문서 등등 정적/동적 컨텐츠를 제공하는
소프트웨어 또는 하드웨어 기반의 서버이다.
http 요청이란? 네트워크 장치간 정보를 전송하도록 설계된 통신 규약이다!
웹서버의 주요 역할
1. HTTP 요청 처리
클라이언트로부터오는 HTTP 요청을 수신하고, 이를 처리한다.
2. 정적 컨텐츠 제공
정적인 컨텐츠란 ? HTML 페이지, 이미지, CSS, Javascript 파일 등이다.
정적인 컨텐츠를 클라이언트에 제공하는 것도 웹서버의 역할이다.
이러한 컨텐츠들은 서버측에 미리 생성되고, 저장되어있으며 요청에 따른 변경이 발생하지 않는다.
정적인 파일을 웹서버의 저장소에 업로드하여 클라이언트에 효율적으로 서빙하게 된다.
3. 웹 애플리케이션 프록시
프록시란? 클라이언트와 웹 서버 중간에 위치하여 대신 통신을 받아 전달하는 역할의 서버이다.
웹서버는 동적인 컨텐츠를 생성하는 백엔드 애플리케이션 서버로 요청을 프록시한다.
이때 "프록시 한다" 라는 말이 잘 와닿지 않는다.
프록시한다는 뜻은 클라이언트가 직접 웹서버나 백엔드 서버에 요청을 보내지 않고, 다른 서버를 통해 요청을 전달하는 것이다.
한마디로 클라이언트와 실제 목적지 서버간의 중간/중계 역할을 하는것이다.
한번에 전달하지 않고 굳이 경유해서 전달하는 이유가 있다.
일단 보안적인 측면에서 서버간의 직접적으로 허용하지 않는것은 요청을 중간에서 필터링하고, 감사할 수 있기 때문이다.
그리고 두번째로 로드밸런싱이다. 이는 여러 서버 사이에서 트래픽을 분산시키는 것이다. 클라이언트는 프록시 서버 하나에 요청을 보내지만 프록시 서버는 여러 서버로 요청을 분산시킨다.
세번째로 캐싱이다. 반복되는 요청을 캐싱하여 서버에 부하를 줄이고, 응답시간을 개선할 수 있다. 클라이언트는 프록시 서버로 요청하고, 프록시 서버는 캐시된 데이터를 반환할 수 있다.
마지막으로 안정성과 가용성이다. 실제 서버에 장애가 생긴다면 클라이언트에 서비스를 계속 제공할 수 없다. 그렇기에 프록시 서버는 즉시 다른 멀쩡한(문제없는) 서버로 요청을 전달해 가용성을 유지할 수 있다.
결론적으로 동적인 컨텐츠는 주로 백엔드 서버에서 실시간으로 데이터를 처리하고 생성하게 된다. 프록시 서버는 클라이언트로부터 동적 컨텐츠를 요청받고, 이 요청을 백엔드 서버로 중계하면서 백엔드 서버가 동적 컨텐츠를 생성한 뒤 그 응답을 클라이언트로 전달하게 된다.
4. 리다이렉션과 라우팅
웹서버는 요청을 받았을 때 특정 URL 로 리다이렉트 하거나 요청을 처리할 백엔드 서버로 라우팅 하는 역할을 한다.
5. 엑세스 로깅
단어가 어려운것 같지만 그냥 클라이언트 요청과 응답에 대한 로그를 작성하는 것이다. 이를 통해 보안 강화와 감사 추적, 성능 모니터링등이 가능하다.
결과적으로 웹 서버는 백엔드 서버 그리고 프론트 서버와 다른 개념이다.
백엔드 서버는 주로 웹 애플리케이션의 비즈니스 로직을 처리하고 데이터 베이스와 상호작용 및 동적인 컨텐츠를 생성한다.
ex) 사용자 인증, 계산, 데이터 처리, 데이터베이스 쿼리 등
프론트 서버는 브라우저에서 실행하는 웹 애플리 케이션의 일부를 담당한다. 또한 사용자 인터페이스(UI) 를 동적으로 업데이트하고, 백엔드 서버와 통신해 데이터를 CRUD 하는 역할을 한다.
ex) UI, 라우팅, 렌더링 등 HTML, CSS, Javascript 등으로 작성됨
웹서버는 주로 정적인 컨텐츠를 제공하고, 요청을 백엔드 서버로 프록시하며, HTTP 트래픽을 관리하고 보안 및 로깅을 처리한다.
종합적으로 프론트 서버와 백엔드 서버간의 중간 역할을 수행하며 클라이언트(유저) 와의 요청과 응답을 관리하는 역할을 한다.
'나혼자 끄적끄적' 카테고리의 다른 글
프론트엔드 서버와 백엔드 서버 (0) | 2023.09.11 |
---|