반응형
WebServer
웹 서버의 주요 기능
- 정적 콘텐츠 제공
- HTML, CSS, JavaScript, 이미지파일 등과 같은 정적 파일을 클라이언트에게 제공하는 역할
- 클라이언트가 URL을 통해 요청한 파일을 디스크에서 찾아 클라이언트에게 반환
- HTTP 요청 처리
- 웹 서버는 클라이언트로부터 HTTP 요청을 받고 이에 대한 HTTP 응답을 반환
- GET, POST, PUT, DELETE등 HTTP메서드를 처리
- 로드 밸런싱
- 웹 서버는 여러 대의 서버에 요청을 분산시켜 처리 성능을 향상시키고 서버 과부하를 방지
- SSL/TLS 암호화
- 웹 서버는 HTTPS를 통해 클라이언트와의 통신을 암호화하여 데이터의 기밀성과 무결성을 보호
Apach (1995)
- 기본적으로는 요청을 받기위한 프로세스가 생성되어있고, 프로세스를 미리 만들어두는 Prefork 방식을 사용.
- 새로운 요청이 들어올 때 미리 만들어 둔 프로세스를 가져다 사용하는 방식
- 만들어진 프로세스를 모두 사용하고 있다면 추가 프로세스를 만들어 할당
- 첫 도입 때부터 이용자가 상당히 많았지만 절대적인 컴퓨터를 사용하는 유저가 적어 프로세스 생성 형식이 문제가 없었지만, 컴퓨터의 보급이 많이 이뤄진 후에는 그만큼 많은 요청이 들어왔고 결국
C10K
(Connection 10,000) 의 문제가 발생 많은 프로세스로 메모리 부족현상 발생
Nginx
- 트래픽이 많은 웹사이트의 WAS를 돕는
비동기 이벤트 기반
경량화 웹 서버 - WS의 역할만을 위해 활용되기도 하고, Reverse Proxy Server로 활용해 WAS의 부하를 줄일 수 있는 로드밸런서 역할도 가능
- Reverse Proxy Server : 클라이언트가 리버스 프록시 서버에 요청하면 프록시 서버가 배후 서버(실제 응답서버)에서 데이터를 가져오는 형태
- C10K 문제 해결의 핵심은
비동기 이벤트 기반구조
- Nginx의 구조
- 멀티 프로세스(master process)
- master process는 서버의 설정, worker process를 관리하며 워커 프로세스의 생성, 관리 작업을 수행
- 싱글 스레드(worker process)
- 생성된 worker process에서는 각각 독립적으로
이벤트 루프 동작
이 실행하며 루프의 큰 틀은 아래와 같음- 이벤트 감시
- 이벤트 큐에 추가 : 이벤트 발생 시 이벤트 큐에 추가
- 이벤트 처리 : 이벤트 큐에서 이벤트를 꺼내 non-blocking 비동기적으로 여러 요청을 수행
- 반복
- 생성된 worker process에서는 각각 독립적으로
- 멀티 프로세스(master process)
Nginx는 여러 프로세스를 사용하기 때문에 수 천개의 동시 연결을 처리할 수 있다.
반응형
'공부 > CS' 카테고리의 다른 글
해시 - 솔트치기 (0) | 2024.08.25 |
---|---|
CGI, FastCGI (1) | 2024.07.23 |
HTTP통신 과정 (0) | 2024.07.01 |
왜 웹 개발자들은 익스플로러를 싫어하나요? (0) | 2023.04.29 |
HTML, CSS, JavaScript가 뭔가요? (0) | 2023.04.12 |