잡다한것/펌자료

PHP 20주년 : 웹 개발을 좌우하는 스크립팅 언어가 되기까지

가카리 2015. 6. 20. 20:17
반응형

‘C로 작성된 CGI 바이너리(CGI binary) 집한’을 배포할 때만 해도 라즈무스 러돌프는 자신의 창작물이 웹 개발에 얼마나 큰 영향을 미칠 지 몰랐을 것이다. 마이애미에서 열린 올해의 선샤인PHP(SunshinePHP) 컨퍼런스에 개막 연사로 자리한 러돌프는 “1995년 당시 웹 상에 C API를 내놓았다고 생각했다. 그건 착각이었다. 만일 그랬다면 우리 모두 C 개발자가 돼있을 테니 말이다”라고 말했다.

처음 러돌프가 퍼스널 홈 페이지 툴(당시에는 PHP를 이렇게 불렀다) 버전 1.0을 내놓을 때만 해도, 웹은 아직 유아기 단계였다. HTML 2.0이 탄생한 것이 그 해 11월 이었고, HTTP/1.0은 이듬해 5월이 돼서야 탄생했다. 당시 가장 널리 사용되던 웹 서버는 NCSA HTTPd였고, 가장 유명한 웹 브라우저는 넷스케이프 네비게이터(Netscape Navigator)로 인터넷 익스플로러는 그 해 8월이 돼서야 처음으로 세상 빛을 보았다. 다시 말해 PHP의 탄생은 다양한 브라우저들의 탄생과 경쟁의 시작과 비슷한 시기에 이루어졌다 할 수 있겠다.

당시 사건들을 잘 살펴보면 PHP가 웹 개발에 미친 엄청난 영향을 알 수 있다. 당시 웹 앱의 서버 측면 프로세싱에 있어서는 선택지가 무척 제한적이었다. PHP가 생기고 나서야 웹에서 여러 가지 다이내믹한 시도들을 할 수 있는 도구가 생기게 된 것이다. PHP의 실용적인 유연성은 우리의 상상력을 자극했고, 이후 PHP는 웹과 함께 성장의 궤를 함께 해왔다. 오늘날 웹의 80% 이상을 장악한 PHP는 특히 웹 문제 해결에 적합한 스크립팅 언어로 자리잡았다. PHP가 걸어온 길을 보고 있자면 이론에 대한 실용주의의, 그리고 순수성에 대한 문제 해결 능력의 승리를 엿볼 수 있다.

웹을 한 데로 모아 준 접착제

디자인을 보면 알 수 있듯, 아니, 디자인이 없다는 사실로부터 알 수 있듯, PHP가 처음부터 스크립팅 언어는 아니었다. 처음에 PHP는 웹 개발자들이 초급 수준의 C 라이브러리에 쉽게 액세스 할 수 있도록 도와줄 API로 시작했다. PHP의 첫 버전은 서식 처리 기능을 제공하며 mSQL 데이터베이스와 매개변수(parameter) 요청에 액세스 할 수 있는 짧은 CGI 바이너리(binary)였다. 그렇지만 웹 앱 데이터베이스 사용 용이성으로 곧 많은 이들의 관심을 받게 되었다.

PHP/FI라 불린 두 번째 버전에서는 데이터베이스 지원이 PostgreSQL, MySQL, Oracle, Sybase 등까지 확장되었다. 해당 데이터베이스들의 C 라이브러리를 랩핑하여 PHP 바이너리의 일부로 만든 것이다. PHP/FI 버전에서는 또한 GD 라이브러리를 랩핑하여 GIF 이미지를 만들고 조작하는 것도 가능했다. 아파치 모듈로 동작할 수도 있고 아니면 FastCGI 지원으로 컴파일 될 수도 있었다. PHP/FI 버전으로 변수, 배열, 언어 구조 등에 대한 지원이 가능한 PHP 스크립트 언어가 탄생한 것이다. 당시 많은 이들에게 PHP는 다양한 요소들을 한 데 모아 줄 접착제와도 같은 존재였다.

PHP는 점점 더 많은 프로그래밍 언어 기능을 추가하고 버전 3을 비롯해 후속 버전을 탄생시키면서도 초기의 그 접착제 역할을 결코 소홀히 하지 않았다. PECL(PHP Extension Community Library) 등을 통해 라이브러리를 한 데 묶고 라이브러리의 기능을 PHP 레이어에 노출시킬 수 있었다. 이렇게 다양한 요소들을 한 데 모을 수 있는 능력은 비록 소스 코드에 제한된 것일지라 해도 PHP의 큰 장점으로 인정받았다.

웹, 코더들의 커뮤니티

PHP가 웹 개발에 미친 영향은 비단 언어 그 자체가 할 수 있는 일에만 국한되지는 않았다. PHP 작업이 어떻게 진행되고 누가 그 과정에 참여하는가, 그것 역시 PHP 산물의 중요한 일부분이다.

PHP 유저 그룹은 1997년부터 형성되기 시작했다. 가장 초기 유저 그룹 중 하나는 미드웨스트 PHP 유저 그룹(Midwest PHP User’s Group, 나중에는 시카고 PHP라 불리기도 했다)으로 1997년 2월 첫 미팅을 가졌다. 웹 상의 문제 해결에 도움을 준 PHP라는 작은 도구에 대한 애정을 가지고 모인 이들의 열정적이고 의욕적인 모임의 시작이었다. 특히 PHP의 편재성이야 말로 이를 웹 개발의 제1 선택지로 만들어 준 특징이었다. PHP는 특히 공유 호스팅(shared hosting)에서 인기가 있었고 진입 장벽이 낮은 덕에 초기 웹 개발자들에게 매력적으로 다가왔다.

코더들의 커뮤니티가 커져감에 따라 PHP 개발자들을 위한 도구와 리소스를 제대로 분류하려는 시도도 있었다. PHP에게 있어서는 분수령이라고도 할 수 있는 2000년도에는 첫 PHP 개발자 미팅이 열렸다. 여기에는 프로그래밍 언어의 핵심 개발자들이 텔 아비브에서 모여 곧 있을 4.0 버전 릴리즈를 논의했다. PEAR (PHP Extension and Application Repository)또한 2000년도에 시작돼 고 퀄리티의 유저랜드 코드 패키지를 제공했다. 어람 지나지 않아서는 독일에서 최초의 PHP 컨퍼런스였던 PHP 콩그레스(PHP Kongress)도 개최되었다. PHPDeveloper.org 웹사이트가 생겨났고 이 사이트는 현재까지도 PHP 커뮤니티에서 가장 권위 있는 뉴스 소스로 꼽힌다.

이렇듯 PHP를 둘러싼 다양한 커뮤니티의 형성은 PHP의 성장에 아주 중요한 역할을 했다. 웹 개발 산업의 폭발적 성장에 힘입어 PHP도 함께 성장했다. 점점 더 많은, 더 큰 규모의 웹사이트들을 PHP가 장악하기 시작했다. 사용자 그룹 역시 전 세계에 걸쳐 증가했다. 메일링, 온라인 포럼, IRC, 컨퍼런스, php[architect]같은 업계지, 독일의 PHP 매거진(PHP Magazin), 인터네셔널 PHP 매거진 등 PHP 커뮤니티의 성장은 코드 공유를 강조하는 협동적, 공개적 웹 개발 분위기 형성에 큰 영향을 미쳤다.

그러다가 약 10여년 전, PHP5 출시 직후 일어난 한 사건으로 인해 PHP 커뮤니티가 라이브러리, 어플리케이션을 만드는 방식에 일대 변화가 일어나게 된다. 바로 루비온레일즈(Ruby on Rails)의 출시였다.

프레임워크의 등장

루비 프로그래밍 언어의 루비 온 레일즈 프레임워크는 모델 뷰 콘트롤러(MVC, Model-View- Controller) 에 더욱 집중한 아키텍쳐 패턴이었다. 그보다 몇 년 앞서 나온 모하비PHP(Mojavi PHP) 프레임워크도 이러한 패턴을 사용했지만, 루비 온 레일즈가 몰고 온 열풍이야 말로 이후 나온 PHP 프레임워크에 MVC를 단단히 박제하다시피 한 주역이었다. PHP 커뮤니티에 프레임워크의 폭발이라 할 만한 것이 일어났고 프레임워크는 개발자들이 PHP 어플리케이션을 제작하는 방식을 완전히 바꿔버렸다.

PHP 커뮤니티 내에서의 프레임워크의 급증으로 중요 프로젝트, 개발 등이 진행되었다. 2009년에는 PHP 프레임워크 정보처리상호운용 그룹(PHP Framework Interoperability Group)이 생성되어 코딩 표준, 네이밍(naming) 관습, 그리고 최선의 프레임워크 관행 등을 확립하기 위해 노력했다. 이러한 표준들을 법제화 해 놓음으로써 개발자들에게 다른 멤버들의 프로젝트 코드를 사용해 상호운용 가능한 소프트웨어를 제공할 수 있게 되었다. 이러한 상호운용성은 프레임워크를 여러 개의 요소로 분할할 수 있으며 단독적인 라이브러리들을 하나의 프레임워크 하에 함께 사용할 수 있음을 의미했다. 그리고 2011년에는 또 하나의 획기적인 사건이 발생했다. 바로 컴포저 프로젝트(The Composer project)가 탄생한 것이었다.

Node.js의 NPM과 루비의 번들러(Bundler)에서 영감을 얻은 컴포저 프로젝트는 PHP 어플리케이션 개발의 새 시대를 열었다. 일종의 PHP 르네상스와도 같았다. 패키지들간의 상호 운용성을 장려하고 표준적 네이밍 관습, 코딩 표준 도입, 테스트 커버리지 증가 등을 장려했다. 이는 현대 PHP 어플리케이션에 있어서 필수적인 도구이 되었다.

스피드와 혁신에 대한 요구에 부응하다

오늘날 PHP 커뮤니티는 애플리케이션 및 라이브러리 생태계를 제대로 구축하고 있다. 워드프레스(WordPress), 드루펄(Drupal), 줌라(Joomla), 미디어위키(MediaWiki) 등은 현재 가장 널리 쓰이고 있는 PHP 애플리케이션이다. 이러한 어플리케이션들은 소규모 동네 가게에서부터 백악관 웹사이트, 위키피디아에 이르기까지 규모를 막론하고 비즈니스들을 지원한다. 알렉사의 탑 10 웹사이트 중 여섯 곳이 PHP를 사용해 매일 수십 억 페이지를 처리한다. 그 결과 PHP 어플리케이션들은 스피드에 최적화 되었으며 퍼포먼스 향상을 위해 PHP 코어의 혁신에도 상당한 노력을 기울이게 되었다.

2010년, 페이스북은 PHP 코드를 C++ 코드로 옮기고 이것을 실행 가능한 바이너리 애플리케이션으로 컴파일 하는 PHP 소스-투-소스 컴파일러 힙합(HipHop)을 공개했다. 점점 더 성장해가는 페이스북으로써는 표준 PHP 코드에서 벗어나 더 빠르고, 더욱 최적화 된 코드로 옮겨 갈 필요가 있었다. 그러나 페이스북은 사용의 용이성과 빠른 개발 사이클이라는 장점 때문에 PHP를 완전히 포기하고 싶지는 않았다. 결국 힙합은 PHP를 기반으로 한 새로운 언어 ‘핵(Hack)’을 포함하는 JIT(just-in-time) 컴파일 기반 PHP 실행 엔진인 HHVM으로 새롭게 변신했다.

페이스북의 새로운 혁신을 비롯하여 각종 VM 프로젝트들은 엔진 레벨에서 경쟁을 유발하였고 이는 언어 스펙의 문제와 PHP를 지원하는 젠드(Zend) 엔진의 미래에 대한 논의로까지 이어졌다. 2014년에는 “의미론적, 구문론적으로 완전하고 정확한 PHP 언어의 정의를 내리기 위한” 프로젝트가 시작되기도 했다. 컴파일러 프로젝트들이 상호 운용성을 띌 수 있도록 하기 위함이었다.

차세대 PHP 버전이 뜨거운 논쟁의 주제가 되었고, phpng라는 이름의 프로젝트가 PHP 코드 베이스를 개선, 최적화, 리팩터할 하나의 옵션으로 제안되었다. phpng는 실제 애플리케이션 퍼포먼스 측면에 있어서도 상당한 향상을 보여주었다. 이전에 출시되지 못한 PHP 6.0 버전이 있었던 것을 감안하여 차세대 버전을 “PHP 7”으로 부르기로 결정한 이후 phpng 가 이에 병합되었다. 스칼라, 리턴 타입 힌팅(return type hinting)등 핵(Hack)의 다양한 언어 기능이 PHP 7에 적용되었다.

PHP 7의 첫 번째 알파 버전이 공개되는 가운데, 각종 평가 수치들은 PHP 7의 퍼포먼스가 HHVM만큼, 어쩌면 그보다 더 나을 것으로 예측하고 있어 PHP가 현대 웹 개발의 니즈에 충실히 발맞추고 있음을 보여주었다. 마찬가지로 PHP-FIG 역시 혁신을 계속하며 프레임워크와 라이브러리의 협력을 장려하고 있다. 가장 최근에는 PSR-7을 채택해 PHP 프로젝트에서 HTTP를 다루는 방식에 변화를 주었다. 유저 그룹, 컨퍼런스, PHPMentoring.org같은 이니셔티브들 역시 최선의 관행, 코딩 표준, 테스팅 등을 PHP 개발자 커뮤니티에 홍보하고 있다.

PHP는 그 자신의 성장과 함께 웹의 성장을 지켜봐 왔다. 처음에는 C 라이브러리의 API 래퍼로 시작한 PHP는 이제 웹 개발에 빠질 수 없는 중요한 의미를 갖는 프로그래밍 언어로 성장했다. PHP 개발자 커뮤니티는 실용주의 정신에 발담근 채 다른 어떤 커뮤니티보다도 열정적이고 의욕적으로 활동하며 커뮤니티에 새롭게 참여하는 이들을 돕고 있다. 지난 20년 간, PHP는 시간을 통한 검증을 받았으며 근래 스크립팅 언어 및 커뮤니티의 동향을 살펴볼 때 앞으로도 여전히 웹 개발에서 중요한 위치와 역할을 맡게 될 언어임이 확인되었다.

선샤인PHP 기조 연설에서 라스무스 러돌프는 과거를 회상하며 다음과 같이 말했다. “별 생각 없이 시작한 작은 프로젝트로 여기까지 올 줄, 20년 전에는 꿈에도 몰랐다.”

그 ‘별 생각 없이 시작한’ 작은 프로젝트를 오늘날 웹 개발의 중요한 일부로 성장시켜 온 러돌프와 PHP 커뮤니티에게 찬사를 보낸다. editor@itworld.co.kr 


출처 : http://www.itworld.co.kr/news/94031



반응형