React Native를 공부하자

emit·2022년 7월 2일
0

리액트 네이티브

목록 보기
1/1
post-thumbnail
post-custom-banner

왜 React Native를 공부하는 것을 선택했을까?

React 사용자

현재 저는 프론트엔드 개발자에 대해 꿈을 가지고 있고, 주로 사용하는 기술 스택이 Javascript, React입니다.(Typescript 조금) React를 공부하고, 공부한 내용을 바탕으로 다양한 웹 프로젝트를 진행하면서 React에 대해 어느정도 자신감을 가질 수 있었습니다. 그러면서 앱을 한번 만들어보고 싶었고, 그 앱으로 돈을 벌어보고 싶다고 생각했습니다. 앱을 만들기 위해 다양한 언어의 방식이 있었는데 저는 앱을 빠르게 만들고 싶었고, 제 기준으로 러닝커브가 현저히 적은 React Native는 최고의 선택이였습니다.

프론트엔드 개발자에 대한 요구사항

현재 채용시장을 보면 프론트엔드 개발자에 대한 요구사항이 점점 더 커지고 있는 추세입니다. "React를 사용해보셨으면 혹시 반응형으로 대응해보셨나요?", "React Native를 사용해보셨나요?", 면접에서 종종 질문을 받았던 것 같습니다. 제가 생각하기에 React Native로 인해 프론트개발자는 웹, 앱을 하는 게 당연시 됐고, 그 간격이 더 좁아진 것 같이 느꼈습니다. 저는 더욱 경쟁력있는 개발자가 되고 싶기에 React Native를 기쁜 마음으로 공부하고 있습니다.

React Native란?

리액트 네이티브(React Native)는 페이스북이 개발한 오픈 소스 모바일 애플리케이션 프레임워크이다.
Javascript로 개발이 가능하고 하나의 프로그래밍 언어로 안드로이드, iOS를 동시에 개발할 수 있는 크로스 플랫폼입니다.

웹을 구동하면 앱 화면은 웹화면으로 표시하고, 필요한 기능 웹 기술로 구현합니다.
초창기 하이브리드 웹 기술은 브라우저를 사용했기 때문에 브라우저에서 제공하는 성능 이상으로는 발휘할 수 없었습니다.
이를 보완하려는 시도가 나타났고, 2015년 5월 페이스북에서 웹 브라우저를 사용하지 않는 네이티브 브릿지를 사용하는 React Native를 발표합니다.

React Native는 네이티브 브릿지를 통해 스레드(Native Thread)와 통신하며 웹앱과 다르게 성능을 최적화 시킵니다. 이런 웹을 사용하지 않고 네이티브와 통신하는 방법을 사용하는 것이 하이브리드앱이라 불리며 자마린, 네이티브 스크립트, 플루터 등이 있습니다.

React Native의 장단점

장점

러닝커브가 낮다.

React Native의 가장 큰 장점이라고 할 수 있는 것은 Javascript, React를 사용할 줄 알면 굳이 다른 언어를 공부하지 않아도 되서 빠르게 학습할 수 있습니다.
물론 Javascript를 사용하지 않는 개발자라면 이야기는 다르지만 그래도 프론트엔드 개발자나 Nodejs백엔드 개발자라면 빠르게 배울 수 있습니다.

소스코드의 재사용과 생산성

페이스북의 React에서 파생되었기 때문에 그 방식 그대로 사용했습니다. React는 Component 기반으로 기능을 분리해 재사용할 수 있는 구조로 되어 있습니다. 또한 기존에 리액트로 개발된 사이트가 있다면, 그 사이트의 Component 코드를 그대로 사용할 수 있기에 재사용이 가능하다면 생산성은 더욱 올라가게 됩니다.

또한 하이브리드 앱 특성상 안드로이드, iOS 모두 한번에 개발할 수 있기 때문에 효율적으로 개발할 수 있습니다.

비용 그리고 오픈소스

위에서 언급했듯 하나의 언어, 하나의 코드로 두 개의 OS를 개발할 수 있기 때문에 일반적인 네이티브 앱을 개발하는 것보다 두배 더 빨라 비용이 저렴합니다. 또한 Javascript 분야 개발자들을 훈련해서 전향시키는 방법도 있습니다.

React Native는 오픈 소스로 커뮤니티가 활성화되어 있고, 블로그, Docs, 강의 등 다양한 참고 자료가 많이 있기에 생산성을 증대시킬 수 있습니다.

Code Push를 통한 배포

배포 후에 장점이라고 볼 수 있는데, 원래 네이티브 앱은 기능을 업데이트하고 올릴 때, 스토어의 심사과정을 업데이트하고 새로운 애플리케이션으로 교체해준다.
그런데 React Native는 CodePush를 사용해 원하는 기능의 배포를 아무 때나 심사과정을 거치지 않고 할 수 있습니다.
CodePush가 있기 때문에 버그를 생기면 빠르게 고치고 바로바로 반영할 수 있는 것은 큰 장점입니다.

단점

기존 네이티브 앱보다 성능이 떨어진다.

React Native는 네이티브 브릿지를 사용해 네이티브 스레드를 연결시켜 동작하는 하이브리드 앱이기 때문에 네이티브 개발 방식보다는 성능이 떨어집니다.
일반적인 애플리케이션을 만든다고 한다면 문제없지만 애니메이션을 60프레임 이상 사용하거나 자바스크립트 스레드에서 5ms보다 시간이 걸리는 처리를 하게 된다면 심각한 성능 저하를 경험할 수 있습니다.

오픈소스 그리고 적은 네이티브 기능

오픈 소스의 단점이라고 비쳐지기도 하는데 업데이트가 자주 발생하고, 그로 인한 업데이트 시 수정된 기능들 때문에 버그가 발생할 수 있습니다. 버전 업그레이드 시 항상 고민하고 충돌될 수 있는 부분을 생각하고 업그레이드 해야합니다.

React Native Docs를 보면 다른 프레임워크보다 제공하는 기능들이 적습니다. Third-party 라이브러리를 적극적으로 사용해야하며, 그로 인해 Third-party 라이브러리 업데이트도 생각해야합니다.

profile
간단한 공부 기록들 https://github.com/ohjooyeong
post-custom-banner

0개의 댓글