이전 프로젝트에서 썼던 Spring-JSP 구조와 지금 배우는 Node.js-React 구조에 대해서 이해가 안 가는 점이 있어서 개발자 선생님께 여쭤보았다.
Y : Spring + Jsp 프로젝트에서는 서버로 아파치 톰캣을 쓰는데, node.js가 들어가면 아파치 톰캣을 대체하고 JSP 대신 React 같은 걸로 화면을 띄우는 건가요?
답글 정리 :
Web Server
WAS (Web Application Server)
의 차이를 찾아보면 좋을것 같습니다
위의 예시에서는 Apache가 Web Server 이고 Spring 이 WAS 입니다. WAS를 만드는 도구입니다.
Front 를 구현하기위해 JSP를 쓰거나 React를 쓸 수 있습니다.
다만, 이 둘은 다른 개념인데 JSP 는 Server side rendering을 하고 React 는 Single page application이어서 동작방식이 달라요, 다만 사용자 입장에서 그리고 Client / Server 로 나누는 CS구조에서 볼때 Clinet 에 해당합니다.
NodeJS 를 서버로 쓰게되면 Spring을 대체합니다. WAS에 해당하죠. 그럼 여기서 Tomcat이 뭔가를 봐야하는데 Tomcat 은 WAS에 해당합니다.
그럼 Spring도 WAS고 Tomcat도 WAS인데? 하는 의문이 생길 수 있는데, Spring으로 구현한 WAS를 Tomcat이 실행시켜주는거라고 생각하시면 좀 편할것 같습니다.
그래서 구현단에서는 WAS를 Spring과 Tomcat으로 설명하곤해서 위에 저렇게 썼네요. 엄밀히 말하면 Spring은 WAS를 만드는 도구입니다.
node JS 는 단독으로 실행 기능과 라이브러리 기능을 모두 탑재하고 있기때문에 Tomcat(JAR) 와 같은 효과를 내는겁니다.
Web Server를 두는 이유는 서버에서의 효율과 정적파일의 처리를 위해서 사용합니다. 따라서 nodejs로 서버를 켜도 Apache를 사용할 수 있습니다.
다만 Apache는 설정이 복잡하고 사용하지 않는 쓸데없는 기능이 node.js 입장에선 많기때문에 일반적으로 경량화 된 Web Server인 nginx(엔진엑스라고 보통 읽음) 와 같이 씁니다.
검색해서 자세히 알아보아야 할 것 :
Web server
Web Application Server(WAS)
Tomcat
Apache
nginx