서버의 내부 동작 방법
아파치(Apache) 개요
- 오픈 소스 라이선스에 따라 배포되어 마음대로 쓸 수 있는 HTTP 웹 서버
- 웹 서버 : 80번 포트로 클라이언트의 요청(POST,GET,DELETE)을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할. 이때 데이터는 정적인 데이터(html, css, 이미지등)로 한정 된다.
- 스레드/프로세스 기반 구조
톰캣(Tomcat) 개요
- **dynamic(동적)**인 웹을 만들기 위한 웹 컨테이너, 서블릿 컨테이너라고 불리며, 웹서버에서 정적으로 처리해야할 데이터를 제외한 JSP, ASP, PHP 등은 웹 컨테이너(톰캣)에게 전달한다.
- WAS(Web Application Server)
- 컨테이너, 웹 컨테이너, 서블릿 컨테이너라고 부름
- JSP,서블릿처리,HTTP요청 수신 및 응답
- 아파치만 쓰면 정적인 웹페이지만 처리하므로 처리속도가 매우 빠르고 안정적이다.
하지만 톰캣(WAS)를 쓰면 동적인 데이터 처리가 가능하다. DB연결,데이터 조작, 다른 응용프로그램과 상호 작용이 가능하다. 톰캣은 8080포트로 처리한다
아파치 톰캣(Apache+Tomcat) 개요
- 톰캣이 아파치의 기능 일부를 가져와서 제공해주는 형태이기 때문에 같이 합쳐서 부른다.
아파치 톰캣의 처리방법
- 아파치와 톰캣을 같이 쓰면 아파치는 정적인 데이터만 처리하고, JSP 처리는 Web Container(톰캣의 일부)로 보내주어 분산처리 할 수 있다.
엔진엑스(NGINX) 개요
- 차세대 웹서버
더 적은 자원으로 더 빠르게 데이터를 서비스 할 수 있다.
- 동시접속 처리에 특화 된 웹서버 프로그램이다. 아파치보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화 되어있다.
- 동시접속자(약 700명) 이상이라면 서버를 증설하거나 Nginx 환경을 권장한다고 한다. 지금은 아파치가 시장 점유율이 압도적(?)이지만, 아마존웹서비스(AWS) 상에서는 시장 점유율 44%에 달할정도로 가볍고, 성능이 좋은 엔진이라고 한다.
- Nginx는 비동기 처리 방식(Event-Drive) 방식을 채택하고 있다.
- 동기(Synchronous) : A가 B에게 데이터를 요청했을 때, 이 요청에 따른 응답을 주어야만 A가 다시 작업 처리가 가능 (하나의 요청, 하나의 작업에 충실)
- 비동기(Asynchronous) : A의 요청을 B가 즉시 주지 않아도, A의 유휴시간으로 또 다른 작업 처리가 가능한 방식
NGINX와 Apache의 관계
- 아파치는 오픈소스이고, 무료로 사용할 수 있는 소프트웨어이기에 웹을 지탱하고 있다고 할 수 있다 하지만, 아파치는 오래전에 만들어진 소프트웨어이기에 과거의 요구사항과 새로운 요구사항간의 충돌하는 것이 있다.
- 엔진엑스는 새로운 시대의 요청에 부응해서 만들어진 웹서버이다. 개발의 모든 목적이 높은 성능에 맞춰져있다. 잘 사용하지 않는 기능은 과감하게 제외했다. 덕분에 폭팔적인 증가세에 있는 인터넷 서비스를 지탱하는데 적합하다.
참고 자료 링크
opentutorials.org/module/384/3462