-
네이티브 앱으로 제작할까? 크로스 플랫폼 앱으로 제작할까?일상&스터디/업무 스터디 2022. 6. 10. 07:06
모바일 앱 서비스를 만들다 보면 네이티브 앱으로 갈지, 하이브리드 앱으로 갈지, 크로스 플랫폼 앱으로 갈지 항상 고민하게 됩니다.
단순히 앱 퍼포먼스만을 생각하면 네이티브 앱이 가장 효율적이지만 각각의 OS에 맞추어 개발자를 채용하다 보면 개발비용도 유지운영 비용도 2배로 들게 됩니다. 기업 규모가 크고 인력에 여유가 있다면 양쪽 개발팀을 이끌어갈 수 있지만 규모가 작은 스타트업의 경우 특정 OS의 개발자가 퇴사하면 그때부터 헬게이트가 시작됩니다..ㅠㅠ
그러다 보니 앱 퍼포먼스가 서비스에 큰 영향을 주지 않는 경우에는 하이브리드 앱 방식을 선택하는 기업들이 늘고 있는데요.
단순히 Native 앱 껍데기에 webview 기능을 얹어서 모바일 웹 화면을 그대로 서비스하기도 하고,
네이티브 App 기능과 Web 기능을 적절히 섞어 쓰기도 하고,
크로스 플랫폼 앱 기술을 이용해서 하나의 코드로 각각의 OS 엔진을 실행하기도 합니다.
기술에도 트렌드가 있다 보니 각 시대별 선호하는 개발 방식이 달라지게 되는데요.
최근에는 Google의 무료 오픈 소스 다트(Dart) 언어를 사용하는 플러터(Flutter)를 이용한 크로스 플랫폼 앱 개발 방식이 빠르게 늘고 있고 있습니다. 틱톡으로 잘 알려진 바이트댄스부터, 알리바바, 텐센트 등 중국 IT 대기업들뿐만 아니라, 구글 애즈(Google Ads), 구글 페이(Google Pay), 이베이 등 미국 공룡 기업들까지 다양한 기업에서 이미 플러터를 도입하고 있어요!
저희도 네이티브 앱+웹뷰 방식에서 플러터로 전환을 진행 중에 있는데요.
네이티브 앱과 크로스 플랫폼 앱의 기술 특성을 잘 정리한 글이 있어서 공유합니다.
네이티브 앱 (Native Application)
네이티브 앱은 모바일 기기에 최적화되어 있는 모바일 앱으로, 안드로이드와 iOS와 같은 각 플랫폼에 특정 프로그래밍 언어를 사용하여 만들어진 앱을 말해요.
안드로이드 앱의 경우 코틀린(Kotlin)과 자바(Java) 언어를 활용하여 Google에서 제공하는 안드로이드 SDK를 이용하여 개발하고, iOS의 경우 스위프트(Swift)와 Objective-C 언어로 애플에서 제공하는 iOS SDK를 이용하여 네이티브 앱 개발이 가능합니다.
장점
네이티브 앱은 안드로이드와 iOS 각 모바일 OS 기반의 API로 개발하는 앱을 말합니다. 속도가 빠르고 안정적인 데다, 다양한 퍼포먼스를 구현할 수 있어 사용자 경험의 질을 높이는 데 유리하죠. 모바일 OS에서 제공하는 기능인 블루투스, 위치기반 서비스, 앱 결제 등에 자유롭게 접근이 가능하고, 디바이스 전체에 액세스 할 수 있어 주소록, 캘린더 등의 고유 정보도 활용할 수 있습니다.
단점
네이티브 앱은 안드로이드와 iOS의 호환이 불가능하여 앱을 각각 따로 제작해야 해서 개발 비용이나 시간이 2배로 소요됩니다. 유지 보수 또한 2배로 소요되죠. 또, 수정이나 업데이트가 있는 경우, 변경 후 각 앱 스토어의 심사를 통과해야 해서 늦게 반영될 수도 있습니다.
크로스 플랫폼 앱(Cross-Platform Application)
크로스 플랫폼 앱은 한 가지의 개발 언어와 프레임워크로 안드로이드, iOS 네이티브 앱을 만드는 개발 방식입니다. 네이티브 코드가 아닌 다른 개발 언어로 코드를 작성 후 각각의 OS가 이해할 수 있는 코드로 컴파일 한 후, 각각의 OS의 엔진으로 실행하는 방식이에요. 대표적으로는 플러터(Flutter), 리액트 네이티브(React Native), 자마린(Xamarin)이 있습니다.
장점
네이티브 앱으로 안드로이드와 iOS 앱을 개발하기 위해서는 각각의 스펙에 맞는 개발자 인력이 필요합니다. 비용과 시간 또한 2배로 소요되죠. 반면, 크로스 플랫폼 앱은 한 가지의 코드로 2가지 플랫폼 앱을 모두 개발할 수 있다는 점에서, 개발 시간과 비용을 줄일 수 있어요.
단점
기존 네이티브 앱이 가지고 있는 동적인 요소 퍼포먼스를 100% 구현할 수 없는 단점이 있습니다. 일반적으로 네이티브 앱에 비해 성능이 떨어져 느린 경우도 있고, 라이브러리가 다양하지 않아 기능 구현이 어렵기도 해요. 뿐만 아니라, 안드로이드와 iOS OS에 새로운 기능이 추가되면 네이티브 앱은 즉시 사용 및 업데이트가 가능하지만, 크로스 플랫폼 앱은 사용에 있어 업데이트 지연이 발생할 수 있어요.
Flutter 프레임워크
플러터는 크로스 플랫폼 앱 개발을 위한 Google의 무료 오픈 소스 SDK로, 다트(Dart) 언어를 사용해요. 2018년 공식적으로 출시된 이후, 플러터는 빠르게 성장하고 있습니다.
플러터가 등장하기 이전에도 크로스 플랫폼 앱 프레임워크는 있었지만, 네이티브 앱만큼의 성능을 구현하지 못해 주목받지 못했던 반면, 플러터는 보다 기능적이고, 네이티브 앱과 유사한 성능을 구현할 수 있어 많은 개발자들의 주목을 받고 있는데요. 특히 미리 만들어진 위젯 라이브러리를 사용하여 빠르게 개발할 수 있다는 점에서 주로 개발 비용을 줄이고, 속도를 높이고 싶은 스타트업에게 많은 선택을 받고 있습니다.
플러터는 시각적으로도 매력적인 UI 요소와 위젯의 폭넓은 선택이 가능한 장점이 있어요. 뿐만 아니라, 개발자가 애니메이션을 빠르게 사용자 지정할 수 있는 고성능 렌더링 엔진을 제공하고, 프로그래머가 작업을 저장할 필요 없이 모든 코딩 변경 사항을 실시간으로 볼 수 있는 핫 리로드 기능도 지원해요.반응형