2015.01.14

친구에서 적으로··· PHP와 Node.js의 전쟁 이야기

Peter Wayner | InfoWorld

각자 다른 길을 걷게 된 오랜 친구 사이의 '전쟁'은 할리우드 영화에서 흔히 찾아볼 수 있는 플롯이다. 이 때 한 사람이 지금까지 다른 사람의 영역이었던 무언가를 욕심내면서 전쟁이 시작되는 경우가 많다. 프로그래밍 언어 부문에서도 이런 일이 일어나고 있다.



치열한 전쟁은 Node.js의 등장으로 시작됐다. PHP와 자바스크립트(JavaScript)는 한때 파트너로 인터넷 세상을 함께 지배했지만, 지금은 개발자 '점유율'을 놓고 서로 치고 받으면서 일전을 벌이고 있다.

과거, 두 언어가 협력한 방식은 간단했다. 자바스크립트는 브라우저의 '디테일'을 처리하고, PHP는 포트 80과 MySQL 사이에 존재하는 서버 수준의 작업 일체를 관리했다. 인터넷의 많은 중요 요소들을 계속 지원해온 행복한 '연합'이었다. 

그러다 누군가 서버에서 자바스크립트를 구현시켰다. PHP를 사용하지 않고도 차세대 서버 스택을 구축할 수 있게 된 것이다. 한 언어만 가지고 클라이언트에서 실행되는 Node.js와 프레임워크들을 구축할 수 있게 됐다. 적어도 일부에게는 "모든 곳에 자바스크립트가 있다"가 마치 '주문'처럼 대두됐다.

물론 아직까지는 '마지막 장'이 완성되지 않았다. Node.js의 깨끗함과 도처에 위치한 자바스크립트의 편리함을 소리 높여 반기는 사람이 있지만, 동시에 PHP의 오랜 안정성과 깊은 코드 기반에 만족하는 사람들도 있다.

PHP가 서버 부문에서 갑작스레 부상한 신생 강자에게 반격을 가할까? 아니면 자바스크립트가 오랜 친구를 무너뜨리고 세상을 지배할까? 팝콘을 먹으며 영화를 감상하듯 느긋하게 지켜볼 일이다.

PHP가 우세: 코드와 콘텐츠의 혼합
타이핑을 하면서 웹사이트에 생각한 내용을 텍스트로 집어 넣거나, 프로세스에 가지를 더하고, URL의 일부 파라미터에 따라 예쁘게 다듬어 나가고 싶을 수 있다. 또는 데이터베이스에서 가져온 데이터나 텍스트를 통합하고 싶을 수 있다.

PHP에서는 마법과 같은 PHP 태그를 열어, 단 몇 초 만에 코드 개발을 시작할 수 있다. 탬플릿이 필요 없다. 모든 것이 탬플릿이기 때문이다. 추가 파일이 필요 없다. 아키텍처를 발전시킬 필요도 없다. 손가락으로 실현시킬 프로그램 논리만 있으면 된다.

Node의 우세: 걱정거리를 분리
하지만 코드를 콘텐츠와 섞다 보면 '절름발이'가 될 수 있다. 처음 2~3번 정도는 코드를 HTML과 섞는 작업이 재미있을 것이다. 그러나 얼마 지나지 않아, 코드 기반이 '헝클어진 논리 덩어리'가 되고 만다.

출중한 프로그래머라면 구조를 추가시키고, 코스메틱 계층을 논리 계층과 분리시킨다. 다른 프로그래머가 훨씬 쉽게 파악, 유지관리 할 수 있기 때문이다. 모델, 뷰, 컨트롤러를 분리하는 것이 낫다는 사실을 알고 있는 프로그래머는 Node.JS를 실행시키는 프레임워크를 구축한다.

