HTML5로 전향하려고 하는 개발자들, 무엇을 준비해야 하는가.

최근 우리나라도 아직은 아주 활발하지는 않지만 html5 라는 기술이 주목을 받으면서 개발자들이 점차 너도 나도 하는 “앱” 에서 조금씩 웹을 바라보는 것 같다. html5라 하면 웹도 그냥 웹이 아니다. “웹앱” 이지.

웹앱이라는 것은 아직은 생소하지만 앱은 앱이다. 아이폰, 안드로이드 앱처럼 이제 웹 기술도 서서히 발전하면서 네이티브 앱(안드로이드, 아이폰 등 특정 플랫폼에서 동작하는 어플리케이션)의 기능들을 따라잡으려고 하고 있다. 이중 가장 활발한 것은 Sencha Touch 나 jQuery Mobile 같은 모바일 UI 부분이다.

그럼 과연 우리가 네이티브 앱을 대처해서 html5로 완전히 방향을 돌리기에는 적합하는가?

글쎄, 내 개인적인 생각이지만 답은 “현재는 아니다.” 이다. 왜 센차 터치나 제이쿼리 모바일 등 웹앱의 세계에서 아직까지 UI , UX적인 부분만 발전을 하는지, 그것을 잘 생각해 보면 사실상 웹앱이라 해도 기능적인 부분은 기존의 웹 서비스를 개발하던 것과 별반 다를게 없기 때문이다. 오히려 기존의 네이티브 앱들 보다 서버측과 데이터 베이스 개발에 신경을 더 써야 할 것이다. 결국 일반적인 웹 개발밖에 더 되지 않는다. 앱 개발자들이 웹앱 개발로 돌아선다? 그러면 서버단 개발을 하지 않는 한 그건 단순 퍼블리셔 정도의 의미밖에 되지 않는다.

앱은 앱 자체가 동작하는 기능이 있다. 네이티브 앱의 기능적인 부분을 웹에서 구현하려면, 자바스크립트 기술을 써야 하겠지만 솔직히 말해 자바스크립트는 오픈되어 있기 때문에 보안적인 것을 고려하면 그닥 구미가 땡기지 않는다. 스크립트, 웹 스토리지 정도의 기능을 쓰면 될까? 웹캐시? 그런것들은 단지 앱이 쓸 수 있는 기본적인 데이터를 가지고 있을 수 있는 수단밖에 되지 않는다.

웹이 앱을 지향한다면, 가장 크게 고려해야 할 것이 “오프라인” 일 것이다. 사람들이 왜 웹앱에 크게 관심이 없는가, 그것을 잘 생각해 본다면 개인적인 생각으론 첫째는 느려서(아마도 3G를 통해 서비스 받을 터이니) 둘째는 인터넷이 안되면 안되니깐. 아마 이 두가지가 가장 클 것이다.

그럼 이 한계를 극복하려면 어떻게 해야 하는가? 결국 오프라인인데, 아직 html5는 데이터적인 측면을 제외하고는 뭐 자바스크립트 함수가 확장되었다고 치지만 결국 오픈이다. 아무리 자바스크립트를 인라인으로 짠다고 해도 그것도 당연 소스를 볼 수 있다. Ajax를 통해 서버사이드 통신을 한다고? 그럼 인터넷이 들어가는데, 그럼 오프라인이 아니다. 그런다고 모바일 웹에서 XecureWeb이 돌아갈리도 없고..

결국, 아무리 개발을 열심히 스크립트로 캔버스 써다가 아주 훌륭한 2D든 3D든 뭔가 앱을 만들었다 쳐도 데이터는 다 빼올 수 있다. 웹앱의 해킹 가능성이 가장 높고, 그럼 너도 나도 똑같은 앱을 만들 수 있다.아이폰의 앱이 그렇게 많은 이유가 무엇인가? 제조사의 철저한 소스코드 보안과(물론 탈옥하면 뚫리긴 하지만) 안정적인 앱스토어? 예를들어 아이폰으로는 패킷 스니핑을 할 수 없으니 서버와 통신하는 URL은 알아내기 힘들것이다. 부가적으로 앱스토어 수익과iOS플랫폼의 수요 등등이 있겠지만 개발적인 입장에서는 내가 만든 저작물을 지키는게 가장 우선이다.

