KTH의 Appspresso 개발팀을 만나다.
이번 서울 일정에서 KTH의 Appspresso 개발팀을 만나게 되었다. 아니, 더 정확하게 이야기하자면 KTH Appspresso 팀에서 평범한 지방대학교 연구실과 연구소에 있는 나에게 저녁식사 초대를 해주었던 것이다. 대한민국 IT의 중심에서 좋은 영향력을 가진 엔지니어들과의 자리가 너무 고맙고 유익했기 때문에 블로그에 잠시 이야기를 남긴다.
블로그에 Appspresso (앱스프레소) 튜토리얼을 포스팅하기 시작하면서부터 지금까지 가장 관심을 가져주고 격려해준 사람들은 KTH의 분들이 아니었나 생각된다. 내가 KTH 앱스프레소 개발팀에게 초청된 이유도 이 블로그에서 시작이 된다. 그리고 Appspresso 팀과의 인연은 KTH의 H3 개발자 컨퍼런스에서 시작이 되었다.
나는 창원대학교 데이터베이스 연구실과 하이브레인넷 부설연구소에서 모바일 서비스를 개발 연구활동을 하고 있는 개발연구원이다. 국내에 아이패드가 출시 되기전에 미국에서 아이패드를 구입하고, 연구용으로 아이폰을 교수님과 연구소에서 지원해주셔서 모바일 서비스에 대한 연구에 대해서 조금 일찍 시작했는데, H3 컨퍼런스에 참석하기 전에는 iOS 디바이스 뿐만 아니라 같은 서비스를 Android 디바이스에 적용하는 개발을 하고 있었었다. 그러던 중에 H3 컨퍼런스에서 장동수 (@iolothebard) 팀장께서 Appspresso Hybrid에 대해서 발표를 해주셨는데 나에게 그 시간은 마치 해리포터와 같은 마법 영화를 보는 시간과 같았었다. 당시 혼자서 iOS와 Android 디바이스를 모두 개발해야하는 부담감을 느끼고 있었던 시기였기 때문에 하나의 개발툴로 두가지의 앱을 동시에 개발한다는 컨셉자체에 매료되었던 것이다. (이후 PhoneGap에 대해서도 알게되었지만 그 당시 실제 하이브리드 코드를 보면서 HTML5의 뷰 레이어와 네이티브 플러그인 개발까지 직접 설명을 들을 수 있었던 것은 처음이였다).
하지만 그렇게 H3 컨퍼런스를 다녀와서 난 바로 Appsresso를 적용하지 않았다. 솔직하게 말하면 하이브리드 앱은 모바일의 내장 WebKit(브라우저엔진)을 사용하기 때문에 그 자체의 자원의 한계(메모리와 브라우저가 가지는 OS 자원 리소스한계)를 신뢰하지 못했다. (아마 이부분은 네이티브 앱 개발자들이 하이브리드 앱을 도입하는데 가장 크게 고민하고 신리하지 못하는 부분이라고 생각한다.) 그렇게 한동안 많은 시간이 지나는 동안 Appspresso를 도입하지 않고 iOS, Android 네이티브 앱들을 개발하고 있었다. 하지만 연구소의 특성상 새로운 프로젝트는 끊임없이 하나의 프로젝트가 끝나면 다른 프로젝트를, 어떨경우는 여러개의 프로젝트를 동시에 개발하게 되었다. 그런 과정에서 혼자서 두가지 운영체제, 두가지 프로그램 언어로 계속적으로 개발하는 것은 매우 어려운 상황이라는 것을 점점 느꼈으며, 결국은 지나간 앱에 대한 유지보수에 대해서도 부담감을 느끼기 시작했다. (개발은 기획단계와 설계 단계를 제외하면 사실 두달 정도 개발이 진행되지만 지속적인 유지보수 업데이트는 서비스가 많아지고 앱이 많아지면서 관리하는 것 자체가 큰 부담감이 된다는 이야기다. 우리는 서비스를 한번 개발하고 방치하지 않고 지속적인 서비스 신뢰를 위해서 유지보수는 필수 조건일 것이다.) 그래서 그동안 이상주의 같았던 Hybrid 개발 방법론을 충분히 테스트하고 프로젝트에 투입하자고 수석연구원들과 상의를 했고, HTML5 세미나와 컨퍼런스에 참석하면서 웹 기술과 하이브리드 앱 개발 기술에 대해서 연구하기 시작했다. 그렇게 되면서 자연스럽게 하이브리드 앱을 개발에 필요한 툴이 필요하게 되었으며 Appspresso와 PhoneGap을 가지고 고민하다가 H3 컨퍼런스의 감동과 국내 하이브리드 앱 개발 플랫폼을 이용해서 서비스를 개발하고 싶은 애국심 비슷한 마음을 가지고 본격적으로 연구활동을 시작하게 되었다.
내가 속한 연구소는 아직 사내 위키가 없는 환경이라 연구활동하면서의 과정과 실패와 성공의 내용, 그리고 코드를 개인 블로그에 남기기 시작했다. 처음에는 Web 이라는 카테고리 안에 HTML5 라는 카테고리 안에 작성하다가 점점 Appspresso의 튜토리얼 내용이 순차적으로 어떠헌 연재형식으로 되면서 Appspresso라는 최상위 카테고리에서 포스팅이 진행되어졌다. 그리고 개인적으로 작성하던 Appspresso의 내용을 KTH의 Appspresso 팀에서 Retweet을 해주고 선전해주면서 Appspresso의 포스팅이 올리는 어떤날은 하루 방문자수가 1,000면을 넘어가기도 하는 경험을 하기도 했다. 개인적으로 연구활동을 하면서 후배, 연구실, 연구소 사람들에게 공유하려던 블로그의 내용들이 권정혁(@xguru) 전략팀장께서 “Appspresso 개발 가이드”라는 제목으로 블로그를 트위터에 소개해주신 이후로 하이브리드 앱 개발을 시작하는 개발자와 앱스프레소에 관심을 가진 개발자들이 블로그에 방문하면서 여러가지 질문과 댓글을 남겨주면서 개인블로그를 여러 개발자들이 공유할 수 있는 블로그로 되었다.
이렇게 하이브리드 앱을 개발할 수 있게 된 계기를 가질 수 있었던 것도, KTH의 엔지니어들의 트윗을 통해서 얻게되는 새로운 기술자료와 트랜드를 배우면서 블로그까지 개발자들에게 소개시켜주어서 고마운것은 나인데, KTH의 박태웅 (@parkto) 부사장님께서 서울일정이 있을 때 저녁식사를 초대하고 싶다고 말씀해주셨다. 난 사실 그 때만해도 지나가는 말씀인줄 알았는데, Mobile Big Issue 컨퍼런스에 참석하면서 트윗을 하는 동안 KTH의 박민우(@tebica) 님께서 내가 서울에 있는 줄 아고 저녁식사에 초대해주셨다. 하지만 그 때는 서울 하루의 일정으로 컨퍼런스마치고 바로 부산으로 내려와야하는 상황이였기 때문에 초대에 응해지 못했다. 그 자리에는 트위터로 많은 정보와 조언을 받고 있는 김태기(@beyondj2ee) 님도 계셨는데 많은 아쉬움을 가지고 서울을 떠났다. 그리고 5월 31일 KT Cloudware에서 주최하는 Open Source Cloud and Big Data 2012 컨퍼런스에 참석하는 일정에서 연구소에서 지원을 해주셔서 1박 2일 일정이 잡을 수 있고 컨퍼런스 이후에 드디어 KTH 부사장님과 앱스프레소 엔지니어들과 만나게 되었다. Appspresso 팀의 한기태 (@Han71EH) 팀장과 강소리 (@curioe) 개발자님도 만날 수 있었다. 한기태 팀장님은 상상하던 팀장의 모습과 다르게 얼마나 선하게 생기셨는지 아직도 눈 웃음이 생각난다. 그리고 Appspresso에 대한 자부심과 열정이 정말 강하셔서 앱스프레소에 대한 의견을 매우 집중하고 긍정적으로 들어주시고 의견도 말씀해주셨다. 부드럽게 말하시는듯 했지만 앞으로 앱스프레소의 발전을 기대해도 될만큼 훌륭한 분이시라는 것을 느낄 수 있었다. 강소리 개발자님께서는 얼마나 웃음이 많으셨던지 자리가 어색하지 않게 분위기를 만들어주셨다. 박민우님께서는 내가 길을 찾을 수 없을까 처음부터 자리가 끝나고 돌아가는 길 까지 직접 동행해주셨는데 이야기하면서 느낀 것은 KTH에 대해서 좋은 이야기를 해주셨다. 권정혁 팀장님은 사진과 멀리 볼때와 달리 매우 성격이 사교적이신 분 같았다. 사실 H3에서도 직접 뵌적이 있는데 가까이 가서 인사할 수 없었는데 실제로 맞주 앉아서 이야기를 나누어보니 친근한 분이시라는 것을 알 수 있었다. 부사장님은 지금까지 내가 만나본 높은 분과는 많이 달라서 오히려 더 낮아질 수 밖에 없었다. 팀원 하나하나를 매우 아끼시고 자랑하시고 자부심을 가지고 계셨는데, 식사하고 이야기를 나누는 동안에도 스마트 폰을 놓지 않으시면서 꼼꼼히 답변과 의견을 나누시는 모습이 인상적이였다. 저녁은 KTH의 성지라고 불리는 왕재곱창을 먹고 저녁 후 간단히 호프에 갔는데 이때 KTH의 iOS 개발팀과 Android 개발팀을 만날 수 있었다. 지금 KTH에 새롬게 오픈한 모바일 서비스를 베타 테스트하기 위해서 개발자들에게 베타테스트 버전을 공개하고 피드백을 받는 중에 이나무(@enamu)팀장과 잠깐 트윗으로 이야기를 나누었는데 실제 만날 수 있었다. 그리고 iOS 개발을 할때 여러 의견을 나누었던 김윤봉(@y8k) 개발자님을 만날 수 있어서 고마웠다. 안드로이드 개발자님과 디바이스 테스트에 관한 이야기에 대해서도 고마운 정보를 얻을 수 있었다.
KTH 엔지니어들과 이야기하면서 이기나눈 것들 중에 블로그를 찾는 개발자 분들과 공유하고 싶은 내용이 있어서 몇가지 정리해본다. 더 많은 이야기를 나누었지만 앱스프레소에 관련된 내용만 요약해서 공유합니다. (아래에서 KTH는 각각 다른 엔지니어의 대답이지만 모두 K로 표기했다. S는 saltfactory 본인이다.)
S : “하이브리드 앱이 네이티브 앱을 정말로 대신할 수 있을까요?” K : “충분히 가능하다고 생각합니다.” S : “저도 그렇게 생각했지만 하이브리드를 도입하지 않으려는 이유는 브라우저 기반에 동작하기 때문에 성능이 네이티브 보다 느릴거라고 생각하고 있습니다.” K : “복잡한 기능이 아니라면 충분히 가능합니다. 그리고 앱스프레소르 그것을 쉽게 개발할 수 있습니다.”
K : “Sencha를 사용하시나요? JQuery 를 사용하시나요?” S : “Sencha를 사용하고 있습니다.” K : “Sencha는 무겁지 않나요?” S : “무겁지만 MVC 개발을 할 수 있고, 네이티브와 비슷한 UI를 만들 수 있어서 사용합니다. 하지만 용량이 커서 성능에 대한 부담이 있습니다.” K : “Sencha가 네이티브 앱과 유사하긴 하죠. Sencha를 모두 다 사용하나요?” S : “일반 개발자다들은 Sencha를 커스터마이징 하기가 쉽지 않을 것입니다. KTH에서 UI 프레임워크를 만들어 주시는거 성능상 더 좋은 효과를 기대할 수 있을 것 같습니다. 사실 많은 사람들이 오해하고 있는데 Appspresso로 개발한 하이브리드의 성능이 네이티브 앱보다 느려지는 이유는 앱스프레소의 단점이 아니라 Sencha의 문제점인데… 잘 모르는 사람들은 마치 앱스프레소의 문제로 오해하고 있습니다.” K : “좋은 말씀이십니다. 저희도 그에 대해서 많은 고민을 하고 있습니다. 개발 프로세스와 비용에 대해서 많은 계획이 필요합니다만 써드파티 UI 때문에 발생하는 성능 문제에 대해서는 인지하고 있습니다.”
K : “앱스프레소 플러그인 개발은 힘들지 않으셨나요?” S : “전 네이티브 앱을 개발하다가 하이브리드 앱을 개발하는 경우라서 네이티브 코드를 만들어서 플러그인을 개발하는 방법이 크게 어렵지 않았지만, 웹 개발만 하고 네이티브 개발을 하지 않은 개발자들에게는 하이브리드 앱을 만들때 네이티브 코드로 플러그인을 만들기는 어려울 것 같습니다.”
S : “일반 개발자들이 앱스프레소에서 제공하는 문서가 미흡해서 불편하다는 의견이 많습니다.” K : “지속적으로 업데이트할 예정입니다. 혹시 사용하시기에 불편하시거나 어느 곳에서 불편함을 많이 느끼셨는지요? S : “솔직히 저는 사용하는데 별 불편함을 느끼지 않습니다. 그리고 앱스프레소 메일링리스트 서비스는 매우 훌륭합니다. 질문을 올리면 바로 다음날 답변이 와서 개발하는데 많은 도움이 됩니다.” K : “KTH 앱스프레스소 팀에서는 매일 아침에 메일링리스트에 올라온 질문을 가지고 회의를 하고 답변을 하고 있습니다. 메뉴을은 지속적으로 업데이트중에 있지만 어느정도 수준으로 해야할지..” M : “개발자들은 예제 코드가 있는 메뉴얼을 좋아합니다. 요즘 개발자들은 API의 설명보다 실제 코드가 돌아가는 것을 복사해서 붙여서 테스트해보길 원합니다.”
K: “PhoneGap 을 사용하시나요?” S: “하이브리드 앱 개발을 시작할 때 Appspresso와 PhoneGap 두가지를 두고 고민을 많이 했지만, 앱스프레소는 하나의 개발툴로 아이폰과 안드로이드를 개발할 수 있다는 강점과 On The Fly 기능 때문에 앱스프레소를 선택했습니다. PhoneGap을고 개발하려면 Xcode에 템플릿 방식으로 개발하고, 이클립스에 PhoneGap 프로젝트로 두가지 각각 다른 개발 툴을 열어서 개발을 해야하기 때문입니다. 앱스프레소의 On The Fly를 사용하면 디바이스에 새로 빌드하지 않고도 변경된 내용을 바로 확인할 수 있죠^^ 굉장히 마음에 드는 기능입니다.” K : “저희도 On The Fly를 가장 큰 장점으로 생각하고 있습니다.”
S : “KTH에서는 그 많은 기술자료를 모두 보시나요?” K : “네, 실제 모두 구독하고 공유하고 있습니다.” S : “공유해주시는 자료, 기술 블로그로 개발에 많은 도움을 받고 있고 연구 주제로 참고하고 있습니다.”
S : “안드로이드 앱을 개발하고 모든 디바이스에 테스트를 하시나요?” K : “가지고 있는 디바이스로 모두 테스트를 하고, 가지고 있지 않는 디바이스는 어떻게해서든지 구해서 모든 디바이스에서 테스트를 합니다. 저희는 개발자들이 먼저 테스트를하고 QS에서 테스트를 하고 테스트가 리포팅을 받아서 다시 보완작업을 하고 그 과정을 반복해서 테스트를 합니다.” (KTH에서 부사장님과 모든 개발자들은 iOS, Android 폰 두가지를 항상 들고 다니고 있었다.)
비록 짧은 시간에 만나서 맥주를 마시면서 이야기를 나누었지만 평소에 만나보고 싶은 엔지니어 들이여서 음식과 맥주보다 이야기를 나누는게 더 즐거웠던 것 같다. IT의 스타같은 엔지니어들인데 그 자리에서 사진을 찍자고 말하지 않았다. 이전에 킨텍스에서 찾아왔던 애플의 수석엔지니어랑은 사진을 찍고 싶어서 어줍짢은 영어를 말하면서 겨우 사진을 찍었는데, 이번에 만난 엔지니어들과는 일부러 사진 찍자는 제의를 하지 않았다. 이유는 이 엔지니어들과는 스타와 같이 하루에 만나는 추억과 기억이 되는 것이 아니라 같은 엔지니어로, 연구원으로 IT 분야에서 동료이고, 마음으로는 오늘이 마지막이 아니라 지속적으로 만나서 정보도 공유하고 배울 수 있을 거라고 믿었기 때문이다.
항상 좋은 소프트웨어로 개발할 수 있고, 기술자료 구독하며 좋은 의견과 격려를 받아서 감사한데 초대까지 해주셔서 감사드립니다. 앞으로 연구활동에 큰 힘이 될 것 같고, 더 좋은 자료를 서로 공유하고 기술적인 의견을 나누길 기대합니다. 항상 국내 IT의 좋은 모델이 되어주셔서 IT의 좋은 문화를 선두해주시길 바래봅니다. 화이팅~
KTH 엔지니어들의 사진은 남기지 않아도 이날을 기억하기 위해서 왕재곱창 집을 찍고 왔답니다^^ 선물까지 준비해주셨다는데 배송이 늦어서 우편으로 보내어 주신다고 합니다(사진은 나중에~). 정말 제가 더 고마운 시간들이였습니다. 다음에 만나더 좀더 깊은 주제로 이야기 나누고 싶습니다~ 감사합니다.