오늘 우연히 개발환경과 시스템 운영 환경이 다르다는 것을 알게 되었다.
당연히, 모든 테스트 서버 환경은 개발 환경과 동일할 것이고 그게 맞다고 생각하였는데 반드시 그렇지만은 않았다.
여쭤보니 라이센스 비용, 관리 비용의 절감 측면에서 개발 환경과 실제 운영 환경이 다를 수 있고 특히 운영환경에 비해 테스트 환경의 사양이 조금 떨어질 수 있다는 말씀도 해주셨다.
현재 개발환경은 nginx와 apache이지만 운영계는 tmax의 jeus와 webtob이다.
WAS와 Web Server의 차이점도 이왕 공부한 김에 정리하고자 글을 남긴다.
찾아보니까 안정성과 오랜 기간 납품해온 경험 등으로 tmax사의 jeus와 webtob가 하나의 궁합으로 많이 찾는 제품이라고 한다.
웹서버인 nginx나 apache 중에서 nginx보다는 apache를 더 범용적으로 사용하는 것 같고, 금융권에서도 webtob와 apache를 웹서버로 많이 사용한다고 한다.
알아보다가 새롭게 알게된 사실은 WAS는 하나의 솔루션, Jave EE(Enterprise Edition)의 목적인 서버 구축을 위해 필요한 Servlet, JSP, JDBC 등의 요구조건을 만족하기 위해 WAS라는 "솔루션"이 도입이 되는 것이다.
이 WAS는 익히 알고 있는 tomcat도 있지만, 금융권에서는 안정적이고 상용적인 제품으로 WebLogic(Oracle), JEUS(tmax), WebSphere(IBM)을 사용한다.
여기서 나는 Apache와 Nginx was의 차이점을 더 알아보았다.
기본적으로 웹서버는 정적인 리소스를 사용자에게 전달한다.
그런데 보통 페이지에는 정적인 리소스, 즉 흔히 알고 있는 사진이나 그림말고도 DB의 데이터를 WAS를 통해 가져와서 바인딩하여 보여주기까지 한다.
사진과 그림, 데이터까지 모두 표시해야 하므로 최종적으로 사용자에게 전달될 리소스는 웹서버에 따라 처리방법이나 전달방법 등이 다를 수 있다.
Apache
스레드/프로세스 기반의 구조, http 요청이 올때마다 스레드나 프로세스를 새로 만들었는데 이를 개선하기 위해 각 요청을 대비하여 미리 프로세스를 만들어 놓는 방식을 채용한다. Process Driven 방식, 하지만 생성 프로세스들의 CPU 컨텍스트 스위칭(프로세스 교체)이나 대기 프로세스의 과부하 등으로 C10K 문제 등이 발생하였다. 이를 개선하기 위해 나온 웹서버가 바로 Nginx.
Event Driven, 프로세스를 미리 쌓아놓는 것이 아닌 요청을 Event로 생각하고 이것이 발생할때마다 비동기 처리 기반으로 요청을 처리하되, 이를 working queue에 담아 처리한다. nginx는 working queue의 존재로 인해, 특정 요청에 대한 처리가 길 경우 응답지연, 프로세스 종료로 인한 커넥션 종료 등의 문제가 많다고 한다.
그러나 nignx가 가벼움, 고성능, 대용량 트래픽 처리에 더 적합한 디자인을 가지고 있고 추가 구성을 허용하지 않아 성능적으로 유리할 수 있어 현재 많이 사용하고 있는 추세라고 한다.
금융권 WAS/웹서버 - https://brunch.co.kr/@ziyocode/3
apache , nginx