iOS와 Android 간에 코드를 공유하는데 드는 비용
(blogs.dropbox.com)Dropbox 는 2013년 시작할때 양플랫폼간에 공유하기 위해 C++을 사용.
그때는 팀이 작았고, 빠르게 성장하는 모바일 로드맵을 지원하기 위해서 였음.
현재는 Swift 와 Kotlin 을 이용하는것으로 바꿨고, 이것은 코드 공유를 위해 드는 아래와 같은 숨겨진 비용 때문임 ( 사실 별로 숨겨지지도 않음 )
- 커스텀 프레임워크와 라이브러리에 따른 오버헤드
- 커스텀 개발 환경의 오버헤드
- 플랫폼간의 차이점을 처리하는데 따른 오버헤드
- 개발자를 교육하고 채용하고 유지하는데 드는 오버헤드
결론적으로 한개의 코드로 쓰는건 좋아보이지만, 오버헤드가 크다는거
이 글의 마지막 패러그래프는 "Android / iOS 개발자 뽑아요!" 인게 중요
조직에서 감당할 수 있는 오버헤드냐 아닐까요
뭘 선택도 감당할 수 있다면 가장 잘 할수 있는것에 집중하는 게 맞을 것 같아요
어차피 플랫폼마다 다른건 어쩔수 없는거 같아요. 하이브리드로 만들어도 차이점이 사라지지는 않더군요
요즘에 React Native는 완성도가 상당히 높던데요..
물론 Dropbox같이 Device 의존적인 앱으로 가면 기존 Hybrid 앱의 고통이 여전하겠지만요..
글이 긴데, 사실 Dropbox 는 특이하게 C++ 을 써서 그런거고
작은 조직에서는 한개의 코드로 멀티 플랫폼을 지원하는거가 솔직히 초반에 땡기는게 사실.
10년전에는 HTML5과 Phonegap 을 이용한 Hybrid 개발이 그랬고,
요즘은 React Native 와 Flutter 같은 것이 나와서 한번에 여러 플랫폼 지원이 가능하다는걸로 모두를 유혹하고 있음
내 생각은, 작은 조직에서는 위와 같은 방식으로 코드쉐어 하는게 장점이 분명히 있음.
다만 프로덕트가 성장함에 따라 이건 다시 기술부채가 되어감.
사용자가 늘고, 조직이 크고, 개발자가 더 늘어나면 Web/iOS/Android 모두 그에 맞는 기술로 발전하는게 최종 모습이 되는 것이라고 생각함.
https://news.hada.io/topic?id=309 에 있는 좋은 기술 부채에 대한 글에서 처럼
의도를 가지고 기술 부채를 만드는게 중요. 이자가 불어나기 전에 빚을 갚읍시다.