검수요청.png검수요청.png

아파치 웹서버

해시넷
lodychoi (토론 | 기여)님의 2020년 7월 31일 (금) 09:48 판 (참고자료)
이동: 둘러보기, 검색
아파치 웹서버(Apache Web Server) 로고
아파치 웹서버(Apache Web Server) 로고와 글자

아파치 웹서버(Apache Web Server)는 리눅스 기반의 무료 오픈소스 웹서버 소프트웨어이다. 아파치재단에서 관리하고 있다. 아파치(Apache)는 미국 인디언 부족인 아파치족을 존경하는 의미를 담아서 만든 말이다. 로고는 아파치족이 머리에 꽂는 깃털이다. 나중에 아파치(Apache)는 "A Patchy Web Server"의 약자라는 설명(backronym)이 뒤늦게 생겨났다.

개요

아파치 웹서버는 고성능의 HTTP 서버이며, 팀 버너스 리가 만든 NCSA HTTPd를 기반으로 만들어졌다. 안정성과 확장성, 호환성이 매우좋고, 개선된 패치파일을 꾸준하게 제공하고 있었기 때문에 월드와이드웹 서버소프트웨어로 전세계에서 가장 높은 점유율을 가지고 있었다. 라이선스는 독자적인 라이선스로 자유로운 수정 및 재배포가 가능한 아파치 라이선스 2.0을 사용한다.

아파치 웹서버란, 정식 이름은 아파치 HTTP 서버(Apache HTTP Server) 지만 아파치 서버로 많이 알려져 있다. 프로그램의 이름은 httpd이며 HTTP 데몬(daemon)이라는 의미다. 세계에서 가장 많이 쓰는 웹 서버 중 하나이며, 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 만든 HTTP 웹 서버다. 팀 버너스 리가 유닉스 기반으로 만든 최초의 웹 서버 프로그램인 NCSA HTTPd를 기반으로 만들어졌다. 아파치 웹 서버는 NCSA HTTPd를 리눅스에서도 돌리는 것을 목표로 만들어진 프로그램이다. 그래서 윈도우 서버보단 리눅스 서버에서 더 지원이 잘 되지만 C로 작성해서 유닉스 계열뿐 아니라 마이크로소프트 윈도우나 노벨 넷웨어 같은 다양한 운영체제에 이식되어 설치해서 사용할 수 있다. 따라서 현재 나와있는 대부분의 개인용 또는 서버용 운영체제를 지원한다. 그 이후 리눅스와 함께 퍼져나갔고, 리눅스가 서버 OS의 최다 점유율을 차지하자 아파치도 자연스럽게 최다 점유율을 차지했으며 다양한 추가 기능에, 구축이 쉽다는 이유 때문에 많이 쓰고 있다. 현재 거의 모든 리눅스 배포판이 이 아파치를 지원한다. 하지만 아파치 자체만으로 엄청 무겁고, 스퀴드(Squid)와 함께 슬로리스(Slowloris) 취약점이 발견되었기에, 보통 프로그래밍 능력이 능숙한 사람들이나, 대형 사이트 운영자는 엔진엑스(Nginx), 인터넷 정보 서비스(IIS)를 주로 쓰고 있지만 대부분의 중소기업들은 무료이기 때문에 많이 쓰인다. 그렇다고 웹호스팅이나 소규모 웹사이트에만 사용하는 것은 아니다. 대규모 엔터프라이즈에서도 사용되며 오히려 거대 규모 웹서버 시장 점유율은 아파치가 더욱 막강하며 금융권을 비롯해서 안정성과 보안이 중요한 곳에서도 아파치를 사용한다. 상용 소프트웨어를 능가하는 오픈소스 소프트웨어의 좋은 예시 중 하나다. 1995년에 나왔는데도 2020년인 현재까지 최신 버전은 2.4.x다. 실제 운영중인 웹사이트 중에는 지금까지도 아파치 1.x 대에 머물러 있는 곳도 있다. 너무 기능 추가나 발전이 없는 거 아닌가 싶기도 하겠지만, 그만큼 안정화가 잘 되어 있는 서버라는 뜻일 수도 있다. 사실 아파치 서버 자체는 웹 서버로서 아주 기본적인 기능만 수행하는 것이고, PHP를 비롯해서 동적 웹 페이지를 만드는 기능이라든가 하는 대부분의 발전된 기능은 외부 모듈을 붙여서 구현한다. 오랜 역사와 높은 시장 점유율 덕분에 이러한 외부 모듈이 많고, 안정화도 잘 되어 있는 것이 아파치를 찾게 되는 주된 이유 중 하나다. 기본적으로 80포트로 연결되며, Apache_HOME/bin/httpd.bat 같은 배치파일을 실행하거나, 서비스로 등록하여 서비스로 실행시키면 된다. 정적인 페이지를 보여주는 역할을 수행하는 데 적합하다.[1][2][3]

역사

1995년 2월 - 개발 시작

아파치의 기원은 NCSA HTTPd 라고 불리는 공공 HTTP 서버로 거슬러 올라갈 수 있다. 이것은 버너스리가 유럽 입자 물리 연구소(CERN)에서 만든 웹서버의 대안으로 일리노이 대학교의 국립 슈퍼컴퓨팅 응용 센터(NCSA)에서 개발했다. NCSA HTTPd는 1990년대 초반에 가장 인기 있는 웹 서버가 되었지만 1994년에 넷스케이프가 이 프로젝트를 이끌던 개발자인 롭 맥쿨을 빼가면서 추진력을 잃었다. 그러자 전 세계에 흩어져 있던 많은 웹사이트들의 관리자들은 각자의 필요에 맞게 NCSA HTTPd를 수정하기 시작했고 결국 서로 호환되지 않는 버전들이 양산되었다. 개발자들에 따르면 "NCSA httpd 라이선스의 미래에 대한 불확실성"도 우려사항이었다.

이 문제를 해결하기 위해 웹 관리자 몇 명이 모여 시작한 것이 아파치였다. 1995년 2월에 8명의 개발자들이 협업을 시작했다. 이들은 NCSA HTTPd 코드에 기반한 새로운 웹서버를 개발했고 자신의 조직을 아파치 그룹(Apache Group)이라고 불렀다. 8명 중 한 사람이었던 로버트 타우는 프로젝트가 출범할 때 이렇게 언급했다. "우리의 목표는 NCSA [HTTPd 서버 버전] 1.3의 개선 버전을 만드는 것이다. 우리의 요구를 실제로 충족시키는 서버를 가지기 위해서 모든 인기 있는 수정사항들을 바로 포함할 것이다" 그렇게 하기 위해서 그들은 일련의 패치(patch)들을 적용했는데 여기서 아파치라는 이름이 생겨났다. '패치 서버(a patchy server)'라는 문구에서 따온 것이다.

1995년 3월 - 로고와 강령

1995년 3월 중순이 되자 로고와 강령을 만들었다. 강령을 통해서 그들은 개방형 표준에 기반한 웹용 사실상 표준 서버를 개발하겠다고 선언했다.

아파치 프로젝트는 공공 HTTP 서버의 개발에 관한 일부 우려에 답하기 위한 시도로 만들어졌다. 이 프로젝트의 목표는 안전하고, 효과적이며, 확장이 가능한 서버를 제공하는 것이다. 이 서버는 현재의 HTTP 표준에 따라 HTTP 서비스를 제공한다.

1995년 12월 - 1.0 발표

몇 달에 걸쳐서 개발팀은 서버의 설계를 뜯어고쳤고 새로운 기능들을 추가해서 12월에 아파치 1.0 버전을 발표했다. 프로젝트가 출범한 지 일 년도 되지 않은 1996년 초에 아파치는 세계에서 웹서버의 선두 주자가 되었다.[4]

2019년 6월 기준으로 엔진엑스가 9%차이로 점차 점유율을 높이는 중이다. 아파치(29.39%), 엔진엑스(20.55%), 구글(8.36%), 마이크로소프트(5.97%)[5]

주요 인물

특징

아파치 웹서버는 무료 오픈소스이고, 리눅스, 유닉스, 윈도우뿐만 아닌 거의 모든 운영체제에서 설치 및 사용이 가능하며, 리눅스 운영체제에서의 APM(Apache + PHP + MySQL)은 웹서버구성의 기본으로 받아들여질 정도이다. 아파치 서버는 호환성, 이식성, 확장성, 안정성이 높아서 웹서버에서 많이사용한다. 아파치는 요청 당 프로세스 또는 쓰레드가 처리하는 구조이며, 요청이 많아지면 CPU와 메모리 사용량이 높아져 성능이 저하될수있다. 이 문제들은 Keep Alive를 활성화함으로 해결할 수 있지만 대량 접속시에 효율이 급격히 떨어지는 문제점이 발생한다. 이를 개선하기 위해 아파치2.4버전부터는 리소스 사용량이 더 적은 Event MPM을 적용하게되었다.[6]

