Nginx
트래픽이 많은 웹사이트의 WAS를 도와주는 비동기 이벤트 기반 구조의 웹 서버 프로그램
클라이언트로부 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 사용하거나,
Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 사용
Web Server vs Web Application Server
웹 서버는 클라이언트가 브라우저 주소창에 url을 입력하여 어떤 페이지를 요청하면, http 요청을 받아 HTML 문서와 같은 정적인 콘텐츠를 사용자에게 전달해주는 역할
만약 사용자로부터 동적인 요청이 들어오게 되면 해당 요청을 WAS에게 요청
WAS도 웹 서버와 동일하게 HTTP 기반으로 동작하며 웹 서버가 할 수 있는 기능은 대부분 WAS로도 처리 가능
거기에 서버사이드 코드를 처리할 수 있어서 사용자에게 동적인 콘텐츠도 전달 가능
주로 데이터베이스 서버와 같이 수행
둘은 기본적으로 사용 목적에 차이가 있다
웹 서버는 정적인 데이터를 처리하는 서버이고 WAS는 동적인 데이터를 위주로 처리하는 서버
그냥 다 WAS로 처리할 수 있는거 아니야?
WAS가 맡고 있는 일이 정적 데이터 처리 말고도 너무 많아
=> DB 조회도 하고 동적인 데이터 처리도 하고
따라서 단순한 정적 콘텐츠는 웹 서버에게 맡기고, 서버 부하를 방지

위 그림과 같이 웹 서버를 앞단에 두고 WAS는 웹 서버가 처리하기 힘든 로직들을 위주로 수행
로드밸런서
만약 서버가 하나인데 많은 트래픽이 몰릴 경우 부하를 감당하지 못하고, 서버가 다운 될 수 있음
해당 문제를 scale up과 scale out 방식을 통해 대처 가능
- scale up : 기존 서버의 성능을 향상
=> 비용도 같이 올라간다 - scale out : 여러 대의 서버를 두어 트래픽을 분산

scale out 방식을 사용하게 되면 서버가 여러 대가 되기 때문에 각 서버에 걸리는 부하를 고르게 나눠야 함
이때 사용하는 여러 서버나 컴퓨터 자원에 작업을 고르게 분산하는 기술이 로드밸런싱
하드웨어에서 로드밸런싱을 할 수도 있고, Nginx같은 소프트웨어를 이용해서 로드밸런싱을 하는것도 가능
Apache vs Nginx
웹 서버는 다양한 종류가 있음

그 중 Nginx가 다른 웹 서버보다 더 많이 사용되는 이유가 뭘까
Nginx는 대용량 트래픽을 처리하기 위해 가벼움과 높은 성능을 목표로 하는 경량 서버
그에 비해서 Apache는 비교적 무겁고 많은 자원을 소모하는 웹서버
대용량 트래픽을 처리해야하는 최근 웹사이트에는 Nginx가 더 적합
그럼 Nginx만 사용하면 되는 것이 아닌지?
Apache와 달리 Nginx는 기본적으로 컴파일 시점에 모듈을 선택적으로 포함
=> 확장 또는 제거 시 Nginx를 재컴파일 해야 한다는 소리
이렇게 함으로서 Nginx는 더 가벼운 메모리 사용량과 높은 성능을 제공하긴 하지만 특정 상황에선 유연성을 제한하는 요소가 될 수도 있다
또한 아직까지는 Apache보다 OS 안정성이 낮다
Window에서는 부분적으로 지원하니까...
Apache 웹 서버 보다 비교적 초기 설정이 복잡하다는 것도 이유일 수 있음
성능으로만 따지고 보면 Nginx가 우위에 있지만 개발 환경을 세부적으로 살펴보면 Apache가 유리한 부분도 존재
Nginx에 없는 핵심 모듈을 사용할 경우에는 Apache를 이용하면 되고, 성능이 중요하면 Nginx를 이용하면 된다
두 서버를 함께 사용하는 것도 가능
'FE Study' 카테고리의 다른 글
| [FE] JavaScript Array (1) | 2024.08.31 |
|---|---|
| [FE] Polling / Long Polling / SSE / WebSockets (0) | 2024.08.27 |
| SEO (0) | 2024.08.24 |
| [FE] webpack vs vite (0) | 2024.08.16 |
| [FE] JavaScript에서의 Class (0) | 2024.08.16 |