2020. 10. 17. 12:33ㆍDevOps/Web Server
WebServer 많이들 들어보셧거나 백엔드, 서버엔지니어, 그리고 DevOps 엔니지어, 인프라 엔지니어 등 특정 분야의 팀들은 필수적으로 알고들 있다. 웹서버란 무엇일까? 위키 백과에서는 두가지를 명시해 놓았다.
- 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹페이지를 반환하는 컴퓨터 프로그램
- 위에 언급한 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨터
보통은 아래 정의를 보고 서버 컴퓨터라고도 많이 한다. 이 포스팅에서는 첫번째 명시된 웹 서버를 기준으로 설명할 것이다.
필자의 경우 웹서버는 정적 페이지를 처리하는 기술이라고 대충 배워왔는데 자세히 한번 들여다 볼 필요가 있다.
웹서버의 가장 기본적인 단계에서, 브라우저가 웹 서버에서 불려진 파일을 필요로 할때, 브라우저는 HTTP를 통해 파일을 요청한다. 요청이 올바른 웹 서버(하드웨어)에 도달하였을 때, HTTP 서버(software)는 요청된 문서를 HTTP를 이용해 보내준다. 즉 현재 이 글을 보는 구독자분이 방금전에 접속했던 서버이다. 일반적인 서버와 달리 사용도가 높은 웹서버의 경우, 적게는 수십, 많게는 수천의 요청을 받는 경우가 대부분이다. HTTP의 특성상 데이터 전송을 종료하면 통신을 끊으며, 파일 전송, 동영상 시청과 같은 대량의 데이터를 송수신 하는 경우는
따로 서버를 구현하는 경우가 대부분이다. 페이스북이나 imgur 같이 데이터를 대용량으로 저장하는 서브는 웹 서버는 반드시 데이터베이스가 필요하다. 하지만 요즘은 인터넷의 발달로 데이터베이스가 없는 서버를 찾아보는게 더 어려워졌다. 다만 파일 전송의 경우는 FTP를 주로 사용하며 시실가 동영상 시청은 UDP를 주로 사용한다.
이런 원리로 돌아가는 웹서는 다양한 종류가 있다. 대표적으로 Apache와 Nginx가 있다.
웹 서버 시장에서 아파치가 오랫동안 확고한 선두를 지키고 있다는 것은 아주 잘 알려진 사실이다. 하지만 판도가 바뀌었다.
확실히 2013년까지는 아파치가 우세하였지만 2009년부터 Nginx(엔진엑스) 꾸준히 성장하고 있었다. 그 많은 서버 관리자가 엔진엑스로 교체한 이유는 무엇일까?
신규 서비스를 중심으로 점유율 상승에 가속이 붙는 중이며 이미 아파치 HTTPd가 많은 한계를 많이 보이고 있으므로 특별한 사유가 없다면 엔진엑스로 갈아타는 추세이다. 확장 모듈이 아파치 HTTPd보다 부족한 게 흠인데 어차피 제대로 쓰는 사람은 드물다. 따라서 호환성 확인 후 별다른 문제가 없다면 엔진엑스로 갈아타는 것이 현 추세임은 분명하다.
엔진엑스는 러시아에서 만든 경량 HTTP 서버다. 또한 생각보다 나온 지 조금 된 기술이다. 2002년 독립 개발자 이고르 시소에프가 사용량이 많은 러시아 웹사이트인 램블러에 쓰려고 처음 시작한 프로젝트이다. 램블러는 2008년 9월 하루에 5억이 넘는 HTTP요청을 받았으며
레딧, 위키백과, 워드프레스, 드롭파박스 등 웹에서 가장 인기 있는 일부 웹사이트를 제공하는 데 사용된다. 엔진엑스는 기능이 많으면서도 매우 효율적이고 가볍다는 것이 입증되었다. 엔진엑스가 다른 경쟁 기술보다 효율적인 몇 가지 측면이 있다.
무엇보다 엔진엑스는 빠르다. 비동기 소켓을 사용하기 때문에 엔진엑스는 받은 요청 수 만큼 자식 프로세스를 생성하지 않는다. 코어당 한 프로세스만으로도 수천 개의 연결을 처리하는 데 출분하므로 CPU 부하와 메모리 사용량이 적다. 또한 엔진엑스는 사용하기 매우 용이하므로 아파치 같은 다른 웹 서버보다 구성 파일을 읽고 조작하기 훨씬 쉽다. 즉 두어 줄만으로도 가상 호스트 설정을 마칠 수 있다.
마지막으로 서버 관리자는 모듈 구조를 좋아한다. 엔진엑스는 BSD 방식의 라이선스로 출시되는 완전한 오픈소스 프로젝트일 뿐만 아니라 모듈이라는 강력한 플러그인 시스템도 따라온다. 기본 배포 파일에 매우 다양한 모듈이 포함돼 있고 다수의 외부 모듈을 온라인으로 다운로드할 수 있다. 전반적으로 엔진엑스는 속도, 효율성, 강력한 기능으로 결합해 성공적인 웹 서버의 완벽한 요소로 제공됨으로 현재 Docker컨테이너나 Kubernetes Ingress 서버(kubernetes 포스팅으로 다룰예정)로도 많이 활용된다. 즉 오늘날 엔진엑스는 최고의 아파치 대안으로 보인다.
Nginx 공식 홈페이지에서 상세히 제품군들이 나와있고 위 그림 보듯이 뭐하나 필요없는 기능들이 없다. 일단 이번 포스팅에서 Nginx의 간단한 소개와 왜 배워야하는지 간단한 소개를 하였다. 엔진엑스는 아파치/톰켓과 마찬가지로 내용이 방대하기 때문에 다음 포스팅에서 상세한 기능들의 설명을 이어나가도록 하겟다. 사전에 NGINX 홈페이지에서 Referance를 참고해주길 바라며 포스팅을 끝내겟다.
NGINX Docs | Welcome to NGINX documentation
Welcome to NGINX documentation. NGINX is a free, open-source, high-performance HTTP server, reverse proxy, and IMAP/POP3 proxy server.
docs.nginx.com