Search Results for '웹 프로그래밍'

1 POSTS

  1. 2007.03.14 웹프로그래밍은 기술적 퇴보? 5

웹프로그래밍은 기술적 퇴보?

Posted 2007. 3. 14. 00:27
Ajax 유명한지는 좀 되었지만, 최근 Ajax 기반의 각종 라이브러리들(Prototype, Dojo, Mochikit, jQuery, YUI 등)이 활발히 개발되면서 또 다른 전성기를 맞고 있는 것 같다. 그리고 Ajax하면 항상 하는 말이 크로스 플랫폼, 크로스 브라우저 등등 하는 개념이다. 그간 프로그래밍 언어만 보느라 웹 프로그래밍에 별로 관심이 없었는데, 시간 내서 Ajax와 웹 프로그래밍 개념들을 좀 공부해보니 뭔가 이상하다. Ajax 이거 별로 매력적이지 않다.


크로스 브라우저? (혹은 크로스 플랫폼)

표준인 HTML(혹은 XHTML)과 CSS, 자바스크립트만 사용하면 어떤 플랫폼, 브라우저에서든 동작하지는 프로그램을 만들 수 있을까? 결론부터 말하면 만들 수 있다. 하지만 절대 쉽게 만들지 못한다.

일단 Ajax의 근간이 되는 XMLHttpRequest부터 심상치 않다. IE는 ActiveX 컨트롤이고 다른 브라우저는 이 기능만 훔쳐다가 네이티브 오브젝트로 만들어놨다. 결국 브라우저에 맞춰서 if else... 구문이 잔뜩 들어박혀야 한다. 그래도 XMLHttpRequest야 공식적으로 표준화된 적도 없고 그냥 어쩌다 보니 많이 쓰인 API인 셈이니 일단 넘어가자.

DOM은 사정이 어떨까? DOM이라 하면 W3C가 적극 밀어주는 표준 API가 아닌가! 하지만 브라우저 별로 또 구현을 조금씩 다르게 해놨다. 특히 IE가 말썽인데, 항상 표준대로 구현하지 아니하고 프로퍼티 이름을 한 두 개씩 바꿔서 클라이언트 코드에 if else... 를 박지 아니할 수 없게 한다. 또 DOM 레벨 2 이벤트 모델 표준 제정에 직접 참여한 MS가 왜 DOM 2 이벤트 모델을 제공 안 한단 말인가. 표준 회의에는 왜 간 건지 의심스럽다.

JavaScript가 너무 다양한 버전으로 존재하는 것도 문제다. 현재 JavaScript 1.5 기반이면 거의 통하기는 한다. (구버전 IE는 여기서조차 Array의 중요 메서드 몇 개를 빼먹었다.) 하지만 Firefox가 JavaScript 1.6, 1.7로 올리고 일부 Array API를 네이티브로 내려서 속도 향상을 시도해도, 크로스 브라우저에 맞추려면 이런 기능을 적극 활용하기가 힘들다.

CSS도 브라우저 별로 뭐는 되고, 뭐는 안 되고 이런 게 너무 많다. 이른바 방탄웹으로 유명한 책이 처음 하는 얘기가 각 브라우저 CSS 처리기의 버그를 이용해 여러 브라우저에서 동일한 화면을 만들어내는 데 있다는 걸 보고 충격 먹었다. 버그에 의존하는 코드라니, 정말 고통스러운 개발 환경이다.

여기까지만 보면 UNIX와 Windows, MacOS X 등에서 컴파일되기 위해 #ifdef #endif를 때려 박은 C 언어 라이브러리랑 별로 차이가 없어 보인다. C 언어는 안 되면 아예 컴파일을 못하기라도 하는데, 웹 프로그래밍은 결국 같은 바탕에서 출발해서 조금씩 미묘하게 다른지라 잘될 것 같기도 하고 안 될 것 같기도 한 애매한 상태이다.

결국은 이런 플랫폼(혹은 브라우저)의 차이를 잘 감춰주는 Ajax 라이브러리를 이용하는 방법 밖에 없다. 현재 Ajax라이브러리의 춘추전국시대(?)처럼 보이는데, 정말 쓸만한 라이브러리 몇 개로 통폐합 될 때까지는 어떤 라이브러리를 골라야 할지도 고통이 따를 게다.

웹프로그래밍이라는 거 실제로 필요한 로직을 만드는 것보다 사소하게 신경 써야 할 일이 너무 많다. Frederick P. Brooks의 말을 빌리자면 아직까지 Accidental Complexity가 너무 심하다. 사실 데스크톱에서 RAD 툴로 어플리케이션 만들어 본 사람이라면 지금의 웹프로그래밍은 정말 고통스러운 거 아닐까? 화려한 Ajax라고 해봐야 결국 데이터 조금 주고 받고 화면 이쁘게 꾸미는 것 밖에 없지 않은가? Ajax 라이브러리가 발전하고 예전에는 안 되던 각종 효과를 보여주는 것만으로 놀라는 것도 이해하지만, 실상 웹이랑 담쌓고 데스크톱 개발자가 들어와서 보면 정말 웹프로그래밍은 프로그램 개발에 관해서는 기술적으로 퇴보한 셈이다.

원래 큰 기술적인 도약이 있기 전에는 한 단계 퇴보하는 게 IT 역사의 법칙이긴 하다. 예를 들어, 과거 TP Monitor라고 해서 비행기 예약시스템 등에 도입되어 사용된 트랜잭션 시스템은 이미 기술적으로 성숙해 있었는데, 인터넷 초기에 나온 WAS 서버들은 트랜잭션 처리 면에서는 오히려 기술적으로 퇴보했다. 인터넷이 크게 성장하면서 지금에 와서는 예전 수준을 넘어섰지만 플랫폼의 변경과 같은 큰 기술적인 변화 속에서는 다른 기술이 순간적으로 퇴보하는 것은 사실이다.

지금은 웹 프로그래밍이라는 것도 어쩌면 잔뜩 웅크린 상태에서 다음 도약을 노리는 게 아닐까 싶다. 하지만 경계해야 할 점은, 멋진 개발 프레임워크와 도구가 갖추어지고 나면, 지금 Ajax 프로그래머의 노하우는 한줌의 먼지가 될지도 모른다는 사실이다.