PHP가 우세: 깊은 코드 기반
웹은 PHP 코드로 가득하다. (워드프레스, 드루팔, 줌라) 등 대다수 인기 플랫폼들이 웹사이트 구축에 PHP를 사용한다. 오픈소스는 물론 플러그인도 있다. 어디를 가도 PHP 코드를 찾을 수 있다. 즉시 다운로드 받아, 자신의 필요에 맞게 수정해 이용하면 된다.

Node의 우세: 더 현대적인 기능
우수한 오픈소스 PHP 파일이 많지만 일부는 8년 묵은 워드프레스 플러그인이다. 몇 년 동안 업데이트가 되지 않은 코드를 만지작거리는데 시간을 투자할 사람이 있을까? Node.js 플러그인은 훨씬 새롭다. 최신 아키텍처 기법이 적용되어 있다. 최신 웹 앱을 이해하는 프로그래머들은 클라이언트에 더 많은 지능을 넣기 위해 이를 이용하게 될 것이다.

PHP가 우세: 평이성(어느 정도)
PHP의 변수와 기본 기능은 소수다. 데이터를 포트 80에서 데이터베이스로 옮기거나, 데이터베이스에서 포트 80으로 다시 옮기는 것을 제외하고는 별다른 큰 일을 하지 않는 얇은 계층이다. 원래 그런 목적에서 개발된 언어이다. 최신 데이터베이스는 마법과도 같은 툴이기 때문에 무거운 작업을 떠넘기는 것 또한 말이 된다. PHP는 아주 복잡하지 않은, 적당하게 복잡한 작업을 처리하는 평이성을 갖고 있다.

Node의 우세: 클로저 등의 정교성
자바스크립트는 일부에게는 까다로운 소소한 특성들을 많이 갖고 있다. 그러나 현대적인 신텍스와 클로저(Closure) 등 유용한 기능을 자랑하는 현대적인 언어라는 장점이 더 크다. 쉽게 재구성 및 확장해 jQuery 같은 강력한 라이브러리를 구현할 수 있다. 객체로 기능을 배포할 수도 있다. 제약이 적다는 의미다.




2015.01.14

친구에서 적으로··· PHP와 Node.js의 전쟁 이야기

Peter Wayner | InfoWorld

각자 다른 길을 걷게 된 오랜 친구 사이의 '전쟁'은 할리우드 영화에서 흔히 찾아볼 수 있는 플롯이다. 이 때 한 사람이 지금까지 다른 사람의 영역이었던 무언가를 욕심내면서 전쟁이 시작되는 경우가 많다. 프로그래밍 언어 부문에서도 이런 일이 일어나고 있다.



치열한 전쟁은 Node.js의 등장으로 시작됐다. PHP와 자바스크립트(JavaScript)는 한때 파트너로 인터넷 세상을 함께 지배했지만, 지금은 개발자 '점유율'을 놓고 서로 치고 받으면서 일전을 벌이고 있다.

과거, 두 언어가 협력한 방식은 간단했다. 자바스크립트는 브라우저의 '디테일'을 처리하고, PHP는 포트 80과 MySQL 사이에 존재하는 서버 수준의 작업 일체를 관리했다. 인터넷의 많은 중요 요소들을 계속 지원해온 행복한 '연합'이었다. 

그러다 누군가 서버에서 자바스크립트를 구현시켰다. PHP를 사용하지 않고도 차세대 서버 스택을 구축할 수 있게 된 것이다. 한 언어만 가지고 클라이언트에서 실행되는 Node.js와 프레임워크들을 구축할 수 있게 됐다. 적어도 일부에게는 "모든 곳에 자바스크립트가 있다"가 마치 '주문'처럼 대두됐다.

물론 아직까지는 '마지막 장'이 완성되지 않았다. Node.js의 깨끗함과 도처에 위치한 자바스크립트의 편리함을 소리 높여 반기는 사람이 있지만, 동시에 PHP의 오랜 안정성과 깊은 코드 기반에 만족하는 사람들도 있다.

