반응형

Apache

Apache는 MPM(Multi Processing Module)이라는 방식으로 처리를 하는데 대표적인 방식으로 Prefork와 Worker방식이 있다.

Prefork MPM: 실행중인 프로세스를 복제하여 처리한다. 각 프로세스는 한번에 한 연결만 처리하고 요청량이 많아질수록 프로세스는 증가한다. 하지만 프로세스를 복제하는 것이므로 메모리영역까지 복제되어 동작하기 때문에 메모리 공유가 없어 안정적이다.

Worker MPM: Prefork방식이 1개의 프로세스가 1개의 스레드로 처리가 되었다면 Worker 동작방식은 1개의 프로세스가 각각 여러 쓰레드를 사용하게 된다. 쓰레드간의 메모리를 공유하며 PreFork방식보다 메모리를 덜 사용하는 장점이 있다.





Apache vs Nginx

Nginx의 가장 유명한 특징이라면 Event Driven방식이다. 따라서 어떠한 요청이 들어오면 어떤 동작을 해야하는지만 알려주고 다른 요청을 처리한다. 그러다보니 프로세스를 fork하거나 쓰레드를 사용하는 Apache와는 달리 CPU에 관계없이 모든 I/O를 전부 Event Listener로 미루기 때문에 흐름이 끊기지 않고 응답이 빠르게 진행되어 1개의 프로세스로 더 빠른 작업이 가능하게 될 수 있다. 이때문에 메모리측면에서 Nginx가 System Resource를 적게 처리한다는 장점이 있다고 한다.



https://taetaetae.github.io/2018/06/27/apache-vs-nginx/">https://taetaetae.github.io/2018/06/27/apache-vs-nginx/



Nginx는 Webserver이자 Reverse Proxy이다.



Proxy: client가 요청한 정보를 여러개의 서버로부터 받은 뒤 client에 반환한다.



Forward Proxy: 

client를 위한 proxy로써 아무 server와 통신할 수 있도록 해준다.



Reverse Proxy: 

server를 위한 proxy로써 서버 어플리케이션의 취약점들을 보완해줌으로써 아무 client와 통신할 수 있도록 해준다. 예를 들자면 과도한 로드를 버틸 수 있게 해주며(buffer 역할), 다양한 request들(http, https 등)을 처리할 수 있게 해준다.



https://en.wikipedia.org/wiki/Reverse_proxy">https://en.wikipedia.org/wiki/Reverse_proxy








반응형
블로그 이미지

개발자_무형

,