티스토리 뷰
안드로이드 앱 개발 하는데 어떤 플랫폼을 선택해서 개발하는게 가장 효율적일까요?🤔
안드로이드 개발 시 사용되는 대표적인 세가지 플랫폼을 소개하려고 합니다.
가장 기본이 되는 네이티브 SDK 을 활용해서 개발 시 장점과 단점, 멀티 플랫폼 Flutter을 활용 시 장점과 단점 마지막으로 Kotlin Multiplatform 줄여서 KMP 의 장점과 단점에 대해서 ChatGPT의 도움과 함께 정리한 내용을 포스트 하였습니다.
개발 도구 선택 시 도움 되면 좋겠습니다. 👍
1️⃣ 네이티브 개발
네이티브 앱 개발의 정의 및 주요 특징은 무엇일까?
안드로이드 네이티브 앱 개발은 Java나 Kotlin과 같은 프로그래밍 언어를 사용하여 직접 개발하는 방식입니다.
Android SDK를 통해 디바이스의 하드웨어 기능에 직접 접근 가능합니다.
반면에 iOS는 object-c 또는 swift과 같은 프로그래밍 언어를 사용하여 개발하는 방식이고, xcode SDK 을 통해 디바이스 하드웨어 기능에 직접 접근 가능합니다.
네이티브 앱 개발의 장점에 대해 알아보자!
성능측면에서 보면 최적화된 성능 제공하며, 하드웨어 가속 기능 활용 가능합니다.
사용자 경험 측면에서 보면 각 플랫폼의 UI 가이드라인에 따라 설계되어 친숙한 인터페이스와 우수한 사용자 경험 제공합니다.
기능 접근성 측면에서 보면 카메라, 마이크, GPS 등 디바이스 기능을 완벽하게 활용 가능합니다.
보안성 측면에서 보면 플랫폼 별 보안 기능과 정책을 최대한 활용 가능합니다.
플랫폼 특화 기능 사용 측면에서 보면 각 플랫폼의 최신 기능을 즉시 사용 가능합니다.
네이티브 앱 개발의 단점은 없을까?
개발 및 유지 보수 비용 측면에서 보면 각 플랫폼마다 별도의 앱 개발 필요, 비용과 시간 많이 소모하게 됩니다.
시간 소모 측면에서 보면 다양한 플랫폼에 앱을 개발하려면 각양각색의 언어와 환경에 대한 전문 지식 필요합니다.
2️⃣ Kotlin Multiplatform (KMP) 개발
KMP 정의 및 주요 특징에 대해 알아보자
Kotlin 언어를 기반으로 다양한 플랫폼에서 실행되는 프레임워크 입니다.
KMP의 가장 큰 장점이라고 할 수 있는 한 번의 코드 작성으로 안드로이드, iOS, 웹, 데스크톱 등에서 동작 가능합니다.
KMP 의 장점은 무엇일까요?
코드 재사용성 측면에서 보면 비즈니스 로직과 유틸리티 함수를 여러 플랫폼에 걸쳐 재사용 가능합니다.
유지 보수 용이성 측면에서 보면 공통 코드 베이스 사용으로 버그 수정과 기능 업데이트가 용이 합니다.
플랫폼 별 공통의 아키텍처 구성이 가능합니다. 중요한 비즈니스 로직을 한 번만 개발하고 여러 플랫폼에서 재사용 가능하여 가장 큰 장점이라고 할 수 있습니다.
단점은 없을까요?
아무래도 멀티 플랫폼을 제공하다보니 플랫폼 특화 기능 제한이 있습니다. 각 플랫폼의 특화된 기능을 최대한 활용하기 어렵습니다.
커뮤니티와 지원이 아직은 부족합니다. 비교적 새로운 기술, 네이티브 개발 환경만큼의 폭넓은 지원 부족합니다.
3️⃣ Flutter 개발
Flutter 의 정의 및 주요 특징에 대해 알아보자!
Flutter는 Google 개발의 오픈 소스 UI 소프트웨어 개발 키트로써 구글의 지원을 받고 있는 플랫폼 입니다.
Flutter는 Dart 언어 사용하고 있으며, iOS, 안드로이드, 웹, 데스크톱에서 하나의 코드베이스로 앱 구축 가능합니다.
Flutter의 장점은 무엇일까?
개발 속도의 향상이 있습니다. 핫 리로드 기능으로 코드 변경 사항 즉시 반영, 개발 시간 단축 됩니다.
즉, 코드만 입렫하면 바로 화면에 반영 된 것을 볼 수 있습니다.
UI 일관성을 제공합니다. 단일 코드베이스로 모든 플랫폼에서 UI 일관성 유지 하게 됩니다.
성능측면에서는 네이티브 앱과 비슷한 수준의 성능 제공하게 됩니다.
Flutter 의 단점은 무엇일까?
파일 크기의 단점이 있습니다. 큰 파일 크기로 인해 다운로드 시간과 장치 저장 공간에 영향을 받습니다.
새로운 언어 학습 필요 합니다. Flutter는 Dart 언어로써 Dart 언어에 익숙하지 않은 분들은 학습 필요합니다.
하드웨어 기능 접근 제한이 있습니다. 특정 플랫폼의 고유 기능에 접근하는 데 제한이 있습니다.
결론
안드로이드 앱 개발에 있어 기술 선택은 프로젝트의 성공에 결정적인 요소입니다. 각 기술의 장단점을 잘 이해하고 프로젝트의 목표에 맞춰 적절한 기술을 선택하는 것이 중요합니다.
네이티브 개발은 최적의 성능을 필요로 하는 앱에 적합하며, Kotlin Multiplatform은 코드 재사용성과 유지 보수의 편리함을 중요시하는 프로젝트에, Flutter는 빠른 개발과 플랫폼 간 일관된 사용자 경험을 제공합니다.
좀 더 현업 입장에서 말씀드리자면, 인력이 부족하고 빠른 결과물을 만들어서 수익을 얻어야하는 스타트업에서 사용하기에는 Flutter로 개발하는 것을 추천 드립니다.
인력이 어느 정도 갖추어지며 안정적이며 최적화된 프로잭트를 진행해야 한다면 네이티브를 추천 드립니다.
Android, ios 를 개발 시 공통 비즈니스 로직을 갖은 코드는 Kotlin Multiplatform 로 라이브러리를 만들어서 사용 할 것을 추천 드립니다.
최종적으로 개발 팀의 전문성과 프로젝트 요구 사항을 기반으로 최적의 기술을 선택함으로써, 효율적이고 경제적인 개발 과정을 설계할 수 있습니다. 이 글이 안드로이드 앱 개발에 대한 기술 선택을 고민하는 데 도움이 되길 바랍니다.
'프로그래밍 > Android' 카테고리의 다른 글
클린아키텍처의 2개의 Mapper(Entity, View Model) 의 가이드 (0) | 2025.01.31 |
---|---|
Sealed vs Enum 어떤걸 써야하나? (0) | 2024.11.07 |
[Android] 클린아키텍처에 대해서 살짝 맛보기 (4) | 2024.10.29 |
센서의 정확도 올리는 방법 (0) | 2024.08.27 |
Data Binding 사용법 (0) | 2024.08.26 |
- missioon
- 탁구
- 스코어헬퍼
- 미션차이나센터
- Kotlin
- 고시문헬퍼
- MCC
- IOS
- java
- 고시문
- issue
- view
- Android
- RXjava
- DI
- IT
- Android Studio
- missionchina
- 안드로이드
- 알고리즘
- swift
- 임용고시
- 디자인패턴
- flutter
- 코틀린
- 선교
- push
- 점수판
- 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |