우리가 아직까지도 엑티브X를 마주해야 하는 이유와 크게 다르지 않다
작년 '내 아기의 첫 번째 웨어러블' 올비의 킥스타터 캠페인이 성공한 후, 배송 전 짧은 기간 내에 앱을 완성하기 위해 네이티브 크로스 앱 개발 플랫폼 Xamarin.Forms를 시작했고 무사히 서비스를 하고 있다. Xamarin.Forms의 개발과정은 이전 글 [앱 개발, 이젠 다시 크로스 개발이다] 을 통해 자세히 다루었다. 요즘은 React Native를 시작해서 앱 개발을 하고 있다.
React Native나 Xamarin.Forms로 네이티브 앱 개발을 해보게 되면 기존의 앱 개발 방식이 허무해지며 다시는 그 방식으로 돌아갈 수 없다. 또한 너무나 매료되어 다른 사람들에게 이것을 알리지 않을 수 없다. 나도 그들 중 한 명으로서 글을 적었고 감사하게도 많은 분들이 읽어주셔서 적지 않은 보람을 느낄 수 있었다. 그런데 이상하다 우리 전도사들의 힘이 약했던 것일까 React Native와 Xamarin.Forms는 한국에서 유독 성장하지 않는다. 대세가 되기는커녕 소수의 회사나 프리랜서들 외에는 관심에서 멀어져 있다고 생각된다.
Xamarin 네이버 카페 : 회원수 2600이지만 실제 활동 회원 10명 남짓
Xamarin Korea 페북 그룹 : 멤버 1000, 한 달에 글 한두개
React Native 네이버 카페 : 회원수 33
React Native Korea 페북 그룹 : 멤버 500, 일주일에 글 한개 꼴
React Native Seoul Meetup 그룹 : 멤버 100, 매주 작은 모임 진행 중
전혀 활성화되지 않았고 앞으로도 될 것 같아 보이질 않는다. OnOffmix나 meetup에도 모임을 상당히 찾기 어렵다.(마소 MVP분들이 가끔 수고해 주시고 있지만) 일단 React Native와 Xamarin.Forms가 뭔지 아주 간략하게 장단점을 이야기해 보자.
2018-07-30 추가:
*Xamarin.Forms 는 한때 주목받았지만 시간이 지난 현재시점에 비교하면 React Native 에 추월당해 그 격차가 상당히 많이 벌어졌음을 이야기 드립니다.
*React Native와 Xamarin.Forms는 하나의 코드로 iOS/Android 혹은 그 외 플랫폼까지 '네이티브 앱' 결과물을 만들어주는 개발도구이다. 둘 다 오픈소스!
장점 : Javascript, 미친듯한 개발 속도(Live reload), npm 월드의 무궁무진한 모듈들, 트렌디하고 젊은 개발자들이 대거 유입 중인 js진영(진행 중), 백엔드가 js라면 같은 계열이 유지된다, Redux 등 훌륭한 패턴, 향후 본인의 서비스가 웹으로 확장되어 간다면 좋은 선택(React)
단점 : JAVASCRIPT, React에 익숙하지 않다면 러닝커브 있다, Best Practice를 발견하기까지 시간이 걸림(바꿔 말해 Best Practice가 계속 바뀐다), 각 네이티브를 건드리려면 각각의 언어와 툴을 이용해야 한다.
장점 : C#, 빠르고 안정적이며 정석적인 개발, .Net 월드의 성숙한 라이브러리들, MS 진영의 수준 높은 개발자들 진영 및 서포트, 훌륭한 MvvM 패턴, 각 네이티브를 건드릴 때도 C#으로 작업, XCode나 Android Studio를 한 번도 켤 필요 없이 배포까지 완벽, 향후 본인의 서비스가 데스크톱 클라이언트 앱으로 확장되어 간다면 좋은 선택(Xamarin.Forms for UWP/Mac *Mac은 Preview)
단점 : 해당 진영이 모바일에 대한 이해도가 낮아 모바일 라이브러리들의 생성/개선이 뒤쳐짐
장점 : 잘 작성된 매뉴얼, 현재는 매우 빠르고 안정적인 성능을 보여줌, 각 네이티브 플랫폼을 손쉽게 건드릴 수 있음, OS SDK 버전 업데이트에 발 빠르게 대처, 많은 개발자풀 진영/커뮤니티, 개발사와의 소통, 주체가 공룡들이다(Facebook, MS), 오픈소스, VS등 좋은 개발툴
단점 : 노하우가 생기기 전까지는 괴로운 폭탄들이 좀 있다. 한국 회사 네이티브 SDK 래퍼 라이브러리 없음
React Native와 Xamarin.Forms는 해외에서 끝없이 성장하고 있고, 앞서 말했듯이 한번 해보고 나면 도저히 기존의 개발방식으로 돌아갈 수 없다. 그런데 왜 한국에서 여전히 널리 퍼지지 않고 있을까. 나도 모르겠다.
대체 그 이유가 무엇인지 몇 가지 가설을 세워서 의문을 제기해보고 싶다.
간혹 제기되는 한국 엔지니어들의 영어실력에 대한 언급과 함께 최신 기술에 반응이 늦는 것에 대한 지적이 있기도 한 것 같다. 그런데 아무리 봐도 그렇지는 않은 것 같다. 웬만한 개발자들은 실제로 영어를 잘하진 못하더라도 기술문서를 읽고 적용하는 것은 어렵지 않게 해내고 있다. 또 Swift를 프로젝트에 적용하는 속도나, 과거 Angular / React가 다양한 프로젝트에 도입되는 속도 등을 봐도 신기술을 적용하는 속도가 늦다고 생각되지 않는다. 신기술을 이용하면서도 IE8 등을 지원해야만 하는 개발사들의 노력은 오히려 박수를 쳐줘야 하는 눈물겨운 상황까지.
웹 프론트는 오랜 시간 동안 혼돈의 카오스이며 끝없는 춘추전국시대이다. 도대체 이 구역의 보스가 누구인지 알 수가 없다. 좀 자리가 잡혀간다 싶으면 또 "내가 더 미친놈이야"라며 새로운 게 나온다. 그러면서 각자 생존력을 발휘해가며 '무엇이 좋은가'를 찾아가며 성장시켜 온 것이 아닐까 싶다. 이 흐름에 한국의 웹 프론트 개발자들은 직접 만들어내진 못해도 무엇이 좋은지 고민하고 찾아내는 노력을 게을리하지 않았다고 생각한다.
그런데 한국에서 모바일 네이티브 앱 개발은 정석의 틀에서 틀어질 기미가 보이질 않는다. iOS는 XCode/Swift, Android는 Android Studio/Java를 통한 개발 방법이 완전히 시멘트처럼 굳어졌다. 이미 교과서가 있는데 왜 굳이 다른 걸 해야 한다고 생각하는 사람들이 보다 많은 것일까? 보다 나은 것에 대한 갈망보다 안정적인 업무수행이 더 우선시되는 것은 아닌지 생각해볼 필요도 있을 것 같다.
실리콘밸리에서 스타트업을 하는데 공동창업자 CTO가 없으면 투자는 꿈도 꿀 수 없다는 이야기를 들은 적이 있다. 태생이 뼛속부터 엔지니어링 적인 미국인들에게는 엔지니어 공동창업자가 없이 테크 스타트업을 벌이는 것이 말이 안 되는 것이다.
그래서 전통적으로 엔지니어가 창업하여 성공한 회사가 많고, 그렇지 않더라도 엔지니어들과 기술에 대한 원활한 토의를 할 수 있는 능력이 있어야 한다는 것은 잡스가 잘 보여주었다. [1990년, 어느 젊은 창업가의 회상, 그리고 예언: stage5]
최근 세계 부자 1위에 등극한 아마존의 제프 베조스가 어떻게 아마존을 경영했는지 봐도, 테크놀로지에 이해가 깊은 대표는 어떤 일이 가능한지 보여주었다. 게다가 최근에는 이런 일까지. [미디어 테크놀로지 기업으로 재탄생한 워싱턴 포스트]
한국에서는 이 반대의 일이 꽤 많이 일어난다. 빵집은 하고 싶은데 제빵기술은 없는 파리바게트 점주들처럼 엔지니어 공동창업자 없이 창업을 하거나, 큰 테크 회사의 높은 요직에 앉아있는 경우이다. 자고 일어나면 새로운 기술이 나오는 세계에서 기술적인 판단과 평가를 해낼 수가 없으니 무엇이 올바른 방향인지 알 길이 없고. 외주에 의존하는 경우가 잦다. 여기에 '맡은 일만' 하기 원하는 엔지니어들이 시너지를 내어 놀라운 작품들이 많이 탄생한다.
대표가 엔지니어가 아니고, 기술에 대한 권한과 책임을 엔지니어에게 완전히 위임할 것도 아니라면, 동급의 위치에서 싸워가며 방향을 결정할 공동창업자 엔지니어가 필수적이다. 나는 꼭 '개발자 찬양론'을 전개하려는 것은 절대 아니지만, 중요한 기술적 방향을 결정할 때 엔지니어가 스스로 목소리를 내지 않거나 혹은 중하지 않은 것으로 여겨지는 현실이 안타깝다. 개발 역사적으로 한국은 응용프로그램이 주가 되었고 소프트웨어 원천기술 쪽으론 부족한 상황도 한 몫한다. 우리들 스스로 그만한 중한 위치를 만들지 못한 것도 있다.
어쨌든 이런 상황의 대표적인 예가 천만 서울시민이 애용하는 따릉이 iOS 앱이 아닐까 싶다. 이 웹앱은 정말이지 시작부터 경악스러운데 뒤로 갈 페이지가 없는데 존재하는 뒤로가기 버튼부터 '오른쪽' 위 햄버거 메뉴를 누르면 '왼쪽'에서 경악스러운 쉐도우와 함께 등장하는 Drawer Menu 라던지. 나는 자전거는 사랑하지만 이 앱을 만지기가 싫어서 따릉이를 못쓰겠다. 몇 명 쓰는 앱도 아니고 수백만의 사람들이 써야 하는 앱이 도대체 왜 이모양인 걸까. 이 앱을 보면 그 전설적인.. 1억짜리 개발 건이었는데 외주에 외주를 거쳐 결과물은 500만 원 받고 어떤 개인개발자가 만들었던 사례가 떠오른다. 서울시청에는 이것에 대해 평가할 수 있는, 혹은 개선할 수 있는 사람이 한 명도 없는 것인가? 아니면 그냥 자기 입에 지퍼를 닫아버린 건가. 몇 년째 같은 모양인 이 앱 대체 언제까지 봐야 하나?
하이브리드 앱이 문제라는 말이 아니다. 웹앱은 한마디로 알맹이 웹을 잘 만든다면 사용이 원활한 훌륭한 결과물이 나올 수 있다. 실제로 그런 회사들이 한국에도 꽤 많이 있다. React Native와 Xamarin.Forms의 경쟁상대는 하이브리드가 아니고 각 네이티브다. 하이브리드는 지금까지 그랬고 앞으로도 모바일 앱의 한 축을 계속 담당할 것이다. (뒤에 다시 언급하겠다)
어쨌든 React Native나 Xamarin.Forms로 개발을 하게 되면 노하우가 쌓이기 전까지는 앞으로 해야 할 이 부분이 크로스 플랫폼으로 가능할지 불가능할지 가늠을 하지 못해 시간을 박아 넣어야 하는 순간이 분명 있다. 내가 엔지니어면서 동시에 내가 중요 결정권자면 그럼에도 불구하고 그것을 감수해보자 라는 선택을 할 수도 있지만, 그렇지 않은 경우 회사에서 나는 곤란한 처지에 빠지게 될 것이 분명하다. 좀처럼 쉽게 선택할 수 없다. 뭔가에 막혀 끙끙대며 시간을 보내고 있게 된다면 개발을 잘 알지 못하는 사장에게 '내가 무능한 개발자가 아니다'라는 변호를 훌륭하게 해낼 자신이 없다. 해낸다 해도 사장의 머릿속에 의문은 사라지지 않겠지. 물론 훌륭한 개발자라면 회사와 관계없이 다른 개인 시간에 공부하고 테스트해보지 않을까 싶기도 하다.
이게 가능한지 불가능한지 가늠이 안 되는 이유는 그만큼 선례가 많지 않기 때문이다. 한마디로 먼저 총대 맸던 사람이 많지 않으니 아무도 움직이지 않는 현상이 오래도록 지속되고 있다. 가장 기본적으로는 한국형 앱 개발에 필수적인 네이버/카카오/지도 SDK 나 PG사 결제모듈 SDK 의 React Native 용 공식 래퍼모듈이 없다는 것이 큰 문제다. (Xamarin 쪽은 훨씬 상황이 심각하다)
npm에서 검색해보면 몇몇 개인이 배포한 래퍼모듈이 있기는 한데 (감사합니다) 다운로드 수가 매우 적고 해당 프로젝트를 진행하면서 필요해서 배포한 임시적인 모듈들이라 향후 관리가 되지 않을 가능성이 크다. Facebook SDK 등과 같은 유명한 SDK들의 경우 React Native는 지네가 만든 것이니 당연히 자기들이 배포해놓았고, Xamarin의 경우 활성화를 위해서 Xamarin 팀이 직접 FB SDK 등 주요SDK는 바인딩해서 배포/업데이트 관리하고 있다. 그럼 네이버, 카카오 SDK 이거 누가 React Native용으로 래핑 해서 배포해야 하는 것일까? 네이버, 카카오에서 해야 한다고 생각한다. 이 정도로 지속적으로 (해외에서) 대세급으로 성장하고 있는 플랫폼이면, 조금 손해 보는 것 같아도 기여하는 측면으로 해주는 선택을 했으면 좋겠다. 쓰는 사람들이 많아지면 해줄 계획일까? 사람들은 반대로 네이버, 카카오가 해주면 쓸려고 할지 모르겠다. 닭이 먼저냐 달걀이 먼저냐..
Google 같은 경우 FireBase의 최신 기술인 FireStore도 이미 빠방한 문서와 함께 React Native용 래퍼모듈을 제공하고 있고. [React Native Firebase Documentation]
아마존의 최신 기술인 AWS AppSync도 React Native용 문서를 제공한다. [React Native(Preview) AWS Appsync Documentation]
그리고 아주 쌘 놈이 오고 있다. 위에서 열심히 한말을 전부 쓰레기통에 집어넣어야 할 수도 있다는 위기감에 아찔하다. Progressive Web App(이하 PWA)는 한마디로 말해 (잘 만들어진) 하이브리드 앱의 끝판왕이다. 지금까지의 하이브리드 앱은 웹이지만 앱의 껍데기가(앱스토어 등록 등) 갖고 싶어서, 웹뷰 하나에 url 박고 Push Notification 좀 추가해서 스토어에 등록한 앱이다. 방금 말했듯이 이들이 필요했던 건 단지 바탕화면에 깔리는 앱 아이콘과 푸시뿐이다. 이것을 Android OS적으로 지원하고 추가로 오프라인 가동까지 가능하게 된 것이 PWA다. [Progressive Web App is a perfect solution for your Lite version] 이 글에 사례들과 함께 아주 잘 나와있다.
웹앱은 알맹이가 잘 만들어졌기만 하면 요즘은 정말 네이티브 앱과 비교해도 아무 문제가 없다. Angular나 React로 만든 웹앱도 약간의 작업을 추가하면 어렵지 않게 PWA로 바꿀 수 있다. 웹앱의 유일한 문제라 한다면 중구난방한 UX. 그들의 앱 생태계에 '디자인 가이드라인'을 철저히 세우고 이를 철저하게 수호해왔던 애플의 경우 내 생각에 이 UX 때문에 가장 고민을 하고 있지 않을까 생각된다. 최근 iOS의 PWA 지원 계획을 가늠하게 할 수 있는 정보가 하나 나오긴 했지만, 아직은 확실치가 않다. 그리고 PWA앱과 네이티브 앱이 공존했을 때의 혼동을 줄 수 있는 문제. 앱스토어를 통해 내오던 수익을 나눠먹을 것이라는 위기의식. 대세가 될 것은 분명하나 교통정리가 어떤 식으로 흘러갈지 모르겠다. iOS는 PWA용 포켓 바탕화면을 따로 만들어주려나? 뭐 예측이야 자유니 한번 해본다.
PWA가 대세가 된다고 하여도 앱의 모든 부분을 대체 가능한 것은 아니기 때문에 (스마트폰 디바이스의 센서를 사용해야 한다던지), React Native와 Xamarin.Forms가 없어질 것이라고 생각되지는 않지만, 이들 크로스 플랫폼이 가장 효력을 발휘하는 파트가 PWA의 그것과 겹치는 부분도 있어. 쉽게 가늠하기는 어렵겠다.
글을 마치며.
아직도 한국에서는 Active X를 몇년도에 없애니 하는 이야기를 마주해야 하는 현실이 참 원통하다. 아직도 모바일 결제가 여러 규제에 묶여 활성화되지 않는 현실이 고통스럽다.
그리고 그동안 여러 방법으로 새로운 기술들을 알리는 세션 스피커 분들, 커뮤니티를 만들어온 여러 분들, 네이티브 SDK 래퍼모듈을 배포하는 분들, 이를 지원하고 후원하는 공개SW개발자Lab 등의 기관 분들께 감사드린다.
React Native Seoul Meetup - 백선기
React Native Facebook Group - 정훈교
리액트 네이티브로 안드로이드 앱을 개발했을 때의 장단점 - 이성훈(인썸니아)
한 발 앞서 배우는 Xamarin Session 1 - Xamarin Overview - 용영환(서울옥션블루)
제 생각에 세가지 이유 정도로 정리될 듯 합니다.
1. 이전의 크로스플랫폼이 대부분 실패한 탓에 새로운 크로스플랫폼이 대한 불신
2. 각각의 OS가 빠르게 업데이트 되는 상황에서 두 플랫폼 모두를 제대로 이해하고 사용하기 위한 시간적, 물리적 한계
3. 기존 레거시 코드를 새로운 플랫폼으로 변경하기 위한 비용의 한계
Xamarin 네이버 카페에서 활동하는 개발자입니다.
유통/물류 현장에서 PDA(C# vs2008)를 모바일로 변경하는것에 대한 수요가 많으나
바코드 스캔 엔진부터 배포문제등 위에 기술하신 기술적인 문제가 있어서 쉽게 나서지 않는거 같습니다.
다행히 구글에서 Google Vision이 무료로 공개되어 있고, iOS에는 AVFoundation이 있어서 Xamarin에서 활용할 부분이 많습니다.
Xamarin에 대한 기술적인 부분을 Xamarin으로 각자의 Biz영역에서 이슈가 있어던 부분을 Xamarin 컨퍼런스를 통해 발표해 보는게 어떨까요?
저는 큰 프로젝트는 아니지만 물류현장에서 바코드 스캔 PDA를 모바일로 개발하는 프로젝트를 하고 있습니다. 위에 말씀하신거 처럼 개발하다 중간에 넘을수 없을듯한 벽에 몇번 마주했는데 어떤거는 우연히 어떤거는 몇주만에 해결했습니다.
Xamarin 컨퍼런스 같이 한번 추진해 보실까요?
vue native도 비슷한 이유이죠?
안녕하세요. 저는 패스트캠퍼스 프로그래밍팀에서 콘텐츠 마케팅을 담당하고 있는 이은혜입니다.
브런치를 둘러보던 중 Bright Lee 님의 글을 보고 저희 공식 페이스북 페이지에 링크를 공유하면 좋겠다는 생각이 들어 댓글을 남깁니다. 저희 페이스북 페이지 주소는 다음과 같습니다. https://business.facebook.com/fastcampusdev/?business_id=1625517687664988
해당 글의 링크를 공유해가도 괜찮을까요?
@탈퇴한 회원 네 언제든 가져가셔도 좋습니다.
사소한 부분인데요. 제 생각엔 한국 개발자들은 느리다고 생각합니다. 제가 2012년에 미국에서 Angular를 몰라서 심지어 바보같은 느낌을 받고 난 후 한국에 왔을 때 Angular를 이야기하는 사람을 거의 본적이 없었어요. 2014년이 되어서야 이야기하기 시작했던 것 같아요. RxJava도 2014, 2015년에 이야기하는 사람을 찾기 쉽지 않았고요.
판교에서 새벽 네시까지 코딩하던 시절이 떠오른다. 거기 있던 이들은 대부분.. 응.. 새로운 점심 메뉴조차 싫어했던 것 같아;;;
저는 아직은 관심을 두고 있지만 실무에 적용하는건 조금 더 지켜봐야 할 듯 싶네요.
갑자기 xamarin이 급변하는게 성숙기에 들어가야 실무에서 쓸것 같아요..
요즘 닷넷 스탠다드랄지 이런것들이 적용되고 급변 되는게 많네요...
지금은 개발을 하고 있지 않지만(국내 기업에서 개발자가 나이먹고 살아남기 힘든 환경이죠~ㅠㅠ), 과거에 델파이 새로나왔을 때 너무 써보고 싶어서 사내 프로그램 하나를 델파이로 짠 적이 있습니다. 쓰는 사람은 좋아하는데 팀장님한테 무지 깨졌죠. 너 딴데 가면 누가 유지보수하냐고... 회사에서 지정한 툴 아니면 쓰지 말라고... 지금도 마찬가지 아닐까 합니다.
안녕하세요, 해외에서 활동하는 자마린 개발자로서 항상 궁금했던 사항인데, 많은 부분 공감합니다. 제가 생각해보 또 다른 이유는, 근무환경이 좀 개선돼서 한국 개발자들도 퇴근후 사이드 프로젝트를 한다면, 효율적이고 새로운 기술도입이 훨씬 빨라지고, 자연히 직장 프로젝트에도 적용 확률이 조금 높아질텐데요. 그래도 개인시간 쪼개서 이렇게 블로그도 하시고, 새로운 기술도입에 힘쓰시는 Bright님 같은 분들이 있어서 다행입니다 :)
글 잘 읽었습니다! 미국에서 한국으로 이직을 하고싶은데, 가장 고민이되는 부분이 이런점인거같네요. 제가 고민하는 토픽에 가장 근접한 글을 쓰신거 같아서 질문하나 여쭤보겠습니다.
지금 한국의 대부분 회사들은 모바일 -> React Native, 웹 -> React로 갈길이 아직 멀었다고 생각하시나요, 아니면 요새는 그런 기술들에 관심 또는 움직임이 있는 회사들이 많나요?
바쁘실텐데 혹시 답변주실수있으시면 정말 감사하겠습니다!
@탈퇴한 회원 안녕하세요. 한 개인이 정확히 답변을 드리긴 좀 조심스러운 부분이긴 합니다. 추천드리는 것은 채용사이트를 한번 살펴보시면 대략적인 흐름을 볼 수 있지 않을까 싶습니다. 좋은 결정 하시길 바랍니다.
@Bright Lee 그런방법이있었네요. 답변 감사드립니다!
안녕하세요.
이글 정말 여러번 봤었는데요.
자마린으로 개발하면서 아날리틱스를 적용해 보고 싶어서요.
혹시 자마린에 아날리틱스 적용한 경험이 있으실까요?
만약 적용해 보셨다면 추천해 주실만한 아날리틱스 좀 알려주실수 있으실까요?
@탈퇴한 회원 저희는 Google Analytics 랑 MS Appcenter(크래쉬 리포트) 붙여서 했어요.
C# 쪽에서 반드시 일을 하셔야 하는게 아니라면 지금은 자마린보다는 React Native/Flutter 가 훨씬 좋습니다.