Flutter, 실서비스에 이용될 수 있을까?
2021년 11월 19일Flutter는 구글에서 개발한 크로스 플랫폼 프레임워크입니다. Flutter 프레임워크 안에서 Dart 언어를 이용하면 iOS, Android, Web 앱을 한 번에 개발할 수 있습니다. 필자는 flutter를 접하면서 동시에 iOS와 Android 앱을 개발할 수 있다는 사실에 무척 좋았습니다. 하지만 주변에서 flutter를 가지고 개발한다는 소리를 좀처럼 들을 수 없었습니다. iOS의 swift, Android의 kotlin와 같은 네이티브로만 개발하지 flutter를 메인으로 개발하는 현업자나 기업을 찾기 힘들었습니다. 물론, flutter가 시장에 나온지 얼마 되지 않아 커뮤니티가 부족하고 기존에 네이티브 언어로 개발한 것을 굳이 flutter로 옮길 경제적, 시간적 문제, 새롭게 flutter 환경을 배워야하는 부담감, 네이티브와의 성능 차이 등의 현실적인 이유가 있을겁니다. 주변 현업자분들의 이야기를 들어보니 아직 flutter에 대한 신뢰도가 네이티브만하지 않아 도입하기 어려운 부분이 있다고 했습니다. 정말 flutter를 통해 실서비스에 활용하기 힘들까? 하는 의구심이 들었습니다. 이러한 의구심에 답해줄 글을 여러분들에게 소개하려 합니다.
2019년 10월, 네이버 지식iN 팀은 기존의 지식iN 앱을 flutter로 옮겨 앱을 출시했습니다. 네이버 지식iN팀은 iOS와 Android 네이티브를 개발하면서 발생한 문제점을 다음과 같이 이야기합니다.
- 플랫폼 상황에 따른 일정 변경
- 플랫폼 간의 소통의 어려움
- 플랫폼 간의 개발자 불균형
위 3개의 문제점들은 공통으로 플랫폼 간의 상황이 공유되기 어려워, 한 팀으로 꾸리기 힘들다는 것이었습니다. 이런 플랫폼 차이를 극복하고자 크로스 플랫폼에 눈을 돌립니다. 하지만 개발자들은 크로스 플랫폼에 대해 회의적인 의견들이 있었습니다.
크로스 플랫폼에 대한 평소 생각은?의 설문조사에 학습 비용이 클 것이다, 성능이 안 좋을 것이다, 버그가 많을 것이다 순으로 나타났습니다. 지식iN 팀은 이러한 회의적인 시선을 타파하고자 여러 크로스 플랫폼을 아래의 평가 기준에 따라 비교하고 직접 테스트한 후 최종적으로 flutter를 도입 하기로 결정했습니다.
- 평가 기준
구분 내용 학습 비용 초심자가 쉽게 학습할 수 있는가? 가독성 개발 언어나 프레임워크의 가독성이 좋은가? 서드파티 서드파티 라이브러리를 가져다 쓰기 쉬운가? 커뮤니티 활성도 이슈가 발생했을 때 Stack Overflow와 같은 커뮤니티에서 답을 찾기 쉬운가? 개발도구 사용성 IDE 사용성이 좋은가? 디버거 디버가 잘 작동하는가? 디버깅이 쉬운가? 컴파일 속도 컴파일 속도가 기존 iOS, Android용 개발 도구보다 느린가? 런타임 속도 UI 실행 속도와 애니메이션 실행 속도가 느린가? 안정성 크래시가 발생하는가? 호환성 네이티브 코드와 같이 쓸 수 있는가? 프레임워크 버전마다 API의 차이가 많은가? 로컹라이징 로컬라이징이 어려운가? 테스트 용이성 UI 테스트와 유닛 테스트를 하기 쉬운기?
Flutter를 통해 개발자 불균형을 해결하는건 좋았지만 현실적인 문제들이 있었습니다. 원하는 기능들을 실서비스 수준만큼 구현할 수 있는지? iOS, Android SDK를 활용할 수 있는지? 지식iN 팀은 Dart 언어의 선언형 문법과 Hot reload로 수월한 UI 작업, MethodChannel로 네이티브 SDK 연동으로 짧은 기간안에 여러 기능들을 구현할 수 있었다고 말합니다. 지식iN 팀은 결과적으로 flutter를 통해 2019년 1월부터 2019년 10월까지 9개월 동안 개발을 진행하여 지식iN ONE 앱을 출시했습니다. 그리고 현재는 네이버 앱과 대응하는 작업까지 구현했습니다.
편한 방법에는 그에 따른 단점이 있다고 생각합니다. Flutter도 동시에 여러 플랫폼을 개발 한다는 편의성이 있지만 네이티브에 비해 안정성, 성능면이 떨어진다 생각했습니다. 하지만 네이버 지식iN 팀의 사례를 보면서 단점을 상쇄 시킬만큼의 장점을 볼 수 있었습니다. Flutter 환경을 좋아하는 사람으로서 이러한 행보는 너무나도 반갑고 앞으로 flutter가 널리 쓰였으면 좋겠습니다. 최근에 발표한 NAVER Tech Talk: Flutter meetup도 참고하면 좋을 것 같습니다.