Flutter을 중심으로 한 멀티/크로스 플랫폼 프레임워크들에 대한 단상
이 글은 개인적으로 여러 멀티/크로스 플랫폼 프레임워크 들을 조사하고 사용해보면서 느낀 점들을 쓴 글로 국내 취업 시장을 고려해서 적은 글이 아닙니다.
MAUI, Blazor, Electron, Tauri, Flutter 등을 테스트 해보고 Flutter로 개인 프로젝트를 진행하고 있습니다.
결론을 먼저 적어 보자면
Flutter는 현재 크로스 플랫폼 프레임워크 중 최고라 생각하며 앞으로 타 크로스 플랫폼 프레임워크들과 차이를 벌리고 Native 앱 개발 자리도 많이 잠식할 거로 생각합니다.
Tauri는 성능이 Electron 대비 뚜렷하게 좋기 때문에 거대 IT 기업들이 C++을 서서히 rust로 교체하는 것처럼 Electron이 Tauri로 서서히 교체될 수도 있을 것 같습니다.
때에 따라서는 Flutter가 Electron의 자리까지 잡아먹을 수도 있을 것 같습니다.
Flutter에 대한 오해들을 살펴보면
Google은 과거에 여러 프로젝트를 폐기한 적이 있어 Flutter도 위험하다.
Flutter는 이미 세계적인 대기업들의 모바일 앱이나 Naver 등의 국내 기업들의 모바일 앱 개발에 사용되고 있습니다.
폐기 걱정할 수준은 이미 한참 지났습니다.
Flutter는 Rust처럼 장점이 매우 많은데 탄생한 지 얼마 안 돼서 충분한 라이브러리들이 구축되지 않아 덜 사용되고 있을 뿐입니다.Flutter를 사용하더라도 결국 상당 부분을 Native로 개발해야 한다.
하드웨어를 직접 제어해야 하거나 고사양 게임이 아닌 이상 모든 부분을 Flutter로 개발할 수 있습니다.
단지 라이브러리가 기존 언어나 프레임워크에 비해 충분하지 않아 없는 기능을 직접 만들어야 할 가능성이 있죠.
이 부분은 시간이 해결해 줄 겁니다.아무리 멀티 플랫폼을 지원한다 해도 결국 플랫폼마다 많은 수정이 필요하다.
Flutter로 실제로 개발해 보면 모든 플랫폼에서 거의 동일한 화면을 보여줍니다.
플랫폼별 자잘한 튜닝 정도만 필요합니다.웹과 데스크탑 앱은 불안정하다.
이미 웹과 데스크탑 앱도 안정적으로 되어 충분히 사용하는 데 문제가 없습니다.
Flutter와 다른 프레임워크를 비교해 보자면
크로스 플랫폼 프레임워크 중 Flutter보다 웹, 앱, 데스크탑을 확실히 지원하는 프레임워크는 없습니다.
Electron은 데스크탑만 지원하고 메모리를 많이 차지하며, 파일도 크고, 성능도 느립니다.
Tauri가 성숙해져서 쓸만해지면 점차 Tauri에게 자리를 내줄 수도 있을 것 같습니다.Tauri는 Electron의 단점을 상당히 해소했으나 익히기 어려운 언어인 rust를 따로 익혀야 합니다.
향후 성장에 따라 Electron의 자리를 위협할 수도 있고 Flutter와 비슷한 역할을 할 수도 있을 것 같습니다.React Native는 Javascript가 대세 언어라 수많은 자료가 있고 Javascript 개발자가 쉽게 앱을 개발할 수 있다는 것을 제외하면 Flutter에 비해 장점이 거의 없습니다.
해외의 트렌드는 이미 후발주자인 Flutter가 React Native를 추월했고 향후 차이는 더 벌어질 거로 생각하기 때문에 결국 사장될 거로 생각합니다.MAUI는 갈 길이 멉니다. C# 사용자도 이걸 써야 하나 고민하게 만드는 수준이죠.
C#도 처음에는 별볼일 없었지만 현재 윈도우 데스크탑 앱 개발에 있어서는 독보적인 위치에 있기에 MAUI도 마소가 얼마나 빠르게 성장시킬지가 관건인 것 같습니다.
그렇다면 Flutter가 장점만 있을까요?
탄생한 지 얼마 안 되었기에 레퍼런스와 package가 기존 언어와 프레임워크에 비해 충분하지 않습니다.
직접 써본 경험으로는 2023년에는 그래도 생각 이상으로 라이브러리가 잘 구축되어 있습니다.dart를 배워야 합니다.
제 경험으로는 현역 개발자라면 한두 달이면 충분히 익숙해질 수 있을 것 같습니다.고사양 게임, 하드웨어 제어를 많이 하는 앱 개발에는 맞지 않는다.
고사양 게임은 결국 엔진을 쉽게 다를 수 있는 Native 언어를 사용해야 하고 하드웨어 제어는 플랫폼마다 다르기 때문에 Native 언어를 사용해야 합니다.
개인적인 전망을 말해보자면
Electron, React Native 등의 구조적으로 한계가 있는 프레임워크들은 점차 쇠퇴할 거로 생각합니다.
Flutter, Tauri 등의 명확한 장점이 있는 프레임워크들은 시간이 지날수록 범위를 넓혀나갈 거로 생각합니다.
MAUI는 현재는 최악인데 Microsoft가 Blazor, MAUI 같은 프레임워크들을 포기하지는 않을 것 같기 때문에 최소한 자기들이라도 쓸 수 있는 수준까지는 성장시키지 않을까 생각합니다.