1. 웹 서버(Web Server)
웹 서버는 클라이언트의 HTTP 요청을 받아들이고, 그에 따라 정적인 자료를 반환하거나 동적인 자료가 필요한 경우 WAS에게 동적인 자료가 필요하다는 HTTP 요청을 합니다. WAS가 HTTP 응답을 하면 웹 서버는 WAS가 반환한 동적인 자료와 웹 서버 자체의 정적인 자료를 결합하여 최종 응답을 클라이언트에게 반환합니다. 만약 웹 사이트가 정적인 자료만 다룬다면, 단독적인 웹 서버만 사용할 수도 있습니다. 정적인 자료는 웹 서버에 미리 저장되어 있고, 요청 시 변경되지 않는 자료입니다. 주로 HTML, CSS, JavaScript, 이미지 파일 등이 있습니다.
2. WAS(Web Application Server)
초기에는 단순한 정적인 웹 페이지만을 제공하는 웹 서버로도 충분했지만, 시대의 발전에 따라 비지니스 로직 처리, DB와의 상호작용, 세션 관리, 보안 등의 다양한 기능이 필요해졌습니다. 그래서 WAS라는 개념이 등장했습니다. WAS는 HTTP 요청을 받아들이고, 그에 따라 비즈니스 로직을 처리하고, 이를 통해 DB 또는 외부 API 등과 같은 소스와 상호작용하여 동적인 자료를 생성 또는 반환하는 역할을 합니다. 동적인 자료는 주로 요청마다 생성되거나 데이터베이스 또는 외부 소스와 상호작용하여 생성되는 자료입니다. 예를 들어 사용자가 로그인한 정보, 게시판의 내용, 동적으로 생성된 웹 페이지 내용 등이 동적인 자료에 해당합니다.
WAS에게 요청을 보내는 주체는 주로 웹 서버입니다.
3. 현대의 웹 개발 트렌드
WAS는 웹 서버의 기능인 HTTP 요청과 응답 또한 처리할 수 있습니다. 하지만 현대의 웹 개발 트렌드는 앞 단에 웹 서버를 배치하고 뒷 단에 WAS를 배치합니다. 웹 서버가 클라이언트의 요청을 받아들이고, 정적인 자료는 웹 서버에서 처리하며, 동적인 자료가 필요한 경우에는 웹 서버가 뒷 단의 WAS에게 동적인 자료가 필요하다는 HTTP 요청을 보냅니다. WAS가 요청을 처리하고 결과를 반환하면 웹 서버는 WAS가 반환한 자료를 웹 서버의 자료와 결합하여 클라이언트에게 최종 응답으로 반환하는 방식입니다. 이렇게 하는 이유는 WAS가 동적인 자료까지 처리하면 WAS의 부하가 늘고 불필요한 자원이 소모되기 때문입니다. 서버의 성능과 안전성을 향상 시키기 위해 웹 서버는 웹 서버의 역할만, WAS는 WAS의 역할만 집중하도록 하는 게 좋습니다.
4. 로드 밸런싱(Load Balancing)
로드 밸런싱은 여러 대의 서버를 이용하여 트래픽을 분산시키는 기술입니다.
로드 밸런서(Load balancer)란? 로드 밸런서는 로드 밸런싱을 수행하는 장치나 소프트웨어를 가리킵니다.