2023년 10월 WING 세션에서 발표한 내용을 글로 옮겼습니다. 당시 저는 스타트업에서 Flutter로 앱을 만들고 있었고, 그 경험이 이 글의 바탕입니다.
시작하기 전에
앱을 만드는 방법은 크게 셋입니다. 플랫폼별로 따로 만드는 네이티브, 한 코드로 양쪽을 만드는 크로스 플랫폼, 웹을 앱처럼 감싸는 하이브리드. 그리고 모바일 웹사이트와 PWA라는 선택지도 있습니다. 어느 것이 맞는지는 "누가, 무엇을, 얼마나 빨리" 만드느냐에 달려 있어서, 이 글은 그중 스타트업의 첫 앱이라는 조건에 답합니다.
앱 개발 생태계
네이티브 개발은 iOS는 Swift와 Xcode, 안드로이드는 Kotlin이나 Java와 Android Studio입니다. 두 플랫폼은 언어도 도구도 UI 체계도 다릅니다. 같은 화면을 두 번 만들고, 두 번 테스트하고, 두 번 배포합니다.
크로스 플랫폼은 그 반복을 없애려는 시도입니다. 대표적인 것이 React Native와 Flutter이고, 접근이 다릅니다. React Native는 JavaScript에서 브리지를 통해 각 플랫폼의 네이티브 UI 컴포넌트를 조작합니다. Flutter는 자체 렌더링 엔진이 화면을 직접 그립니다. 이 차이가 성능과 일관성의 차이로 이어집니다.
PWA는 웹을 설치 가능하게 만드는 방식입니다. Uber, Starbucks, Pinterest가 쓰고 있고, 콘텐츠 중심 서비스라면 충분히 선택지가 됩니다. 다만 기기 기능 접근과 스토어 노출에서 아직 한계가 있습니다.
시장은 계속 커지고 있습니다. 앱 개발 소프트웨어 매출과 비게임 앱 다운로드 모두 매년 오르는 추세였고, 이 말은 "앱을 만들 줄 아는 사람"의 수요도 같이 오른다는 뜻입니다.
개발자에게
앱 개발을 배워야 하는 이유
현실의 문제를 해결하는 해결책이 앱인 경우가 많습니다. 사람들은 하루의 대부분을 휴대폰에서 보내고, 서비스가 그 안에 있어야 쓰입니다. 그리고 당장 "앱 개발 공부"를 검색하면 Flutter부터 나옵니다. 진입 장벽이 그만큼 낮아졌다는 뜻입니다.
그중 크로스 플랫폼인 이유
하나를 배우면 두 플랫폼을 다루게 되니 앱 생태계 전체를 보는 눈이 생깁니다. 각 플랫폼의 차이를 추상화 너머로 접하면서 오히려 플랫폼에 대한 이해가 넓어지고, 네이티브로 넘어가더라도 그 경험이 그대로 쓰입니다.
그중 Flutter인 이유
성능. Gauss-Legendre 알고리즘 같은 CPU 집약 테스트에서 React Native는 네이티브와 큰 차이를 보였고, Flutter는 Swift나 Kotlin에 가까운 결과를 냈습니다. 브리지를 거치지 않고 Dart가 네이티브 코드로 컴파일되기 때문입니다.
생산성. 핫 리로드로 화면을 바꾸면서 바로 봅니다. 위젯 단위로 UI를 조립하는 방식이라 디자인을 옮기는 속도가 빠릅니다.
커뮤니티. 2021년 기준 StackOverflow 질문 수, GitHub 기여자 수, Google 트렌드 모두 Flutter가 React Native를 앞섰습니다. 질문하면 답이 있다는 뜻입니다.
네이티브와의 연결. Flutter로 UI를 만드는 데 익숙해지면 그 작업을 네이티브 쪽에서도 활용할 수 있습니다. 플랫폼 채널로 안드로이드의 HealthConnect나 iOS의 CMPedometer 같은 네이티브 API를 직접 호출하는 식입니다.

스타트업에게
채용 공고에서 Flutter를 찾는 자리가 늘었고, 네이버 지식iN이나 eBay처럼 큰 서비스도 Flutter로 만들어졌습니다. 제가 일하던 곳의 러시아워도 Flutter 앱이었습니다. 실시간 지하철 혼잡도를 보여주는 앱인데, 두 플랫폼을 한 사람이 감당할 수 있었던 것은 Flutter 덕분이었습니다.
스타트업에서 중요한 것은 결국 비용입니다.
- 시간. 한 번 만들어 두 스토어에 올립니다. 린 스타트업의 "만들고, 측정하고, 배우는" 루프를 빨리 돌리려면 만드는 시간이 짧아야 합니다.
- 유지보수. 수정도 한 번입니다. 기능 하나를 바꿀 때 두 코드베이스를 맞추는 일이 없습니다.
문제도 있습니다. Flutter 외주 개발자는 아직 구하기 어렵습니다. 팀에 Flutter를 아는 사람이 없고 외부에 맡겨야 한다면, 오히려 React 경험자가 많은 React Native가 나은 선택일 수 있습니다. 특이한 경우지만 실제로 있는 경우입니다.
결론
Flutter 팀이 내건 목표는 "개발자가 앱을 만드는 방식에 대한 생각을 근본적으로 바꾸는 것"입니다. 하나의 코드베이스로 모바일, 웹, 데스크톱을 모두 만들고, 그래픽 성능과 웹·모바일 통합, 새 아키텍처 대응, 개발자 경험에 계속 투자하겠다는 것이 로드맵이었습니다. Google이 뒤에 있다는 점도 무시하기 어렵습니다.
그래서, Flutter입니다. 적어도 작은 팀이 첫 앱을 빨리 만들어 시장에 내놓아야 할 때는요. 부록으로 FlutterFlow를 소개했는데, 코드 없이 Flutter 앱을 조립하는 도구입니다. 프로토타입 단계라면 그것도 선택지입니다.