PHP가 서버 부문에서 갑작스레 부상한 신생 강자에게 반격을 가할까? 아니면 자바스크립트가 오랜 친구를 무너뜨리고 세상을 지배할까? 팝콘을 먹으며 영화를 감상하듯 느긋하게 지켜볼 일이다.

PHP가 우세: 코드와 콘텐츠의 혼합
타이핑을 하면서 웹사이트에 생각한 내용을 텍스트로 집어 넣거나, 프로세스에 가지를 더하고, URL의 일부 파라미터에 따라 예쁘게 다듬어 나가고 싶을 수 있다. 또는 데이터베이스에서 가져온 데이터나 텍스트를 통합하고 싶을 수 있다.

PHP에서는 마법과 같은 PHP 태그를 열어, 단 몇 초 만에 코드 개발을 시작할 수 있다. 탬플릿이 필요 없다. 모든 것이 탬플릿이기 때문이다. 추가 파일이 필요 없다. 아키텍처를 발전시킬 필요도 없다. 손가락으로 실현시킬 프로그램 논리만 있으면 된다.

Node의 우세: 걱정거리를 분리
하지만 코드를 콘텐츠와 섞다 보면 '절름발이'가 될 수 있다. 처음 2~3번 정도는 코드를 HTML과 섞는 작업이 재미있을 것이다. 그러나 얼마 지나지 않아, 코드 기반이 '헝클어진 논리 덩어리'가 되고 만다.

출중한 프로그래머라면 구조를 추가시키고, 코스메틱 계층을 논리 계층과 분리시킨다. 다른 프로그래머가 훨씬 쉽게 파악, 유지관리 할 수 있기 때문이다. 모델, 뷰, 컨트롤러를 분리하는 것이 낫다는 사실을 알고 있는 프로그래머는 Node.JS를 실행시키는 프레임워크를 구축한다.

PHP가 우세: 깊은 코드 기반
웹은 PHP 코드로 가득하다. (워드프레스, 드루팔, 줌라) 등 대다수 인기 플랫폼들이 웹사이트 구축에 PHP를 사용한다. 오픈소스는 물론 플러그인도 있다. 어디를 가도 PHP 코드를 찾을 수 있다. 즉시 다운로드 받아, 자신의 필요에 맞게 수정해 이용하면 된다.

Node의 우세: 더 현대적인 기능
우수한 오픈소스 PHP 파일이 많지만 일부는 8년 묵은 워드프레스 플러그인이다. 몇 년 동안 업데이트가 되지 않은 코드를 만지작거리는데 시간을 투자할 사람이 있을까? Node.js 플러그인은 훨씬 새롭다. 최신 아키텍처 기법이 적용되어 있다. 최신 웹 앱을 이해하는 프로그래머들은 클라이언트에 더 많은 지능을 넣기 위해 이를 이용하게 될 것이다.

PHP가 우세: 평이성(어느 정도)
PHP의 변수와 기본 기능은 소수다. 데이터를 포트 80에서 데이터베이스로 옮기거나, 데이터베이스에서 포트 80으로 다시 옮기는 것을 제외하고는 별다른 큰 일을 하지 않는 얇은 계층이다. 원래 그런 목적에서 개발된 언어이다. 최신 데이터베이스는 마법과도 같은 툴이기 때문에 무거운 작업을 떠넘기는 것 또한 말이 된다. PHP는 아주 복잡하지 않은, 적당하게 복잡한 작업을 처리하는 평이성을 갖고 있다.

Node의 우세: 클로저 등의 정교성
자바스크립트는 일부에게는 까다로운 소소한 특성들을 많이 갖고 있다. 그러나 현대적인 신텍스와 클로저(Closure) 등 유용한 기능을 자랑하는 현대적인 언어라는 장점이 더 크다. 쉽게 재구성 및 확장해 jQuery 같은 강력한 라이브러리를 구현할 수 있다. 객체로 기능을 배포할 수도 있다. 제약이 적다는 의미다.


X