brunch

You can make anything
by writing

C.S.Lewis

by 서준수 Feb 20. 2020

플러터(Flutter) 개요

플러터(Flutter)가 뭐지?

플러터는 구글이 만든 크로스 플랫폼 앱 개발 프레임워크이다. 즉 하나의 코드로 다양한 환경에서 동작하는 앱을 개발할 수 있다. 현재는 모바일 양대산맥인 안드로이드와 iOS를 동시에 개발하는데 주로 사용된다. 하지만 웹, 데스크톱 앱 개발까지 지원하며 지속적으로 발전하고 있다.



플러터에서 사용하는 언어는 구글이 개발한 다트(Dart)이다. 플러터와 다트는 모두 오픈 소스라 무료이다.


플러터 성능은 괜찮을까?

플러터 이전에도 크로스 플랫폼은 존재했다. 하지만 성능 이슈 등으로 제대로 빛을 보지 못했다. 따라서 개인적인 크로스 플랫폼에 대한 인식은 불안정한 플랫폼이며 적은 노력으로 두 생태계의 완전한 앱을 만들기엔 시기상조라고 생각했다. 그러나 최근 플러터로 개발된 상용 앱들이 네이티브로 개발한 것과 차이를 느끼지 못할 수준인 것을 보고 생각이 바뀌었다.


실제로 플러터 공식 사이트에서 당당하게 네이티브 수준의 성능을 낸다고 말하고 있다.


어째서 플러터의 성능은 좋을까?

1. 배포(Release mode) 시 AOT를 통해서 Dart 코드를 각 플랫폼의 네이티브에 맞는 코드로 컴파일하기 때문이다.

2. 디바이스의 렌더링을 Skia라는 오픈 소스 그래픽 라이브러리에 맡긴다. 그로 인해 대부분의 작업에서 GPU를 사용하여 UI가 60 fps로 동작한다. 또한 Skia를 사용하면서 네이티브 컴포넌트를 사용하지 않게 되어 안드로이드나 iOS에 관계없이 비슷한 화면을 구성할 수 있는 것이다.


왜 플러터를 써야 되지?

네이티브 성능을 가지면서 크로스 플랫폼 개발이 가능한 것만으로도 큰 이유이다. 하지만 굳이 크로스 플랫폼 개발이 필요 없는 경우라면 꼭 플러터를 쓸 필요가 있을까 하는 의문이 남는다. iOS는 필요 없고 안드로이드 개발만 한다고 해도 분명 장점은 있다.


1. Hot reload를 통한 쉽고 빠른 개발이 가능하다.

 - Hot reload는 개발 중인 앱이 디바이스나 에뮬레이터에서 실행 중일 때 코드를 수정한 후 저장을 하면 곧바로 수정 내용을 자동으로 반영해준다. 그러면 수정사항이 앱에 어떤 영향을 미치는지 빠르게 확인할 수 있다. 특히 UI를 변경하면 곧바로 변경점이 확인 가능하기 때문에 UI 구성에 소모되는 시간을 대폭 줄일 수 있다. 예를 들어 버튼 위치 조정을 위해 마진 값을 변경했다고 하자. 네이티브에서는 실제 동작 확인을 위해서는 빌드한 후 단말기에 설치하는 시간이 소모된다. 그 시간이 생각보다 길다.



Hot reload는 앞서 말한 Release mode에서는 작동하지 않는다. 오직 Debug mode에서만 작동한다. 이때는 AOT가 아닌 (dart 1.21 버전부터) JIT으로 컴파일이 되기 때문에 빠른 반영이 가능한 것이다.


2. 내장된 위젯, 모션 API 등으로 멋진 UI 구성이 쉽다.

 - 플러터가 기본적으로 안드로이드를 위한 머터리얼 위젯과 iOS를 위한 쿠퍼티노 위젯을 포함하고 있어서 쉽게 멋진 UI 구성이 가능하다. 네이티브처럼 별도의 xml을 통해 layout을 구성하는 방식이 아니고 코드로 위젯을 구성해나간다. 이때 Hot reload를 통한 즉각적인 피드백을 통해서 마치 html로 레이아웃을 구성하는 기분을 느낄 수 있다.


https://flutter-ko.dev/docs/development/ui/widgets


여담으로 구글의 장기 계획을 알 수는 없지만 개발 진행 중인 새로운 OS Fuchsia가 추후 안드로이드를 대체하거나 다른 플랫폼에서 성공을 거둔다면 플러터의 위상은 매우 높아질 것이라고 생각한다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari