HTML5의 11가지 불편한 진실?

이 글은 Peter Wayner가 쓴 11 Hard Truths About HTML5 (한국어 번역)이라는 글의 반론이다. 저자는 HTML5에 대한 문제점이라고 조목 조목 적었지만, 사실상 한 두 가지를 제외하고는 새롭지 않은 이슈들이다.

다만, 웹 개발자들이 전반적으로 개발할 때 의식적으로 지켜야할 몇 가지 문제점에 대한 이해도 할 겸 간단하게 정리해 본다.

1. 사용자가 코드를 제어 할 수 있어 보안에 취약하다.
이 문제는 HTML5와 관계 없는 모든 클라이언트 사이드 프로그램의 문제점이다. 이는 프로그램이 네이티브든 스크립트든 클라이언트단 조작과 관계 없이 “보안적으로” 서버단 프로그램이 견고해야 하는 이유이다. 웹 개발자는 서버에서 사용자를 인증하고 데이터는 검증한 후 원격 DB에 잘 보관해야 한다. 클라이언트 기반 기술은 사용자의 경험을 향상시키기 위한 도구로 쓰는 것이 정석이다.

2. 사용자가 로컬 스토리지 데이터를 다루기 어렵다.
이 또한 HTML5의 문제가 아니라 모든 클라이언트 사이드 프로그램의 문제점이다. 데스크톱 앱에서 사용자가 DB를 다룰 수 있는 프로그램이 몇이나 되나? 그리고 그 프로그램을 사용자가 열어본다고 해서 관리할 수 있는가? 로컬 스토리지는 그야말로 쿠키보다 좀 더 나은 저장소를 제공하여 사용자 경험 향상을 위해 일부 데이터를 저장하는 것이다. 지우더라도 서버에서 다시 생성하는 그런 성격의 데이터이다.

3. 사용자가 로컬 스토리지 데이터를 제어할 수 있다.
사용자들이 로컬 데이터를 조작할 수 있다는 문제를 언급하고 있다. 이 부분은 2번과 배치되는 주장이다. 여전히 글쓴이는 HTML5 로컬 스토리지가 왜 존재하는지 이해하지 못하고 있다. 로컬 스토리지에서 조작을 한다고 해서 서버 데이터까지 조작이 가능하다는 시나리오는 개발자의 (능력) 문제이지 HTML5의 문제라고 보기 어렵다.

4. 오프라인 앱에서 데이터 동기화가 어렵다.
HTML5 오프라인 앱과 로컬 스토리지는 웹의 단점을 보완하기 위한 것이지 대체제가 아님을 명심해야 한다. 웹 개발자가 일단 이 두 가지를 쓰려고 마음을 먹었다면, 동기화 문제는 실제로 이슈가 된다. 따라서, 동기화가 큰 이슈가 일으키지 않는 부분에 적절하게 사용하는 것이 중요하다.

5. 클라우드 서버에 있는 데이터도 통제하기 어렵다.
이 또한 HTML5와 상관 없이 (네이티브 앱이든 아니든) 모든 클라우드 기반 앱들의 문제라고 할 수 있다. 클라우드가 유용한 이유는 간편하고 빠른 접근성과 공유 기능 때문이다. 다만, 사용자가 자신의 데이터를 클라우드에 올리는 경우 많은 세심한 주의가 필요하다.

6. 모두에게 똑같은 기능을 제공한다.
이 또한 사실상 HTML5와 상관 없다. 온라인 업데이트 기능을 가진 모든 앱들의 문제라고 볼 수 있다. 물론 네이티브 앱들이 업그레이드 하지 않고 사용할 수 있는 방법이 있지만, 그만큼 웹 기반 앱들도 일부 HTML 버전(정적 버전)도 제공한다.

7. WebWorker를 통제하지 못한다.
이는 웹 워커 뿐만 아니라 CPU를 과용하는 일반적인 악성 프로그램(Malware)에도 충분히 일어날 수 있는 문제이다. 특히, 웹 워커를 통제하지 못하는 취약점은 자바스크립트를 실행하는 브라우저에서 해결해야 할 문제이다. 지금도 대부분 웹 브라우저는 과도한 JS 실행에 대해 사용자에게 알려 주고 중지할지 여부를 확인하는 인터페이스를 가지고 있다. 

8. AV 포맷은 중복으로 제공해야 한다.
HTML5 오디오 및 비디오에 대한 지원 코덱이 브라우저 마다 다른 점 때문에 같은 콘텐츠를 여러 코덱으로 제공해야 하는 문제점에 대한 지적이다. 저자도 HTML5의 문제는 아니라고 밝히고 있지만, 어떤 기술도 커버리지의 문제를 가지고 있다. 심지어 보편적인 웹 표준 조차도 브라우저 마다 표준 지원 정도가 다르다. AV 코덱에 대한 문제는 산업적인 이슈지 기술적 문제라기 보기 어렵다.

9. 개발 자체가 브라우저에 종속적이다.
이는 HTML5에 국한되지 않은 웹 기술의 기본적인 문제라고 할 수 있다. 하지만, 이것이 바로 웹의 보편적 확장에 도움을 준 방법이다. 만약 닷넷이나 자바처럼 클라이언트 VM이 하나였다면, 웹이 이렇게 성공할 수 있었을까?

물론 브라우저에 종속적인 웹 개발은 매우 어렵다. 많은 것을 고려해야 하기 때문이다. 웹 개발자들은 IE6도 빨리 사라지고 웹 브라우저가 하나로 통일 되었으면 하는 꿈을 가지고 있을지 모르지만, 만약 정작 그런 날이 오면 우리는 이 직업으로 밥먹고 살 수 없다.

10. 하드웨어 성능을 관리하기 어렵다.
웹 브라우저들이 성능 향상을 위해 하드웨어 가속을 비롯한 많은 개선을 이루고 있지만, 웹 개발자들이 이를 확인하고 어렵다는 문제다. 글쎄… 많은 웹 브라우저들이 성능 경쟁으로 인해 과도한 데모 (예를 들어, 3D 게임 같은)를 보여 주고 있지만, 사실상 이는 초보적 수준이다. 웹에서 너무 많은 것을 하려는 건 금물이다.

11. 정치가 판을 친다.
HTML5 표준이 소수의 브라우저 개발자들에 의해 좌지우지 된다는 걱정이다. 특정 웹 브라우저의 혁신이 계속될 수록 기능적인 파편화가 계속되기 때문이다. 표준화의 과정이 정치적인 부분을 배제할 수 없지만, HTML5는 수 많은 웹 개발자와 함께 만들어온 표준이며 지금도 W3C와 WHATWG에서 상호 보완적인 역할을 수행하고 있다.

HTML5는 아직 진행 중인 기술이며, 이를 통제하는 주체도 없다. 하지만, 다양한 혁신이 살아 숨쉬고 있는 살아있는 기술이기도 하다. 저자가 권위주의와 민주주의를 예로 들었듯이, 세상엔 폐쇄된 기술 플랫폼 만큼 “선택 가능한” 개방형 기술도 존재해야 한다.

이것이 HTML5가 있는 이유중 하나이다.

여러분의 생각

  1. 날카로운 분석 잘 보고 갑니다. 많은 분께 도움이 될 것 같군요.

의견 쓰기

이름* 이메일* 홈페이지(선택)