새 리액트 네이티브 아키텍처 설명: 네번째 파트

Mars Kim
Cross-Platform Korea
5 min readNov 22, 2019

성자: LORENZO SCIANDRA
작성일: 2019/04/16
번역일: 2019/11/22

동 원저자의 The React Native Re-architecture에서 발췌

이 글은 formidable.com에 기재된 The New React Native Architecture Explained: Part Four을 번역한 것입니다.

저자의 트윗 DM 답변

2018년에 처음 발표된 리액트 네이티브 재구성 프로젝트는 페이스북이 이 크로스 플랫폼 모바일 솔루션에 오랫동안 제기되어 온 이슈에 엄청난 공을 들여서 착수한 프로젝트입니다.

이번 시리즈에서는 리액트 네이티브의 새 아키텍처의 주요 요소들에 대해서 알아보겠습니다. 코드를 보여드리기보단, 가능한한 설명에 치중하도록 하겠습니다. 또 이 프로젝트를 도입하며 저희를 흥분시켰던 것들을 공유하고자 합니다.

이 마지막 글에서는 첫번째 글에서 보았던 예전 아키텍처의 마지막 파트에 대해서 얘기해보고자 합니다:

이번 파트는 코드에 직접적인 변경으로 이루어진 것이 아닙니다 — 이전에 다루었던 파트들이 개선되었던 것처럼:

리액트 네이티브는, 개념적인 차원에서 보았을때, 네이티브 플랫폼에게는 “미지의 상태”로 남게 되기를 원합니다. 이는 react-native-webreact-native-windows등과 같은 서드 파티 구현체를 만드는 것이 가능하게 하는 핵심 기능입니다.

더욱이, 페이스북 팀은 iOS나 안드로이드 플랫폼을 소유하고 있지 않기 때문에, 이 마지막 파트는 “수직적”으로 그 동작에 관련해서 깊게 관여할 수가 없습니다. 대신, 관련된 리액트 네이티브의 코드의 양을 “수평적”으로 줄일 수는 있습니다.

이 작업은 “Lean Core”라고 부릅니다. 이 이름은 커뮤니티의 도움을 기초로 한 이번 아키텍처 재구성 프로젝트의 양상에서 비롯된 것입니다. 좀 더 높은 단계로써 저희가 원하는 바는, 이런 (Lean한 — 역주)접근법으로 현재의 리액트 네이티브 코드베이스를 추출하여 레포지토리에 올리는 것입니다.

이는 두가지 큰 장점이 있습니다: 만들어지는 앱의 사이즈를 줄여주는 것과 페이스북이 직접적으로 사용하지 않는 요소들에 대한 적합한 관리를 가능하게 해 준다는 점입니다. 후자는 과거에는 별로 고려되지 않고 있었다가, 페이스북 소유의 코드를 수정할 때 생기는 복잡한 문제들 때문에 주목받게 되었습니다.

이제, 네번째 파트를 교체하고 새 리액트 네이티브 아키텍처의 전체 도면을 그린다면, 다음과 같습니다:

보시다시피, 페이스북 팀의 복합적인 노력이 리액트 네이티브의 동작방식의 여러 부분에 영향을 미치게 되었습니다. 개발자들이 이를 쓰는 방식에는 영향을 그다지 미치게 하지 않고 말이죠. 보통 재주가 아닙니다!

이번 새 구조는 리액트 네이티브로 개발된 앱을 굉장히 향상시켰습니다. 그리고 “순수 네이티브 앱들”과의 퍼포먼스와 질적인 차이점은 점점 줄어들 것입니다.

언제 이번 변경이 준비되고 사용 가능해집니까? 이 방대한 양의 작업은 2019년 4분기에서 2020년 1분기 사이에 결론이 날 것으로 보이지만, 정해진 날짜들은 없습니다. 페이스북 팀이 이 아키텍처 재구성 프로젝트를 공개적으로 개발하고 있는것을 감안한다면, 언제든지 진행 상황을 지켜 보실 수 있습니다. 글을 쓰고 있는 현재 (2019년 4월16일 기준— 역주) 날짜 기준으로, 다음과 같이 종합해볼 수 있습니다:

  • new React = 리액트 버전 16.8는 리액트 네이티브 버전0.59에서부터 지원됩니다. (참고: Suspense는 리액트 버전16.6부터 일부 지원되고 있었습니다)
  • CodeGen = 메인 레포에서 개발중입니다. (관련 토론)
  • JSI = 버전0.59부터 마스터에 올라와 있고, 사용가능합니다.(그러나 현재는 직접적인 사용방법이나 문서화가 되어 있지 않은 상황입니다.) (관련 토론)
  • TurboModules = 메인 레포에서 개발중입니다. (관련 토론)
  • Fabric = 메인 레포에서 개발중입니다. (관련 토론)
  • Lean Core = 지속적으로 작업중이며, 자세한 정보는 이 이슈를 참조하시면 됩니다. (관련 토론)

링크된 깃헙의 관련 토론 링크들은 항상 가장 최신의 정보들이 포함되어 있으니 잘 지켜보시기 바랍니다!

마지막으로, 저희는 이번 작업이 리액트 네이티브에 여러개의 굵직한 개선을 이루어냈다고 생각합니다. 이는 리액트 네이티브 개발자들에게 굉장히 기쁜 소식이며, 저희는 이번 시리즈가 이 지평선 너머로 보이는 대규모 변화를 이해하시는데 도움이 되었기를 바랍니다.

만약 도움이 되셨다면, 이 글을 동료 개발자들에게 공유해 주시고, 트위터 계정을 통해 질문을 하셔도 됩니다. (DM도 가능합니다).

누차 말씀드린 것과 같이, 여러분이 코드를 (전혀) 다시 작성하지 않고도 이 강력한 변화가 여러분의 코드베이스에 끼칠 영향에 대해 많은 기대를 하시길 바랍니다.

다들 이 새로운 변화의 흐름에 편승하시길 바랍니다!

시리즈의 다른 파트들:
파트 1 | 파트 2 | 파트 3

--

--

Mars Kim
Cross-Platform Korea

react/react-native dev. chronic violin practice procrastinator.