Skip to content

크로스 플랫폼 모바일 개발이란 무엇인가요?

오늘날 많은 기업이 여러 플랫폼, 특히 안드로이드(Android)와 iOS 모두를 위한 모바일 앱을 구축해야 하는 과제에 직면해 있습니다. 이것이 바로 크로스 플랫폼 모바일 개발 솔루션이 가장 인기 있는 소프트웨어 개발 트렌드 중 하나로 떠오른 이유입니다.

Statista에 따르면, 2022년 3분기 기준 구글 플레이 스토어에는 355만 개의 모바일 앱이, 앱스토어에는 160만 개의 앱이 등록되어 있으며, 안드로이드와 iOS는 현재 전 세계 모바일 운영 체제 시장의 99%를 차지하고 있습니다.

안드로이드와 iOS 사용자 모두에게 도달할 수 있는 모바일 앱을 어떻게 만들 수 있을까요? 이 기사에서는 왜 점점 더 많은 모바일 엔지니어들이 크로스 플랫폼 또는 멀티플랫폼 모바일 개발 방식을 선택하고 있는지 알아보겠습니다.

크로스 플랫폼 모바일 개발: 정의 및 솔루션

멀티플랫폼 모바일 개발은 여러 운영 체제에서 원활하게 실행되는 단일 모바일 애플리케이션을 구축할 수 있도록 하는 접근 방식입니다. 크로스 플랫폼 앱에서는 소스 코드의 일부 또는 전체를 공유할 수 있습니다. 즉, 개발자는 각 개별 플랫폼에 맞게 코드를 다시 작성할 필요 없이 안드로이드와 iOS 모두에서 작동하는 모바일 자산을 생성하고 배포할 수 있습니다.

모바일 앱 개발의 다양한 접근 방식

안드로이드와 iOS 모두를 위한 애플리케이션을 만드는 데는 크게 네 가지 방법이 있습니다.

1. 각 운영 체제별 별도의 네이티브 앱

네이티브 앱을 만들 때 개발자는 특정 운영 체제용 애플리케이션을 구축하며, 한 플랫폼을 위해 특별히 설계된 도구와 프로그래밍 언어에 의존합니다. 안드로이드의 경우 Kotlin 또는 Java, iOS의 경우 Objective-C 또는 Swift를 사용합니다.

이러한 도구와 언어는 특정 OS의 기능과 성능에 접근할 수 있게 해주며, 직관적인 인터페이스를 갖춘 반응형 앱을 제작할 수 있게 해줍니다. 하지만 안드로이드와 iOS 사용자 모두에게 도달하고 싶다면 별도의 애플리케이션을 만들어야 하며, 이는 많은 시간과 노력이 소요됩니다.

2. 프로그래밍 웹 앱 (PWAs)

프로그래밍 웹 앱(Progressive Web Apps)은 모바일 앱의 기능과 웹 개발에 사용되는 솔루션을 결합한 것입니다. 대략적으로 말하자면, 웹사이트와 모바일 애플리케이션의 혼합 형태를 제공합니다. 개발자는 JavaScript, HTML, CSS, WebAssembly와 같은 웹 기술을 사용하여 PWA를 구축합니다.

웹 애플리케이션은 별도의 번들링이나 배포가 필요하지 않으며 온라인에 게시할 수 있습니다. 컴퓨터, 스마트폰, 태블릿의 브라우저를 통해 액세스할 수 있으며 구글 플레이나 앱스토어를 통해 설치할 필요가 없습니다.

단점은 사용자가 앱을 사용하는 동안 연락처, 캘린더, 전화 및 기타 자산과 같은 기기의 모든 기능을 활용할 수 없어 사용자 경험이 제한된다는 점입니다. 앱 성능 측면에서는 네이티브 앱이 앞서 있습니다.

3. 크로스 플랫폼 앱

앞서 언급했듯이, 멀티플랫폼 앱은 서로 다른 모바일 플랫폼에서 동일하게 실행되도록 설계되었습니다. 크로스 플랫폼 프레임워크를 사용하면 이러한 앱을 개발할 목적으로 공유 및 재사용 가능한 코드를 작성할 수 있습니다.

이 접근 방식은 시간과 비용 측면의 효율성 등 여러 가지 이점이 있습니다. 크로스 플랫폼 모바일 개발의 장단점은 뒷부분에서 더 자세히 살펴보겠습니다.

4. 하이브리드 앱

웹사이트나 포럼을 둘러보다 보면 "크로스 플랫폼 모바일 개발(cross-platform mobile development)"과 "하이브리드 모바일 개발(hybrid mobile development)"이라는 용어를 혼용해서 사용하는 경우를 볼 수 있습니다. 그러나 이는 완전히 정확한 표현은 아닙니다.

크로스 플랫폼 앱의 경우, 모바일 엔지니어는 코드를 한 번 작성한 다음 다른 플랫폼에서 재사용할 수 있습니다. 반면, 하이브리드 앱 개발은 네이티브 기술과 웹 기술을 결합하는 방식입니다. HTML, CSS 또는 JavaScript와 같은 웹 개발 언어로 작성된 코드를 네이티브 앱에 내장해야 합니다. Ionic Capacitor나 Apache Cordova와 같은 프레임워크를 사용하고, 플랫폼의 네이티브 기능에 접근하기 위해 추가 플러그인을 사용하여 이를 수행할 수 있습니다.

크로스 플랫폼 개발과 하이브리드 개발의 유일한 유사점은 코드 공유 가능성입니다. 성능 측면에서 하이브리드 애플리케이션은 네이티브 앱과 대등하지 않습니다. 하이브리드 앱은 단일 코드베이스를 배포하기 때문에, 특정 OS에만 국한된 일부 기능이 다른 OS에서는 제대로 작동하지 않을 수 있습니다.

네이티브 또는 크로스 플랫폼 앱 개발: 오래된 논쟁

네이티브와 크로스 플랫폼 개발을 둘러싼 논쟁은 기술 커뮤니티에서 여전히 해결되지 않은 과제입니다. 두 기술 모두 끊임없이 진화하고 있으며 각자의 장점과 한계가 있습니다.

일부 전문가들은 여전히 네이티브 앱의 강력한 성능과 더 나은 사용자 경험을 가장 중요한 이점으로 꼽으며 멀티플랫폼 솔루션보다 네이티브 모바일 개발을 선호합니다.

그러나 많은 현대 기업은 안드로이드와 iOS 모두에 진출하는 것을 목표로 하면서도, 시장 출시 시간(time to market)과 플랫폼당 개발 비용을 줄여야 합니다. 넷플릭스(Netflix)의 시니어 소프트웨어 엔지니어인 David Henry와 Mel Yahya가 언급했듯이, 바로 이 지점에서 Kotlin Multiplatform (KMP)과 같은 크로스 플랫폼 개발 기술이 도움이 될 수 있습니다.

"불안정한 네트워크 연결 가능성이 높기 때문에 견고한 클라이언트 측 데이터 영속성과 오프라인 지원을 위해 모바일 솔루션에 의존하게 되었습니다. 빠른 제품 배포의 필요성으로 인해 멀티플랫폼 아키텍처를 실험하게 되었습니다. 이제 우리는 Kotlin Multiplatform을 사용하여 플랫폼에 구애받지 않는 비즈니스 로직을 Kotlin으로 한 번 작성하고, 안드로이드용 Kotlin 라이브러리와 iOS용 네이티브 유니버설 프레임워크(Universal Framework)로 컴파일함으로써 이를 한 단계 더 발전시키고 있습니다."

Discover Kotlin Multiplatform

크로스 플랫폼 모바일 개발이 귀하에게 적합할까요?

귀하에게 적합한 모바일 개발 방식을 선택하는 것은 비즈니스 요구 사항, 목표 및 과제와 같은 많은 요소에 달려 있습니다. 다른 솔루션과 마찬가지로 크로스 플랫폼 모바일 개발도 장단점이 있습니다.

크로스 플랫폼 개발의 이점

기업들이 다른 옵션 대신 이 접근 방식을 선택하는 데에는 많은 이유가 있습니다.