즉, 보안, 최소한의 자바스크립트 보안책에 대해서 html5에서 나오지 않는다면 단일 오프라인 앱으로는 사실 서비스하기 힘들다는 것이다. 이 얘기는 즉 아직 “웹앱” 을 만들 시기는 아니라는 것이다. 현재까지는 HTML5로 우리가 바랄 수 있는 것은 “모바일 웹” 혹은 “크로스 웹” 일 것이다. 결국 서버사이드를 껴야 한다. 거기에 사용자를 배려한 UI/UX(예를 들어 finger touch나 애니메이션 기능)를 통해 “컨텐츠” 로 승부를 걸어야 한다.

기존에 웹도 마찬가지이다. 비록 쓸때없이 Active X나 플래시 등 비표준 플러그인이 좀 껴서 지저분해지긴 했어도 HTML5가 이제 이 비표준 플러그인을 꼭 써야하는 부분, 기존까지 RIA(Rich Internet Application)이라 불려온 리치한 부분들을 커버해 줄 것이다.

그래서 생각건데 아직까지는 웹앱으로 가려는 사람들은 웹앱(클라이언트) 측면에서는 서버사이드와의 안정적인 TR송수신, 데이터 싱크 등 그런 부분에 집중하고 그 전에 아주 안정적인 서버를 구축하려는 노력을 먼저 하는 것이 더 낫다고 생각한다. 왜냐면 우선 “웹앱” 으로 간다고 생각하는 사람들은 자신이 가지고 있는 기술은 웹 관련 기술인데 “앱”을 생각하면 아이폰 앱처럼 뭔가 개인 혹은 소규모에서 만든 앱의 성공적인 모습을 떠올릴 것이다. (필자 또한 그렇다.) 그런데 아직 스크립트 보안이 강화가 되지 않았으니 html5는 웹의 크로스 뷰어로써 역할밖에 되지 않는다. 모든 화면에서 최적화되게 보이는 웹이 가장 중요시 되는 것이다.

그런데 서버단까지 해야 하냐? 웹앱은 일반 웹처럼 큰 규모로 만들어야 하는 것도 아니고, 통일된 템플릿 내에서의 정보 제공이 가장 중요하다. 클라이언트로 정보를 전달해 주는 “표준” 만 잘 설계한다면 아주 빠른 개발이 가능하다. 그래서 서버단을 알고 C/S를 빠르게 개발할 수 있는 능력이 필요하다는 것이다.

그리고 좀 더 여건이 된다면 최근 나오는 모바일 UI프레임워크를 접하여 최소한의 UI정도는 만들 수 있도록 하고 modernizr나 미디어 쿼리 등을 배워서 어떤 화면 규격에도 컨텐츠를 보여줄 수 있도록 하는 능력이 필요하다. 뭐 물론 요즘 드림위버 CS 5.5에서는 jQuery Mobile 통합과 미디어 쿼리 제공으로 보다 쉽게 만들 수 있지만, 이런 툴은 지속적으로 나오겠지만 정작 이런 기능들은 생각보다 이해하기 쉽다.

정리해보면 이렇다. 우선 안정적으로 스크립트 보안 혹은 대처 수단이 나오기 전까지 오프라인 저장소 등에 의존하지 않고 당장은 나올 웹앱들은 다 Ajax와 URL을 기반으로 하는 서버와의 통신, 즉 html5가 크로스 브라우저/디바이스 가 가능한 뷰어의 역할을 할 테이니 “ 빠른 개발과 안정적인 C/S통신을 위해 서버군과 모바일 UI프레임워크, 크로스 브라우징에 대하여 공부한다. 그리고 향후 스크립트 보안 등이 강구가 되었을때를 대비하여 jquery, prototype등 자바스크립트 라이브러리를 공부한다.

이렇게 적어놓고 보니 사실 모바일 UI나 크로스 브라우징/디바이스 를 제외하고는 웹 개발을 위한 공부밖에 더는 없다. 결국 html5, 웹앱도 “웹” 아니겠는가. 앞으로 우리의 디바이스는 갈수록 빨라지고 계속적으로 온라인 상태를 유지하게 될 것이다. 보이는 곳이 어떻게 됬던 간에 웹에서 변하지 않는 부분은 컨텐츠를 저장하거나 제공하는 서버군과 데이터 베이스군은 분명 존재한다는 것이다. 

결론은, 아직은 HTML5가 네이티브 앱을 따라가려고 열심히 노력중이니 그 전에 웹의 기본에 충실하자. 그리고 슈퍼 웹 개발자가 되자.