Web Application Server(WAS)는 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크이다. 간단하게 이야기 하자면 Web Client(웹 브라우저)로부터 Web Server가 요청을 받으면 애플리케이션에 대한 로직을 실행하여 Web Server로 다시 반환해주는 소프트웨어이다. Web Server와 Database 사이에서 동작하는 미들웨어이다.
Web Application Server는 아래와 같은 작동 원리를 갖는다.
1. Web Server는 Web Client(웹 브라우저)로부터 받은 request를 Web Application Server에 전달한다.
2. request를 전달받은 Web Application Server는 비지니스 로직을 처리를 하고, 필요하다면 Database에서 데이터를 가져온다.
3. Web Application Server에서 비지니스 로직을 모두 수행한다면, Web Server에게 response를 전달한다.
4. response를 전달받은 Web Server는 Web Client(웹 브라우저)에게 전달한다.
위 사진을 보면서 작동 원리에 대해서 설명을 하겠다.
사실 Web Application Server만 사용해서 Web Server의 역할을 동시에 수행할 수 있다. 그러나 통상적으로 Web Server와 Web Application Server를 따로 구성해서 Server를 셋팅하는 것이 좋다.
간단한 이유는 Web Server와 Web Application Server의 차이인 정적 컨텐츠를 다루는지, 동적 컨텐츠를 다루는지다. 부하가 많은 서비스인데 정적 컨텐츠를 Web Application Server에서 다루게 된다면 불필요하기 때문에, 정적인 컨텐츠는 Web Server에 위임을 한다.
Web Application Server는 Database와 연결이 되어있고, ssl 보안 적용이 어렵다. Web Server의 대표적인 nginx의 설정파일에서 ssl 보안을 적용할 수 있다. 그래서 보안적으로 더 안전하다.
Web Server에 여러대의 Web Application Server를 연결해서 사용할 수 있다. 실제 nginx server 블록에서 여러 대의 Web Application Server를 연결할 수 있다. 그래서 로드 밸런싱 역할을 수행할 수 있다.
Web Application Server는 다양한 종류들이 있다.
Spring boot는 대표적인 서버 프레임워크이다. Spring boot는 Web Application Server를 따로 설정하지 않아도 된다. 그 이유는 tomcat 서버가 내장되어 있다. 그래서 Web Application Server에 대해서 전혀 신경을 쓰지 않아도 된다. Spring boot 산출물은 jar 파일인데, 이 안에 tomcat 서버가 내장되어 있다.
Web Application Server에 대해서 연구를 해보았다. 다음에는 DBMS에 대해서 포스팅을 할 예정이다.
참고자료