1. 재사용 가능한 코드

크로스 플랫폼 프로그래밍을 사용하면 모바일 엔지니어가 모든 운영 체제에 대해 새 코드를 작성할 필요가 없습니다. 단일 코드베이스를 사용하면 개발자가 API 호출, 데이터 저장, 데이터 직렬화 및 분석 구현과 같은 반복적인 작업에 소요되는 시간을 줄일 수 있습니다.

Kotlin Multiplatform과 같은 기술을 사용하면 앱의 데이터, 비즈니스 및 프레젠테이션 레이어를 단 한 번만 구현할 수 있습니다. 또는 KMP를 점진적으로 도입할 수도 있습니다. 데이터 검증, 필터링 또는 정렬과 같이 자주 변경되고 대개 동기화가 깨지기 쉬운 로직 조각을 선택하여 크로스 플랫폼으로 만든 다음, 이를 마이크로 라이브러리로 프로젝트에 연결하세요.

JetBrains에서는 정기적으로 Kotlin Multiplatform 설문 조사를 실시하여 커뮤니티 구성원들에게 서로 다른 플랫폼 간에 코드의 어느 부분을 공유하는지 묻고 있습니다.

Kotlin Multiplatform 사용자가 플랫폼 간에 공유할 수 있는 코드 부분

2. 시간 절약

코드 재사용성 덕분에 크로스 플랫폼 애플리케이션은 더 적은 코드를 필요로 하며, 코딩에 있어서 적은 코드가 더 많은 것을 의미합니다. 코드를 많이 작성할 필요가 없으므로 시간이 절약됩니다. 또한 코드 줄 수가 적을수록 버그가 발생할 여지가 줄어들어 코드 테스트 및 유지 관리 비용도 절감됩니다.

3. 효율적인 리소스 관리

별도의 애플리케이션을 구축하는 것은 비용이 많이 듭니다. 단일 코드베이스를 보유하면 리소스를 효과적으로 관리하는 데 도움이 됩니다. 안드로이드 및 iOS 개발 팀 모두 공유 코드를 작성하고 사용하는 방법을 배울 수 있습니다.

4. 개발자에게 매력적인 기회

많은 모바일 엔지니어는 현대적인 크로스 플랫폼 기술을 제품의 기술 스택(tech stack)에서 매력적인 요소로 여깁니다. 개발자는 JSON 파싱과 같은 반복적이고 일상적인 작업을 수행해야 할 때 업무에 지루함을 느낄 수 있습니다. 그러나 새로운 기술과 과제는 그들에게 흥미, 동기 부여 및 업무의 즐거움을 되찾아줄 수 있습니다. 이러한 방식으로 현대적인 기술 스택을 갖추는 것은 실제로 모바일 개발 팀을 구성하고 팀원들이 오랫동안 몰입하고 열정을 유지하도록 하는 데 도움이 될 수 있습니다.

5. 더 넓은 사용자 층 확보 기회

플랫폼 중 하나를 선택할 필요가 없습니다. 앱이 여러 운영 체제와 호환되므로 안드로이드와 iOS 사용자 모두의 요구를 충족하고 도달 범위를 극대화할 수 있습니다.

6. 빠른 시장 출시 및 커스터마이징

플랫폼별로 다른 앱을 빌드할 필요가 없으므로 제품을 훨씬 빠르게 개발하고 출시할 수 있습니다. 또한 애플리케이션을 커스터마이징하거나 변형해야 하는 경우, 프로그래머가 코드베이스의 특정 부분에 작은 변경을 가하는 것이 더 쉽습니다. 이를 통해 사용자 피드백에 더욱 신속하게 대응할 수 있습니다.

크로스 플랫폼 개발 방식의 과제

모든 솔루션에는 나름의 한계가 있습니다. 기술 커뮤니티의 일부에서는 크로스 플랫폼 프로그래밍이 여전히 성능과 관련된 글리치(glitch)로 어려움을 겪고 있다고 주장합니다. 또한 프로젝트 리더는 개발 프로세스 최적화에 집중하는 것이 앱의 사용자 경험에 부정적인 영향을 미칠 수 있다는 우려를 가질 수도 있습니다.

