웹 서버와 WAS(Web Application Server)
웹 서버(Web Server)
웹 서버란, 웹 상에서 정보를 제공하는 서버로 인터넷을 통해 데이터를 사용자에게 제공하는 역할을한다.
웹 서버는 HTTP 기반으로 동작하며, 정적 리소스(HTML, CSS, JavaScript, file, 이미지 등)를 빠르고 효율적으로 제공하는 데 최적화되어 있다. 주로 캐싱, 로드 밸런싱, 정적 파일의 압축 및 전송 등의 기능을 포함한다.
또한, 웹서버는 클라이언트와의 첫 번째 연결 지점으로서 보안 측면에서도 중요한 역할을 한다. SSL/TLS를 통한 암호화된 데이터 전송이 이루어지는 HTTPS 연결을 설정하고 관리하는 역할을 한다.
대표적인 웹 서버 소프트웨어로는 Apache, Nginx 등이 있다.
[캐싱과 로드밸런싱]
*참고* | 캐싱(Caching) | 로드 밸런싱(Load Balancing) |
내용 | 캐싱은 자주 사용되는 데이터를 미리 저장해두고, 사용자가 빠르게 접근할 수 있도록 하는 기술이다. 웹에서 캐싱의 목적은 웹 페이지나 파일을 빠르게 로드해서 사용자 경험을 개선하고, 서버의 부하를 줄이는 것이다. |
로드 밸런싱이란 여러 서버에 걸쳐 네트워크 트래픽이나 작업 부하를 분산시키는 과정이다. 로드 밸런싱의 목적은 단일 서버에 과부하가 걸리는 것을 방지하고, 시스템의 가용성과 응답성을 높이는 것이다. |
작동 방식 | - 웹 서버 또는 브라우저에서 자주 요청되는 데이터( 웹페이지, 이미지, 스타일시트 등)를 로컬 저장소에 저장 - 사용자가 동일한 리소스를 "재요청"할 때, 서버는 이미 저장된 데이터를 빠르게 제공함으로써 응답시간을 단축 - 이 과정을 통해 네트워크 트래픽을 줄이고, 서버 부하 감소 및 시스템 전반적인 효율성을 높이는 역할을한다. |
- 로드 밸런서는 사용자로부터 오는 요청을 여러 서버에 고르게 분산시킨다. - 즉, 각 서버에 고르게 부하가 분산되도록 해서 어떠한 서버도 과부하에 빠지지 않도록 한다. |
SSL/TLS와 HTTPS
*참고* | 내용 |
SSL/TLS | SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 데이터를 안전하게 전송하기 위해 인터넷 통신에 사용되는 표준 보안 기술 |
HTTPS | HTTP에 SSL/TLS 보안 프로토콜을 적용한 것으로, 웹 통신에서 보안을 강화한 버전 |
웹 서버에서의 역할 | 암호화된 연결 설정 : 사용자가 웹 서버에 접속하면, 서버는 SSL/TLS 암호화를 사용해서 안전한 연결을 설정한다. 서버에서 사용자에게 자신의 공개키와 함께 SSL 인증서를 제공한다. 인증서 관리: 웹 서버는 유효한 SSL 인증서를 관리하고 이를 사용자에게 제공하여 서버의 신뢰성을 증명한다. 여기서 인증서는 신뢰할 수 있는 인증 기관에 의해 발행 데이터 암호화: 연결이 설정되면, 서버와 클라이언트 간 교환되는 모든 데이터는 암호화된 형식으로 이루어진다. |
WAS(Web Application Server)
WAS는 웹 애플리케이션을 실행시키고 관리하는 서버로 웹 기반 서비스를 제공하는 데 중요한 역할을한다. WAS는 정적 리소스를 제공하는 웹 서버의 기능도 포함하며, 사용자 요청에 따라 동적인 콘텐츠 생성이나 DB와의 상호작용 등의 로직을 처리한다.
대부분의 현대적인 웹 애플리케이션은 MVC(Model, View, Controller)아키텍처를 따르고, 이 중에서 특히 Controller와 Model 부분을 WAS가 담당한다.
대표적인 WAS 소프트웨어로 Tomcat, UnderTow 등이 있다.
앞서 서술한대로, WAS에서 웹 서버의 기능도 포함하기 때문에 WAS와 DB만으로도 충분히 웹 시스템 구성이 가능하지만, 보다 효율적인 시스템을 위해 웹 서버와 함께 구축된다.
웹 서버와 WAS의 상호작용
웹 서버없이 WAS만으로 웹 시스템을 구축하는 경우 WAS가 너무 많은 역할을 담당하기 때문에 서버 과부하가 우려된다. 또한, 애플리케이션 로직이 정적 리소스 때문에 원활한 수행이 어려울 수도 있으며, WAS에 장애가 발생할 경우 오류 화면도 노출이 불가능하다.
[웹 서버와 WAS를 활용한 시스템 구축]
따라서, 웹 시스템을 구성할 때는 웹 서버와 WAS를 적절히 활용하는 것이 효율적인 웹 서비스를 제공할 수 있다. 즉, 정적 리소스는 웹 서버에서 처리하고, 동적 콘텐츠나 중요한 애플리케이션 로직 처리 전담은 WAS가 처리하도록 분산시키는 것이다.
이와 같이, 웹 서버와 WAS를 분리함으로써, 각각의 서버를 특정 작업에 최적화할 수 있으며, 필요에 따라 독립적으로 확장(많이 사용되는 리소스(정적 또는 동적)에 따라 웹 서버 또는 WAS를 분리시켜서 해당하는 부분만 증설)하거나 유지보수할 수 있다.
또한, WAS는 애플리케이션 로직이 동작하는 영역이기 떄문에 서버가 잘 다운될 수 있으므로, WAS나 DB에 장애가 있을 경우 웹 서버에서 클라이언트에게 오류 화면을 제공할 수 있다는 장점이있다.