아파치는 확장성이 상당히 좋은데, 모듈이라는 개념으로 수많은 기능을 덧붙일 수 있다. 이 모듈을 통해 다른 프로그램과의 연동도 가능하다. 이 때문에 여러 가지 서버 사이드 프로그래밍 언어데이터베이스 관리 시스템과도 궁합이 잘 맞았는데, 초창기에는 펄(Perl)이 대세였고, 피에이치피(PHP)가 그 뒤를 이었다. 바로 피에이치피 모듈을 통해 피에이치피를 실행할 수도 있지만, 주로 속도 향상을 위해 PHP-FPM을 통해 피에이치피를 연결해서 사용한다. 좀 더 고성능을 원하는 사람은 힙합 가상 머신(HHVM)을 쓴다. 그리고 오픈소스 데이터베이스 관리 시스템인 마이에스큐엘(MySQL)이 나오자, APM(Apache+PHP+MySQL)이라고 통칭하면서 웹 서버를 돌리기 위한 기본이 되었다. 물론 다른 언어와 다른 데이터베이스 관리 시스템도 지원하지만, 저 조합의 인지도가 가장 높다. 자바서버 페이지(JSP)의 경우에도 설정이 조금 귀찮아지지만 톰캣과 연동하여 돌릴 수 있다. 라이선스는 GPL이 아닌 자체 라이선스를 쓴다. 아차피 라이선스 2.0을 따르는데, 아파치 소프트웨어 재단에서 만들었다는 사실을 밝히고 아파치 라이선스를 따르면 자유롭게 수정 및 재배포가 가능하다. 소스 공개 강제 사항도 없는 자유로운 라이선스다. 그러나 2.2 버전대에서 너무 무겁다는 평이 많아졌고, 빠른 속도를 내세운 엔진엑스라는 웹 서버 프로그램이 새로 나오면서 아파치의 위기가 왔다. 아파치는 Event MPM을 탑재하여 속도를 크게 개선한 2.4버전을 내놓으면서 여기에 대응하고 있다. 기능이 매우 많은 웹서버이지만 그 기능을 다 활용하는 사람이 드문 그런 프로그램이다. 확장 모듈이 매우 다양하여 간단하게 설치하고 사용 가능하지만 대부분의 사람은 이 프로그램과 PHP, 마이에스큐엘만 설치하고 돌린다. 그리고 그 기능들은 엔진엑스에도 그대로 존재하고, 더 빠르다. 호환성을 확인하고 옮길 수 있으며 옮기는 게 좋다. 윈도우용도 나온다. 윈도우에도 크로스 플랫폼 웹 서버 자유 소프트웨어 꾸러미(XAMPP)나 에이피엠셋업(APMSetup) 등의 APM을 편리하게 통합해 설치할 수 있는 패키지가 나와 있다. 아파치 웹 서버, 피에이치피, 마이에스큐엘 전부 윈도우용이 나오기 때문에 가능한 것이다. 그러나 리눅스/유닉스 베이스로 만들어진 프로그램이다 보니 윈도우에서는 제 속도가 나오지 않는다. 윈도우 버전은 서버 입문자의 디버깅 환경 구축용 혹은 피에이치피+마이에스큐엘 연습용 정도라고 보면 된다. 거기다 윈도우 서버에는 마이크로소프트가 자체적으로 만든 인터넷 정보 서비스가 있기 때문에, 인터넷 정보 서비스에 FastCGI 모듈로 피에이치피를 연결해서 돌리는 것이 보통이다. 이 때문에 피에이치피의 윈도우 버전은 인터넷 정보 서비스용과 아파치용(엑스엔진용)이 따로 나온다.[2]

버전

Apache

  • 1998년 06월 06일 - Ver.1.3
  • 2010년 02월 03일 - Ver.1.3.42

Apache2

  • 2002년 02월 03일 - Ver.2.0
  • 2005년 12월 01일 - Ver.2.2
  • 2012년 02월 21일 - Ver.2.4
  • 2013년 07월 10일 - Ver.2.0.65
  • 2017년 07월 11일 - Ver.2.2.34
  • 2018년 03월 17일 - Ver.2.4.33
  • 2018년 07월 16일 - Ver.2.4.34
  • 2019년 04월 01일 - Ver.2.4.39

문제점

문제점들을 개선하기위해 아파치2.4부터 Event MPM을 적용했다고 해도, Event Driven을 사용하여 리소스 사용량이 적은엔진엑스보다 떨어지는 성능과, 대량접속에도 적은 리소스를 사용하며 빠르게 서비스를 요구하는 웹사이트가 늘어남으로 인해서 아파치는 하락세를 타고있으며, 경량화서버엔진엑스가 시장 점유율을 점차 늘려가고있다.

평가 및 전망

엔진엑스가 성능상의 장점을 가지고 있다고 하지만, 아파치 웹서버는 여전히 높은 서버 시장점유율과 안정성, 호환성, 확장성을 가지고 있다. 아파치 웹서버가 현재 최우선 과제로 삼고있는 성능 개발 목표를 달성하고, 지속적으로 버전 패치를 해준다면 다시 시장 점유율을 늘려갈 수 있을 것으로 기대하고 있다.

각주

  1. 서버이야기, 〈아파치(apache)와 톰캣란?〉, 《티스토리》, 2017-01-16
  2. 2.0 2.1 아파치 HTTP 서버 나무위키 - 아파치 HTTP 서버
  3. 아파치 HTTP 서버 내위키 - 아파치 HTTP 서버
  4. 기계인간 John Grib, 〈아파치 웹 서버의 시작〉, 《개인블로그》, 2020-02-05
  5. Web Server Survey, 〈June 2019 Web Server Survey〉, 《Netcraft》, 2019-06-17
  6. 아파치 공식 홈페이지 - Overview of new features in Apache HTTP Server 2.4

참고자료

같이 보기


  검수요청.png검수요청.png 이 아파치 웹서버 문서는 소프트웨어에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.