그러나 기반 기술이 개선됨에 따라 크로스 플랫폼 솔루션은 점점 더 안정적(stable)이고, 적응력이 뛰어나며, 유연해지고 있습니다.

다음은 6개월 간격으로 실시된 프레임워크 사용에 관한 두 번의 Kotlin Multiplatform 사용자 설문 조사 결과입니다.

Kotlin Multiplatform 사용 설문 조사 결과

자주 언급되는 또 다른 우려는 멀티플랫폼 개발이 플랫폼의 네이티브 기능을 완벽하게 지원하는 것을 불가능하게 만든다는 점입니다. 하지만 Kotlin Multiplatform에서는 Kotlin의 expected 및 actual 선언을 사용하여 멀티플랫폼 앱이 플랫폼별 API에 접근할 수 있도록 할 수 있습니다. expected 및 actual 선언을 사용하면 공통 코드에서 여러 플랫폼에 걸쳐 동일한 함수를 호출할 수 있음을 "기대(expect)"한다고 정의하고, Kotlin의 Java 및 Objective-C/Swift와의 상호운용성 덕분에 모든 플랫폼별 라이브러리와 상호 작용할 수 있는 "실제(actual)" 구현을 제공할 수 있습니다.

현대의 멀티플랫폼 프레임워크가 계속 발전함에 따라 모바일 엔지니어들이 네이티브와 유사한 경험을 제작할 수 있는 기회가 점점 더 많아지고 있습니다. 애플리케이션이 잘 작성되었다면 사용자는 그 차이를 알아채지 못할 것입니다. 그러나 제품의 품질은 선택하는 크로스 플랫폼 앱 개발 도구에 크게 좌우될 것입니다.

가장 인기 있는 크로스 플랫폼 솔루션

가장 인기 있는 크로스 플랫폼 프레임워크로는 Flutter, React Native, Kotlin Multiplatform 등이 있습니다. 이러한 프레임워크는 각기 다른 기능과 강점을 가지고 있습니다. 사용하는 도구에 따라 개발 프로세스와 결과가 달라질 수 있습니다.

Flutter

구글에서 만든 Flutter는 Dart 프로그래밍 언어를 사용하는 크로스 플랫폼 개발 프레임워크입니다. Flutter는 위치 서비스, 카메라 기능, 하드 드라이브 액세스와 같은 네이티브 기능을 지원합니다. Flutter에서 지원하지 않는 특정 앱 기능을 만들어야 하는 경우, Platform Channel 기술을 사용하여 플랫폼별 코드를 작성할 수 있습니다.

Flutter로 빌드된 앱은 모든 UX 및 UI 레이어를 공유해야 합니다. 이 프레임워크의 가장 큰 장점 중 하나는 개발자가 변경 사항을 즉시 확인할 수 있는 Hot Reload 기능입니다.

이 프레임워크는 다음과 같은 상황에서 최선의 선택이 될 수 있습니다.

  • 앱 간에 UI 컴포넌트를 공유하고 싶지만 애플리케이션이 네이티브에 가깝게 보이기를 원하는 경우.
  • 앱이 CPU/GPU에 과도한 부하를 줄 것으로 예상되어 성능 최적화가 필요한 경우.
  • MVP(최소 기능 제품)를 개발해야 하는 경우.

Flutter로 빌드된 가장 인기 있는 앱으로는 Google Ads, 알리바바의 Xianyu, eBay Motors, Hamilton 등이 있습니다.

Kotlin Multiplatform과 Flutter를 자세히 살펴보고 각 기능을 이해하여 크로스 플랫폼 프로젝트에 적합한 것을 결정해 보세요.

React Native

페이스북은 2015년에 모바일 엔지니어가 하이브리드 네이티브/크로스 플랫폼 앱을 빌드할 수 있도록 설계된 오픈 소스 프레임워크인 React Native를 도입했습니다. 이는 사용자 인터페이스를 구축하기 위한 JavaScript 라이브러리인 ReactJS를 기반으로 합니다. 즉, JavaScript를 사용하여 안드로이드 및 iOS 시스템용 모바일 앱을 빌드합니다.

