아파치(Apache), 톰캣(Tomcat), 엔진엑스(Nginx) 차이

Yuri Lee·2022년 3월 16일
0

Intro

최근 프론트 엔드 서버를 운영 버전으로 배포하는 과정에서 기본적인 서버 관련 지식을 잊어버려서 상기를 위해 해당 개념을 정리해보려고 한다. 분명히 예전에 공부하고 외워놓았던 개념이였는데 반복하지 않으면 잊어버리는 건 쉬운 일 같다. 😥

아파치(Apache)

아파치는 여러가지 프로젝트를 통해 오픈소스를 만들어내는 소프트웨어 단체 이름이다. 따라서 아파치 서버란 이 단체에서 만든 http 웹서버를 의미한다. 즉 아파치 서버는 http요청을 처리할 수 있다. 클라이언트가 GET, POST, DELETE 같은 메소드를 요청하면 그에 대한 결과값을 돌려준다.

톰캣(Tomcat)

톰캣은 WAS(Web Application Server)입니다. 얼핏생각하면 아파치 서버와 같다고 생각할 수도 있지만, 둘은 목적이 서로 다르다. 아파치 웹 서버는 정적인 데이터를 처리하는 서버이고, WAS는 동적 데이터를 처리하는 서버이다. 즉, WAS는 DB와 연결되어 데이터를 주고 받는 것이다. 웹사이트 주소를 보다보면 html이 아닌 http://~/asdf.jsp 라는 주소를 볼 때가 있는데 웹 애플리케이션 서버는 이 JSP(Java Server Page)를 처리하는 프로그램이다. 즉 Java로 만들어진 프로그램을 웹서버에서 돌려서 결과값을 클라이언트로 돌려준다. 클라이언트 - 웹서버 - WAS - DB. 따라서 아파치와 톰캣은 목적이 다르기 때문에 둘을 연동하면 더욱 효과적이다.

엔진엑스(Nginx)

엔진엑스는 아파치와 같은 웹서버입니다. 엔진엑스는 아파치의 단점을 보완하기 위해 만든 프로그램이다. 아파치는 C10K Problem이라고 해서 하나의 웹서버에 10,000개의 클라이언트 접속을 커버할 수 있는 문제를 해결하기 위해 가벼움과 높은 성능을 추구하며 만들어졌다. 아파치와의 차이점은 아파치는 쓰레드/프로세스 기반 구조이며, 각 요청당 쓰레드 하나가 처리한다. 한명의 클라이언트 당 하나의 쓰레드가 할당 되므로 사용자가 많아지면 시스템 자원 낭비가 심해진다는 단점이 있다. 반면 엔진엑스는 비동기 기반 구조라 더 적은 리소스를 사용해서 요청을 처리할 수 있다.


https://losskatsu.github.io/it-infra/webserver/#
https://gdtbgl93.tistory.com/96

profile
Step by step goes a long way ✨

0개의 댓글