웹서버
웹서버는 소포트웨어(Software)를 보통 말하지만, 웹 서버 소프트웨어가 동작하는 컴퓨터이다.
웹서버의 가장 중요한 기능은 클라이언트(Client)가 요청하는 HTML문서나 각종 리소스(Resource)를 전달한다.
웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장되어 있는 정적(static)인 데이터나 동적(Dynamic)인 결과가 될 수도 있다.
기본조건
- 항상 실행 중이다.
- 항상 인터넷과 연결되어 있다.
- 항상 같은 IP주소를 가지고 있다.
컨텐츠
정적 콘텐츠 (Static contents)
- 정적 콘텐츠로만 웹사이트를 구성하는 것이 가장 쉽고 간편하다.
- 웹에서 대표적인 정적 콘텐츠 : HTML, CSS, JS
동적 컨텐츠 (Dynamic contents)
- 동적 콘텐츠와 함께 구성하면 웹사이트의 구축이 복잡하다.
- 동적 콘텐츠는 웹사이트를 보다 유연하고 여러 사용자에게 다른 화면을 제공할 수 있다.
- 웹에서 대표적인 동적 콘텐츠 : text, image, music, video, application data
종류
Apache HTTP Server, Microsoft IIS, Nginx, NodeJS
동작방식
Apache HTTP Server | Nginx | |
역사 | 1900중반부터 오랜기간 사용됨 | 2002부터 가장 많이 사용됨 |
아키텍쳐 | Process-based, thread-based 아키텍쳐 (MPM : Multi-processing Module) |
Event-driven 아키텍쳐 |
성능 | 컴퓨터 자원을 적극 활용. 안정성, 확장성, 호환성이 뛰어남 |
이벤트 기반으로 처리. 여러 사용자의 연결 요청을 처리하기 용이. |
자원사용방식 | (default) 멀티스레딩 (Multi-threading) | (default) 싱글스레딩(Single-threading) |
프로세스와 스레드
프로세스
메모리에 올라와 실행되고 있는 프로그램의 인스턴스
스레드
프로세스로부터 할당받아 프로그램 실행을 위해 실질적으로 이용하는 실행 단위