React Native는 즉시 사용 가능한 컴포넌트가 포함된 여러 서드파티 UI 라이브러리에 대한 액세스를 제공하여 모바일 엔지니어가 개발 프로세스 중에 시간을 절약할 수 있도록 돕습니다. Flutter와 마찬가지로 Fast Refresh 기능 덕분에 모든 변경 사항을 즉시 확인할 수 있습니다.

다음과 같은 경우 앱에 React Native 사용을 고려해야 합니다.

  • 애플리케이션이 비교적 단순하고 가벼울 것으로 예상되는 경우.
  • 개발 팀이 JavaScript나 React에 능숙한 경우.

React Native로 빌드된 애플리케이션으로는 Facebook, Instagram, Skype, Uber Eats 등이 있습니다.

Kotlin Multiplatform

Kotlin Multiplatform은 JetBrains에서 만든 오픈 소스 기술로, 네이티브 프로그래밍의 이점을 유지하면서 플랫폼 간에 코드를 공유할 수 있게 해줍니다. 주요 이점은 다음과 같습니다.

  • 네이티브 코드를 유지하면서 안드로이드, iOS, 웹, 데스크톱 및 서버 측에서 코드를 재사용할 수 있는 능력.
  • 기존 프로젝트와의 원활한 통합. 네이티브 및 크로스 플랫폼 개발의 이점을 최대한 활용하면서 플랫폼별 API를 사용할 수 있습니다.
  • JetBrains에서 만든 현대적인 선언적 크로스 플랫폼 UI 프레임워크인 Compose Multiplatform 덕분에 완전한 코드 공유 유연성과 로직 및 UI 모두를 공유할 수 있는 기능.
  • 안드로이드용으로 이미 Kotlin을 사용하고 있는 경우 코드베이스에 새로운 언어를 도입할 필요가 없습니다. Kotlin 코드와 전문 지식을 재사용할 수 있으므로 다른 기술에 비해 Kotlin Multiplatform으로의 마이그레이션 위험이 적습니다.

팀이 새로운 멀티플랫폼 기술을 도입하는 데 도움이 필요하다면, 팀에 멀티플랫폼 개발을 도입하는 방법 가이드를 검토해 보시기 바랍니다.

Get Started with Kotlin Multiplatform

McDonald's, Netflix, 9GAG, VMware, Cash App, Philips 등 많은 기업들이 이미 Kotlin Multiplatform의 점진적 통합 능력과 낮은 도입 위험을 활용하고 있습니다. 그중 일부는 기존 Kotlin 코드의 특정 중요 부분을 공유하여 앱 안정성을 높이는 방식을 선택합니다. 다른 기업들은 앱 품질을 타협하지 않으면서 코드 재사용을 극대화하고 모바일, 데스크톱, 웹, TV에 걸쳐 모든 애플리케이션 로직을 공유하는 동시에 각 플랫폼의 네이티브 UI를 보존하는 것을 목표로 합니다. 이러한 접근 방식의 이점은 이미 이를 도입한 기업들의 사례를 통해 분명하게 드러납니다.

글로벌 기업 및 스타트업의 모든 Kotlin Multiplatform 사례 연구를 확인해 보세요.

결론

크로스 플랫폼 개발 솔루션이 계속 발전함에 따라, 그 한계는 제공하는 이점에 비해 미미해지기 시작했습니다. 시장에는 다양한 기술이 나와 있으며, 각각 다른 워크플로와 요구 사항에 적합합니다. 이 기사에서 논의된 각 도구는 크로스 플랫폼 도입을 고민하는 팀을 위해 광범위한 지원을 제공합니다.

궁극적으로 특정 비즈니스 요구 사항, 목적 및 과제를 신중하게 고려하고 앱을 통해 달성하고자 하는 명확한 목표를 개발하는 것이 귀하에게 가장 적합한 솔루션을 찾는 데 도움이 될 것입니다.