2022이전/Linux

Nginx 와 Apache

바로퇴장 2020. 5. 3. 16:09

웹서버란?

- 웹 서버의 핵심 기능은 클라이언트가 요청하는 리소스들을 전달할 수 있도록 하는 것이다.

- 로컬로 웹SW오픈소스 툴을 이용하지 않고 포트를 열어 구동하게 되면 동시처리속도가 현저히 느리다.

- 대표적인 웹 서버 오픈소스는 Nginx와 Apache가 있다.

Apache

- Apach 기반 서버는 국내 일반적인 웹서버로 이용된다.

- Client에서 요청을 받으면 MPM(Multi Processing Module : 다중처리 모듈) 이라는 방식으로 처리

1. Prefork MPM

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

2. Worker MPM

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

 

Nginx( https://nginx.org/en/ )

- Nginx은 최근 널리 사용되기 시작되었다.

- Event-driven구조의 HTTP, Reverser Proxy, IMAP/POP PROXY server를 제공하는오픈소스 서버 프로그램

- Event Driven 방식에 대해 잠깐 언급하고 넘어가면 요청이 들어오면 어떤 동작을 해야하는지만 알려주고 다른 요청을 처리하는 방식

- 프로세스를 Fork하거나 쓰레드를 사용하는 아파치와는 달리 CPU와 관계없이 모든 IO들을 전부 Event Listener로 미루기 때문에 흐름이 끊기지 않고 응답이 빠르게 진행되어 1개의 프로세스로 더 빠른 작업이 가능하다.

 

* event-driven 구조

- 컴퓨터 회로를 구동시키기 위해 발생하는 일 -> 마우스 클릭, 키보드 타이핑, 모바일 터치 등

- 특정 행동이 자동으로 순서에 따라 발생하는 것이 아닌 어떤 일에 대한 반으으로 동작하는 디자인 패턴

- 종종 분산 처리 시스템고 연결되어 언급됩니다. => 유연성, 탄력성, 확장성 있는 시스템을 구현할 수 있습니다.

-

 

 

 

참고 :

- https://medium.com/dtevangelist/event-driven-microservice-%EB%9E%80-54b4eaf7cc4a

- https://andamiro25.tistory.com/136

- https://m.blog.naver.com/jhc9639/220967352282

- https://en.wikipedia.org/wiki/Event-driven_programming

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