모바일 어플리케이션 시장, 그리고 Flutter

김진한·2022년 4월 30일
0

Flutter

목록 보기
5/11



모바일 어플리케이션 시장은 IOS와 Android로 나눠집니다. IOS는 Apple이 Android는 Google이 운영하고 있는 거대한 모바일 생태계입니다. 일반적으로 스마트폰을 지칭할 때 아이폰, 갤럭시, IOS, Android를 혼합해서 사용합니다. 하지만 사실 이는 정확한 호칭이 아닙니다. IOS와 아이폰, Android와 갤럭시는 운영체제와 스마트폰의 관계이기 때문입니다. 다시 말해 IOS는 Apple이 제조한 기기들을 운영할 수 있는 소프트웨어이며, Android는 삼성이 개발한 갤럭시 기기들을 운영할 수 있는 소프트웨어입니다.

운영체제란(Operating System)?

  • 하드웨어를 관리 및 운영하는 시스템 소프트웨어를 의미합니다.

IOS

IOS의 원래 이름은 iPhone OS였습니다. 그러다가 IPad, Apple TV 등 다양한기기들에서도 iPhone OS를 사용하면서 IOS라는 명칭으로 변경되었습니다. 개발적인 관점에서 IOS는 Apple에서 개발하는 기기들에만 특화된 독점적인 운영체제이기 때문에 다양한 기기들을 고려하지 않는다는 측면에서 소프트웨어 개발 비용을 낮출 수 있다는 장점이 있습니다. 하지만 Apple의 기기들을 제외하고는 개발한 소프트웨어를 사용할 수 없다는 단점이 있습니다.


Android

Android의 가장 큰 특징은 오픈소스 운영체제라는 것입니다. Android는 커널과 SDK(Software Development Kit), IDE(Integrated Development Environmen)까지 무료로 풀려있기 때문에 개발자들에게 다양한 도전의 기회를 제공합니다.



개발툴WindowMac
Android StudioOO
XcodeXO
비용XO


아래 링크에서 전세계 스마트폰 시장의 메이커 및 OS 점유율을 확인할 수 있습니다.

https://www.chosun.com/economy/int_economy/2022/01/12/3ETNDWYEFBCBNCIVSWGVGLWZCU/





모바일 어플리케이션(APP)의 개발 방식

APP의 개발 방식은 네이티브(Native), 하이브리드(Hybrid), 크로스 플랫폼(Cross Platform)로 나눌 수 있습니다.

앱 이란?

앱(App)은 어플리케이션(Application)의 약자입니다. 일반적으로 국내에서 앱이라 하면 스마트폰에서 사용할 수 있는 프로그램으로 이해하고 있습니다. 하지만 어플리케이션은 특정한 기능을 수행하도록 설계된 응용프로그램을 의미하지 스마트폰에서만 사용할 수 있는 소프트웨어를 말하는 것이 아닙니다.

  1. 네이티브 앱은 Android Studio와 Xcode를 이용해서 특정 플랫폼만을 타겟으로 개발한 앱을 말합니다. 특정 플랫폼만을 타겟으로 한다는 것은 하나의 코드로 개발한 앱을 특정 플랫폼에서만 출시해서 사용할 수 있다는 것을 의미합니다. Android Studio에서 개발한 Android 앱은 Google의 Play Store에서만 사용 가능하며, Xcode에서 개발한 IOS 앱은 Apple의 App Store에서만 사용할 수 있습니다. 개발 언어로는 Android는 Java와 Kotlin, IOS는 Object-C와 Swift를 사용할 수 있습니다. 현재 추세로는 IOS에서는 Object-C는 거의 사용하지 않고, 대부분 Swift를 사용합니다. Android에서는 아직까지는 Java가 더 많이 사용됩니다. 하지만 Kotlin이 Java와 완벽 호환 가능한 언어이고, Google에서 Kotlin을 사용을 권장하고 있어서 kotlin 사용이 증가하고 있습니다. 구글이 kotlin을 권장하는 이유로는 언어의 간결성, 구글과 오라클의 자바 소송 등 여러가지 이유가 있습니다. 국내 개발자들에게는 Android 앱의 개발 툴인 Android Studio와 kotlin을 개발한 개발사가 Jetbrain이라는 점이 크게 작용한 것 같습니다. 익숙했던 IDE를 변경하지 않아도 되며, Jetbraind의 제품을 사용하던 Java 개발자들은 어렵지 않게 코틀린을 학습할 수 있습니다.

  2. 하이브리드 앱은 네이티브 앱과 웹을 합친 방식입니다. 네이티브 앱이라는 형태는 갖추고 있지만 그 안의 내용물은 웹사이트라고 생각하면 됩니다. 이 또한 네이티브 앱과 마찬가지로 특정 플랫폼만을 타겟으로 할 수 있습니다.

  3. 크로스 플랫폼 앱은 단일 코드로 다양한 플랫폼들에서 사용 가능한 어플리케이션을 만들 수 있습니다. Flutter, React Native, Xamarin 등을 이용해서 만들 수 있습니다.



위에서 설명한 3가지 개발 형태를 아래 표에서간략하게 비교했습니다. 이해를 위해 항목별로 상중하로 구분했지만 이것이 모든 기능에 절대적인 지표를 의미하지는 않습니다.

개발툴네이티브하이브리드크로스플랫폼
개발비용
플랫폼 확장성
성능
기기의 사용성





Flutter, 모든 화면에서 아름다운 앱


Flutter가 추구하는 방향은 화면이 있는 여러 플랫폼들에 하나의 코드로 작성한 어플리케이션을 제공하는 것입니다. 예를 들어 Flutter를 사용한다면 모바일, 웹, desktop, 임베디드 기기에서 하나의 코드로 만든 어플리케이션을 제공할 수 있습니다. 모바일 시장에서는 IOS와 Android 앱을 한번에 개발할 수 있는 것입니다. 이것을 가능하도록 만들어주는 핵심 요소 중 하나는 flutter의 렌더링 방식 덕분입니다. 아래 그림들을 통해 Native, React-Native, Flutter의 렌더링 방식을 비교해보겠습니다.

Native

React-Native

Flutter

위의 그림에서 가장 큰 차이는 OEM Widgets과 Bridge입니다. 네이티브 앱과 리액트네이티브 앱에서는 OEM Widgets을 이용해서 화면을 그리고 있습니다. Widget이란 화면을 그리는 하나의 단위이며 각기 플랫폼에는 사용할 수 있는 Widget들이 정의돼 있습니다. 그런데 Flutter는 각 플랫폼의 widgets들을 거치지 않습니다. Flutter가 사용하는 skia엔진은 각 스크린의 픽셀들을 완전히 제어할 수 있기 때문에 픽셀 단위로 렌더링을 실행해버립니다. 이러한 특징 때문에 flutter가 react-navie보다 뛰어난 성능을 보일 수 있습니다.





다음 포스팅에서는 Flutter의 Skia 엔진에 대해 더 자세히 알아보겠습니다.



0개의 댓글