# 네이티브 앱 VS. 웹 앱 VS. 하이브리드 앱

# 네이티브 앱 (Native App)

모바일 기기에 최적화된 네이티브 언어로 개발된 앱을 의미한다.

안드로이드 SDK: Kotlin / Java
iOS SDK: Swift / Objective-C

# 장점

  • 각 운영체제에 최적화된 방식으로 개발되어 앱의 구동 속도가 빠르고 안정적이다.
  • 디바이스 전체에 접근 권한을 가질 수 있기 때문에 기기 자체의 기능을 앱에 활용할 수 있다.

# 단점

  • 운영체체별로 개발 및 유지 보수가 필요하다.
  • 다른 앱 개발 방식에 비해 제작하는 데에 비용과 시간이 많이 든다.
  • 앱에 수정사항이 생기는 경우 마켓의 심사과정을 거쳐 업데이트를 해야 한다.

# 웹 앱 (Web App)

네이티브 앱처럼 보이고, 기능 또한 앱과 동일하게 개발되지만, 웹 기술을 활용하여 만들어진 앱이다. 웹 기반의 HTML, CSS, JavaScript 등을 활용하며, 별도의 앱 파일을 설치하지 않고 브라우저 기반으로 작동된다.

ex) React, Angular, Vue.js 등으로 만들어진다.

모바일 웹 (Mobile Web)

PC를 기준으로 제작된 뒤 모바일 화면 규격에 맞게 폰트나 이미지 등을 바꿔 구성한 웹이다. 이에 반해 웹 앱은 처음부터 모바일을 기준으로 제작된다.

# 장점

  • 브라우저 기반으로 동작하기 때문에 별도의 앱을 설치하지 않아도 된다.
  • 표준 웹 언어로 만들 수 있어 제작 비용이 저렴하고 개발 기간이 짧은 편이다. (-> 운영체제별로 개발할 필요 X)
  • 수정사항이 생겨도 마켓의 심사를 거치지 않기 때문에 업데이트 속도가 빠르다.

# 단점

  • 디바이스에 접근 권한이 없기 때문에 카메라나 음성 인식 등의 기능을 활용할 수 없다.
  • 앱 설치 대신 브라우저 실행 및 url 입력이나 별도의 링크 클릭 등의 과정을 거쳐야 해서 번거롭다.
  • 네이티브 앱에 비해 상대적으로 구동 속도가 느리고 안정성이 떨어진다.

# 하이브리드 앱 (Hybrid App)

웹 앱과 네이티브 앱의 기능을 결합하여 개발된 앱을 의미한다. 앱의 화면이나 기능 등 콘텐츠 영역은 웹 기반으로 제작하고, 외부는 마켓 등록과 설치를 위해 네이티브 앱으로 포장한 것이다.

ex) Cordova, Phonegap, Ionic 등으로 만들어진다.

# 장점

  • 웹 기술을 기반으로 개발되지만, 모바일 API도 사용 가능하기 때문에 디바이스의 자체 기능을 활용할 수 있다.
  • 네이티브 앱에 비해 개발 비용 및 시간을 절약할 수 있다.
  • 한 번의 개발로 패키징 변환을 통해 여러 플랫폼(안드로이드, iOS)에 대응할 수 있다.

# 단점

  • 네이티브 앱 개발 지식이 필요하다.
  • 브라우저 성능에 따라 앱 성능에 영향을 받는다.
  • 네이티브 앱과 마찬가지로 마켓 심사과정이 필요하다.

Tip

Flutter와 React Native 등은 크로스 플랫폼 개발 프레임워크로 웹 앱, 네이티브 앱, 그리고 일부는 데스크톱 앱까지 지원한다. 주로 네이티브 앱 개발에 초점을 맞추고 있지만, 추후 웹 개발 지원도 활발해질 가능성이 있다.