지난번 제가 크로스컴파일 관련해서 애플을 비난한 이후(시끄럽게 해드려 죄송합니다.)에 오늘 작성한 글입니다.

http://blog.naver.com/fstory97/70085487936

물론 제 개인적 생각입니다.

여기에 내공 높으신 기술자분들도 많을텐데.. 문제 있는 부분 있으면 지적 부탁드립니다.

저도 배워야죠.

--------------------------- 이메디아님의 의견으로 본문을 직접 올립니다. -----------------------------

1. 거세지고 있는 Html5(애플) vs 플래시(어도비)

 최근 애플과 플래시 논란이 거세지면서 플래시에 대한 비난이 거세지고 있습니다. 플래시가 애플의 생태계나 향후 전략에 방해가 될 수 있는 비즈니스 플랫폼이란 것에는 동의하나 플래시 기술에 대한 오해가 쌓이고 있는 것 같아 포스팅을 해보려고 합니다.  저는 대학교 당시 플래시를 처음 접했으며취미로 그래픽에 대한 기술을 습득했고 브라우져 개발 일에도 관여해봤습니다. 때문에 조금은 양쪽다 알고 있다고 생각하며, 또한 표준은 지켜지는 것이 좋고, 그것은 더 많은 비즈니스에 대한 비용절감과 이기종플랫폼간의 호환성을 극대화시켜준다고 믿습니다. 

 

함께 읽어보시면 좋을 제 다른 포스팅

 ActiverX를 대체할 HTML5의 운명을 쥔 구글 (http://blog.naver.com/fstory97/70074526497)

 모바일 게임으로서의 웹트랜드, Html5냐 flash냐(http://blog.naver.com/fstory97/70068825859)

 

 하지만, 애플과 플래시 논란에서 쌓여가는 이상한 플래시에 관한 잘못된 지식들과 편견은 이해하기가 어려워 글을 써봅니다.

 

2. 진짜 HTML5와 플래시는 레이어 부터 다르다.

 먼저 플래시와 html5의 차이부터 말씀드리겠습니다. 플래시는 어도비사에서 개발한 플랫폼입니다. 액션스크립트란 랭기지로부터 키프레임기반의 애니메이션저작툴, 또한 이를 컴파일해서 생성된 플래시 바이너리 파일, 플래시를 브라우져 플랫폼에 포팅하여 구현된 플래시 플레이어 플러그인으로 구성됩니다. 플래시는 저작언어, 툴, 생성(컴파일), 플레이어까지 구체적인 어도비에서 생산 유통하는 어플리케이션입니다.
 그에반해 html5는 공개된 마크업언어이며 w3c주관으로 그 spec이 정해집니다. 그리고 그 기능을 구현하는 것은 각 브라우져 개발사로 ms의 ie, 모질라재단의 파이어폭스, 애플의 사파리, 구글의 크롬 등등이 있습니다. 따라서 html5는 실제 어플리케이션이 아닌 spec입니다. 두 레이어를 비교하면 플래시에서 액션스크립트 규약정도에 해당하는 것이고, 플래시 플레이어가 바로 브라우져 자체가 됩니다.

 

 여기서부터 애플의 논란은 삐걱거립니다. 구글은 여기서 아예 언급을 안하고 있죠. Html5와 플래시는 성능 비교대상이 될 수 없습니다. 왜냐면 html5의 구현체는 하나가 아니기에 성능이 브라우져별로 제각각일 수 밖에 없다는 겁니다. 크롬과 ie의 성능 차이는 여기서 발생하는 겁니다. Html5가 플래시보다 빠르고 안정적이다 ? 한마디로 잘라말하면 비교대상이 아닙니다. 차라리 사파리의 html5보다 플래시가 빠르고 안정적이다. 이것이 비교 대상이 되는 것이죠.

 

3. 동영상 플레이어를 독점한 플래시가 악이다? 선후관계가 틀렸습니다.

 또한 동영상 플레이가 html5와 많이 비교되면서 마치 플래시를 악인양 취급하는데, 선후관계가 틀린겁니다. 두개가 모두 있었는데 플래시가 표준을 지키지 않고 시장을 잠식했다면 맞는 것 이겠지만, html5의 동영상 플레이 마크업은 그동안 spec에 없고 플러그인으로 처리하던 부분을 통일하고자 이제서야 나온 스펙이란겁니다. 플래시와 ax로 전 웹의 멀티미디어가 뒤덮히는 동안 아무것도 안한 w3c야 말로 오히려 게으른 것이죠. 증강현실 브라우징은 또 w3c가 아닌 다른곳에서 표준이 논의 되고 있다고 하니.. 언젠가는 또 html6규격에서는 이를 대체하겠다고 나서거나 이를 포함할지 모르겠습니다. 사실 동영상 외에도 플러그인을 대체하기 위한 다른스펙들도 html5에는 추가되있습니다.

 

4. 애플의 진짜 타겟은 플래시가 아니라, 플래시의 에코

 잠깐 다시 앱스토어로 돌아오겠습니다. 저작, 배포, 플레이 이 모든 것을 가지고 있는 또하나의 회사가 바로 애플입니다. 여기에 하나 더 애플은 앱스토어란 유통채널 까지 손에쥐고 있습니다. 플래시는 유통채널에는 손을 대지 않습니다. 플래시 저작툴을 구매하거나, 혹은 플래시 동영상을 배포할때 수익을 발생합니다. 플레이는 브라우져사로부터 라이센스를 받을겁니다. 물론 아이폰의 사파리에는 공짜 혹은 아쉬운 자기들이 더 하겠다고 난리겠죠. 이때문에 플래시 어플은 이미 앱스토어보다 더 많은 수가 유통되고 있습니다. 간단하게는 사이트의 네비게이션 메뉴부터 크게는 mmorpg까지 많은 영역을 플래시의 플랫폼이 사용되고 있습니다. 때문에 이 거대한 시장이 애플로 들어오는 것은 ibm pc시장과 뒤섞이게 되는 것이니 그리 달갑지 않을 것입니다.

 

 - 교육 시장, 아이폰의 UX이상의 경험을 제공하는 인터렉티브한 프로그램

  특히 애플이 향후 진출 예정 중인 교육, 미디어 유통에 관해서는 현재 플래시의 시장을 오히려 공략해야하는 입장입니다.
 아이패드의 주요 타겟중 하나는 분명 라이트 유저입니다. 그들의 많은 사람들 중 돈을 내고 구매하는 것이 방송과 교육 컨탠츠입니다. 일방적인 방송의 경우야 html5나 혹은 그냥 오픈된 동영상 포맷으로 컨버팅 하는 건 그리 어려운일이 아닙니다. 그러나 인터렉티브한 교육용컨탠츠는 어떨까요? 쥬니버, 야후 꾸러기, 심지어는 정기적으로 실식되는 기업 성희롱, 보안교육용 컨탠츠. 이는 모두 플래시 기반입니다.

 

 - 플래시는 쓸모 있어서 존재하는 겁니다.
 왜일까요? 이는 플래시의 장점 때문입니다.

 1) 벡터기반의 좋은 저작툴

이러한 컨탠츠를 비트맵 기반의 애니메이션으로 만든다면 과거 셀에니메이션 처럼 한장한장 그려야 합니다. 혹은 html5의 캔버스나 vrml기술을 이용하려면 현재로서는 적당한 저작툴이 없습니다. 애니메이터들은 프로그래머가 아닙니다. 크로스컴파일에 대한 이슈를 애플이 건드렸지만, 향후 플래시의 주 타겟중 하나는 결국 못하게된 앱도 있겠지만 html5도 분명 존재할겁니다. 그러나 현재는 없습니다. 따라서 html5로 이러한 교육용 컨탠츠를 만든다면 지금처럼 인터렉티브한 교육컨탠츠를 만드는 것은 불가능합니다.

 2) 적은 크기의 바이너리
 또한 플래시는 작습니다. 플래시가 무겁고 네트워크 비용이 더 나가는 거 아니냐고 어떤 댓글을 보았는데, 플래시는 ajax같은 html5기술에 비해 훨씬 작은 대역폭을 차지합니다. 일반적으로웹은 비트맵기반의 이미지파일을 이용하는데 반해 플래시는 벡터기반의 이미지기때문에 그 크기가 훨씬작습니다. 대신 연산비용이 더커서 플래시가 뜨면 cpu가 많이 올라간다는 이야기를 하는 것이죠. 물론 이것도 html5에서는 벡터기반이 가능해집니다. 그러나 역시 cpu는 많이 올라갈겁니다. 플래시가 하던 브라우져가 하던 랜더링하기 위해서는 연산을 해야하니까요. 그리고 무엇보다도 html은 마크업 언어로 plain text로 소스형태로 넘어옵니다. 이를 파싱하고 다시 인터프리터에 넣고 연산하고 랜더하는 과정이 같은 기능을 하는 플래시라면 바이너리파일을 가상머신에 결합해 수행하니 파일크기도 훨씬 작고 최적화 될 수 밖에없죠.
 물론 이론적으로 그렇다는 거지 어도비가 플래시구현을 거지같이 했다면 기능에 따라 성능저하가 있을 수는 있습니다.

 3) 이 기종 호환성

 플래시의 플러그인은 대부분의 브라우져에서 지원합니다. 액티브X로 대표되는 인터넷 뱅킹의 대안이 플래시가 나왔을 정도로 말이죠. 그때, 저는 플래시도 표준은 아니다라고 말했었는데, 그때 분위기는 어디로 갔는지 모르겠군요. 표준만이 중요한게 아닙니다. 시장이 중요한것입니다. mp3파일이 표준이라 많이 사용되는것이 아닙니다. 

 

5. 왜 HTML5가 등장했는가? 모바일에서의 HTML

원점으로 돌아와서 html5가 왜 등장했는지부터 알아야합니다. 바로 멀티미디어와 ria때문인데, 이러한 배경에는 기계성능의 향상이 있습니다. Html5가 모바일에 적합하다는 건 구형 플래시가 터치에 적합하다는 것과 마찬가지로 목적 자체를 잊어버린겁니다. Html5에 멀티터치 spec이 존재하나요? 

 물론 다행스럽게도 모바일의 성능은 이제 과거의 pc수준에 근접해졌습니다. 따라서 굳이 나눌 필요가 없어졌죠. 플래시가 그동안 모바일에 포팅되면서 느리다 뻑난다 욕을 먹었던 가장 큰 이유는 html5와 마찬가지로 pc와 모바일의 통합환경을 제공하겠다는 때이른 욕심 때문이었습니다. 아이폰과 피쳐폰을 비교하면서 피쳐폰의 소프트웨어가 거지같다고 말한건 잘못된겁니다. 초창기 skvm은 value를 255개까지 밖에 선언하지 못했고, call stack개수도 제한이 있는 수준이었습니다. 그 이후 플래시 라이트가 돌아가게된 핸드폰은 아이폰의 수분의 1정도 성능입니다.
 향후 모바일에 html5를 지원하겠다고 하는 것은 모바일의 성능이 그만큼 올라갔음을 의미하는 겁니다. Wap에서 html4의 풀브라우징기반으로 바뀐것 또한 이러한 기술적배경이 있었기 때문입니다.  html5와 모바일과 pc시장이 다르다고 외치는 잡스의 말에는 모순이 있는 것입니다. 그리고 무엇보다도 잡스의 밑그림에는 모바일 만 있는 것이 아니라 에코 전체의 그림이 있습니다. Mac과 아이폰을 떨어뜨려 생각하고 있지 않다는 것을 오히려 그가 그런말을 하면서 더 확실해진거죠. 아마도 빠른 시일내에 플래시에 준하는 저작툴을 개발하려 하지 않을까 싶습니다. 이미 있는데 제가 모르는건가요?
 

6. 플래시의 가능성은 HTML5로 대체 가능한 플레이어가 아니라 플래시의 플랫폼입니다.
 html5와 플래시 이 두개는 서로 비교가 가능한 것이 아니라고 말씀드렸습니다. 왜냐하면 레이어가 다르기 때문이죠. 플래시 플랫폼은 html5의 저작툴이 될수도 있는 가능성을 지니고 있습니다. 그리고 그러한 가능성을 이미 앱을 개발 가능 하다는 것을 통해 보여주었죠.

 어떤 분들은 플래시의 몰락을 외치는 분들도 있던데 전 그렇게 생각하지 않습니다. 플래시는 훌륭한 저작툴과 많은 개발자, 그리고 많은 필요성을 지니고 있습니다. 현재로서는 이를 대체할 기술은 부족한 상황입니다. Ria가 이슈가 되면서 오히려 웹표준에 대한 이슈의 상승만큼이나 플러그인 개발자들의 니즈도 크게 올랐습니다. 웹이 팽창하고 있기 때문이죠. 그리고 사실 이는 애플대 구글로 놓고 보았을 때는 구글에게 유리하게 돌아가는 점이기도 합니다.

 

7. 그리고 애플의 고민

 한가지를 상상해보겠습니다. 안드로이드 기반의 타블렛pc가 나오고 이는 플래시를 지원합니다. 과연 기존의 교육용 컨탠츠 제작자들은 어떤 플랫폼을 포기할까요? 물론 시장성의 크기를 보고 선택할겁니다. 둘 다 선택할 수도 있겠죠. 아마 그렇게 될 가능성도 농후합니다.  하지만 개발자 수급도 쉽고 컨탠츠도 이미 가지고 있는 안드로이드 기반의 플래시 시장을 아예 포기할 가능성은 별로 없다고 봅니다. 애플에게는 가장 기분나쁜 시나리오 일겁니다. 결국 안드로이드에 힘이 실리게 될 가능성이 더 높아지니까요.

 그리고, 사실 이는 플래시만의 문제가 아닙니다. 자바가 그 대상이 될 수도 있고, C#이 될수도 있습니다. 안드로이드나 바다도 크로스컴파일을 하겠다고 나설지도 모르는일입니다. 향후 전쟁은 역시 플랫폼 전쟁입니다. 이 가운데서 표준은 마치 삼국지시대의 황제를 가진 조조처럼 명분에 불과한지도 모릅니다. 일단 승기를 잡은 애플이지만, 향후 이 전쟁이 어떻게 될지는 좀 더 지켜봐야겠습니다. (애플의 몰락을 예고하는것은 아닙니다.)

 다만 애플은 이러한 상황에서 기분이 좀 나쁠겁니다. 자기가 만들어 놓은 시장이란 생각이 강할테니까요. 또한 앞으로도 애플은 윈도우즈에 그랬듯이 최적화문제는 계속해서 태클걸겠죠. 요즘 돌아가는걸 보니 벤더가 많은 이상 구글신도 그건 쉽게 해결 못하나 봅니다.