Skip to main content

Command Palette

Search for a command to run...

모바일 앱 개발 방식 비교: Hybrid, Native, Cross-Platform, PWA

상황별 추천하는 앱 개발 방식

Updated
4 min read
모바일 앱 개발 방식 비교: Hybrid, Native, Cross-Platform, PWA

모바일 애플리케이션 개발은 여러 가지 방식으로 접근할 수 있으며, 그 중 대표적인 방법으로는 하이브리드 앱, 네이티브 앱, 크로스플랫폼 앱, 그리고 프로그레시브 웹 앱(PWA)이 있다. 각 방법은 장단점이 있으며, 특정 상황에 따라 더 적합할 수 있다. 아래에서는 이 네 가지 방식의 차이점과 각각의 특징에 대해 알아보겠다.

하이브리드 앱 (Hybrid App)

하이브리드 앱은 웹 기술을 사용하여 개발된 후, 네이티브 쉘에 포장된 형태의 애플리케이션이다. 이는 기본적으로 웹 애플리케이션을 네이티브 모바일 환경에서 실행할 수 있도록 만든 것이다.

특징:

  • 단일 코드베이스: 한 번의 코딩으로 여러 플랫폼(iOS, Android)에서 실행 가능하다.

  • 개발 속도: 빠른 개발과 배포가 가능하며, 유지보수가 용이하다.

  • 성능: 네이티브 앱에 비해 성능이 다소 떨어질 수 있다.

  • 웹뷰(WebView) 의존성: 대부분의 하이브리드 앱은 웹뷰를 사용하여 콘텐츠를 렌더링한다.

대표 프레임워크:

  • Apache Cordova (PhoneGap)

  • Ionic

  • Framework7

네이티브 앱 (Native App)

네이티브 앱은 특정 플랫폼(iOS, Android)을 위해 해당 플랫폼의 언어(Swift, Kotlin/Java 등)와 도구를 사용하여 개발된 애플리케이션이다. 각 플랫폼에 맞게 별도로 개발되어 최적의 성능과 사용자 경험을 제공한다.

특징:

  • 최고의 성능: 플랫폼에 최적화되어 뛰어난 성능과 반응 속도를 제공한다.

  • 플랫폼별 최적화: 각 플랫폼의 UI/UX 가이드라인을 따르므로, 사용자에게 익숙한 인터페이스를 제공한다.

  • 접근성: 플랫폼의 모든 기능과 API에 접근 가능하다.

  • 개발 비용: 여러 플랫폼을 지원하려면 각각 따로 개발해야 하므로 비용과 시간이 많이 소요된다.

대표 언어 및 도구:

  • iOS: Swift, Objective-C / Xcode

  • Android: Kotlin, Java / Android Studio

크로스플랫폼 앱 (Cross-Platform App)

크로스플랫폼 앱은 하나의 코드베이스로 여러 플랫폼에서 실행될 수 있도록 개발된 애플리케이션이다. 이 방식은 네이티브 앱과 하이브리드 앱의 장점을 결합하여 성능과 개발 효율성을 동시에 추구한다.

특징:

  • 단일 코드베이스: 한 번의 코딩으로 여러 플랫폼에서 실행 가능하다.

  • 개발 효율성: 코드 재사용성이 높아 개발 시간과 비용을 절감할 수 있다.

  • 성능: 네이티브 앱과 유사한 성능을 제공할 수 있다.

  • 확장성: 다양한 플랫폼에 쉽게 확장 가능하다.

대표 프레임워크:

  • React Native

  • Flutter

  • Xamarin

프로그레시브 웹 앱 (Progressive Web App, PWA)

프로그레시브 웹 앱은 웹 기술을 사용하여 개발되며, 네이티브 앱과 유사한 사용자 경험을 제공하는 웹 애플리케이션이다. PWA는 웹 브라우저를 통해 접근할 수 있지만, 오프라인 기능, 푸시 알림, 홈 화면 설치 등 네이티브 앱의 기능도 제공한다. 특히, PWA는 서비스 워커(Service Worker)를 통해 오프라인 기능을 제공하며, 이는 생각보다 훌륭한 성능을 발휘한다.

특징:

  • 웹 기반: 별도의 설치 없이 웹 브라우저를 통해 접근 가능하다.

  • 오프라인 지원: 서비스 워커를 사용하여 오프라인에서도 작동할 수 있다.(말도안돼..)

  • 빠른 업데이트: 서버에서 직접 업데이트가 가능하여 사용자가 항상 최신 버전을 사용하게 된다.

  • 플랫폼 독립성: 모든 플랫폼에서 동일한 사용자 경험을 제공한다.

  • 설치 가능: 사용자는 PWA를 홈 화면에 설치하여 네이티브 앱처럼 사용할 수 있다.

대표 프레임워크:

  • Angular

  • React

  • Vue.js

걱정되서 알아본... PWA의 한계

PWA의 오프라인 기능이 훌륭함에도 불구하고, 네이티브 앱과 비교할 때 몇 가지 한계가 있다. PWA의 한계는 주로 플랫폼 통합, 성능, 기능 접근성 측면에서 나타난다. 아래에서는 PWA가 네이티브 앱과 비교해 갖는 주요 한계점들을 설명하겠다.

성능 (Performance)

한계:

  • 애니메이션 및 그래픽 성능: PWA는 네이티브 앱에 비해 애니메이션 및 그래픽 처리 성능이 떨어질 수 있다. 이는 특히 게임이나 그래픽 집약적인 애플리케이션에서 문제가 된다.

  • 반응 속도: 네이티브 앱은 플랫폼의 API와 직접 통신하기 때문에 반응 속도가 빠르다. 반면, PWA는 브라우저를 통해 간접적으로 통신하기 때문에 반응 속도가 느릴 수 있다.

기능 접근성 (Access to Native Features)

한계:

  • 하드웨어 접근 제한: PWA는 네이티브 앱에 비해 하드웨어 기능(예: 블루투스, NFC, 배터리 상태 등)에 대한 접근이 제한적이다.

  • OS 통합 기능 부족: 네이티브 앱은 OS 통합 기능(예: 파일 시스템 접근, 백그라운드 작업, 인앱 결제 등)을 완전히 활용할 수 있지만, PWA는 이러한 기능에 대한 접근이 제한적이다.

사용자 경험 (User Experience)

한계:

  • UX/UI 일관성: 네이티브 앱은 각 플랫폼의 UX/UI 가이드라인을 따르므로, 사용자에게 일관된 경험을 제공할 수 있다. 반면, PWA는 모든 플랫폼에서 동일한 UI를 제공하기 때문에 각 플랫폼에 최적화된 경험을 제공하기 어려울 수 있다.

  • 앱 스토어 통합: PWA는 앱 스토어에서 다운로드되지 않기 때문에 사용자에게 설치 과정이 덜 직관적일 수 있다. 또한, 앱 스토어에서 제공하는 리뷰와 평점을 통한 신뢰성 구축이 어렵다.

오프라인 기능 (Offline Capabilities)

한계:

  • 완전한 오프라인 기능: PWA는 서비스 워커를 통해 오프라인 기능을 제공하지만, 완전한 오프라인 지원은 어렵다. 특히, 복잡한 데이터 동기화나 실시간 데이터 업데이트가 필요한 애플리케이션에서는 한계가 있다.

  • 저장 용량 제한: 브라우저의 캐시 용량 제한으로 인해, PWA는 대용량 데이터를 저장하는 데 제약이 있다.

개발 및 유지보수 (Development and Maintenance)

한계:

  • 브라우저 호환성 문제: 모든 기능이 모든 브라우저에서 동일하게 작동하지 않을 수 있다. PWA는 다양한 브라우저와 버전에서 테스트 및 유지보수가 필요하다.

  • 기술적 복잡성: 서비스 워커, 캐싱 전략 등 PWA 고유의 기술적 요구사항을 이해하고 구현해야 한다. 이는 추가적인 개발 노력이 필요할 수 있다.

결론

하이브리드 앱, 네이티브 앱, 크로스플랫폼 앱, 프로그레시브 웹 앱 각각의 방법은 상황에 따라 최적의 선택이 될 수 있다.

  • 하이브리드 앱은 빠른 개발과 배포가 필요할 때

  • 네이티브 앱은 최고 성능과 사용자 경험을 제공해야 할 때

  • 크로스플랫폼 앱은 다양한 플랫폼을 대상으로 효율적인 개발을 원할 때

  • 프로그레시브 웹 앱은 플랫폼 독립성과 빠른 업데이트가 필요할 때

최근 웹 브라우저의 성능과 기능이 지속적으로 향상됨에 따라 네이티브 앱의 장점이 얼마나 오랫동안 유지될지에 대해 고민하게 된다. 그런 중 다행인 건 PWA에 관련해 찾아보던 중 발견한 글에서는 PWA를 통해 로드되고 있는 페이지의 숫자가 15~19% 정도로 보이고 크게 증가하지 않고 있다는 것을 확인했다.

개인적으로, 네이티브 개발에서 네이티브 코드를 뜯어보며 새로운 기능을 구현하고 성능을 개선하는 과정이 매우 재미있다. 하지만 어엿한 안드로이드 개발자로서 인정받고 난 후엔 시대에 뒤쳐지지 않도록 얕게 경험만 한 IOS 와 하이브리드 앱도 학습을 계속 해야겠다.

참고

PWA 2023: 새로운 표준과 더 나은 기능으로 발전하는 프로그레시브 웹 앱

TIL

Part 12 of 16

오늘 배운 것을 기록하는 시리즈

Up next

ReactiveX란?

RX Java/Kotlin/Android

More from this blog

정적 코드 분석이란?

정적 코드 분석(Static Code Analysis)은 소스 코드를 실행하지 않고 분석하는 기법이다. 코드 품질을 개선하고 버그, 보안 취약점, 코드 표준 위반 등을 조기에 발견하는 데 사용된다. 코드 정적 분석은 개발 초기 단계에서 오류를 발견해 수정 비용을 줄이고 전반적인 코드 품질을 향상시키는 데 도움을 준다. 주요 특징 및 장점 자동화 도구 사용: 정적 분석 도구로 소스 코드를 자동으로 분석해 문제점을 발견한다. 코드 품질 향상: ...

Jun 17, 20242 min read16
정적 코드 분석이란?

안드로이드 앱 개발의 CI/CD Overview

이전 포스팅(CI/CD, DvOps의 이해)에서 소프트웨어 분야의 CI/CD, DevOps 에 대해 간략히 알아봤다. 이번 포스팅에서는 회사 기술 블로그등을 통해 최근 안드로이드 분야의 CI/CD 가 어떻게 구성되어 있는지 확인해보고 이후 포스팅에서 각각의 기술을 좀 더 상세히 학습해보려고 한다. 그럼 시작하자. 사전 조사 우선 이전 라인의 안드로이드 CI&Unit Test 포스팅 에서 알게된 키워드를 위주로 다른 회사들의 사례를 찾아봤다. 그...

Jun 14, 20243 min read194
안드로이드 앱 개발의 CI/CD Overview

GreenBot

58 posts