개발자 소식으로 돌아가기

개발자와의 만남 - React @ Meta Edition(Andrea Ferrando)

2023년 4월 27일제작:Navyata Bawa

이 문서는 Meta의 소프트웨어 엔지니어인 Andrea Ferrando와 Meta의 개발자 성공 멤버인 Sean Keegan이 공동으로 작성하였습니다.

오늘 인터뷰에서는 Meta의 프런트엔드 엔지니어인 Andrea Ferrando 씨를 모셨습니다. 그의 팀은 사용자가 광고 캠페인을 만들고, 수정하고, 모니터링하는 광고 관리자 앱을 개발합니다.

자기 소개를 부탁드립니다.

저는 Andrea Ferrando이고 뛰어난 디지털 제품과 사용자 경험을 제공하는 데 관심이 큰 소프트웨어 엔지니어입니다.. 지금은 광고주가 모든 Meta 플랫폼에서 캠페인을 만들고, 모니터링하고, 관리하도록 지원하는 광고 관리자 앱(AMA)을 개발하고 있습니다. 이 앱은 광고주가 대상 타겟에 도달하기 위한 종합적인 솔루션을 제공하므로 효과적으로 광고하기를 원하는 모든 사람에게 중요한 도구입니다. 저는 1년 남짓 AMA 개발에 참여하였고 개발에 실질적인 기여를 하고 있습니다.

React Native에 참여하게 된 계기는 iOS와 Android 사용자 모두에게 원활하고 효율적인 사용자 경험을 제공할 수 있는 가능성을 보았기 때문입니다. 재사용 가능한 구성 요소와 상태를 쉽게 관리하는 기능을 갖춘 React Native를 사용하면 좋은 품질의 앱을 빠르고 효율적으로 만들 수 있습니다. 또한 코드를 한 번 작성하고 여러 플랫폼에서 실행할 수 있는 기능을 통해 더 큰 규모의 사용자 기반에 도달하고 모든 기기에서 일관된 경험을 제공할 수 있기 때문에 엄청난 이점이 있습니다.

React를 얼마나 사용하고 계신가요?

저는 React를 매일 사용하고 있고 제 업무에서 없어서는 안 될 도구가 되었습니다. 저는 Meta에서 고객 중심적 제품의 기술 책임자로서 전체적인 제품 개발을 관리하고, 방향을 설정하고, 여러 팀과 협력해야 하는 보다 광범위한 책임을 맡고 있을 뿐 아니라, 중요한 기능을 개발하고 실질적인 기여를 하면서 AMA에 적극적으로 도움을 줄 기회도 있습니다.

Meta에서 React를 사용하여 작업했던 프로젝트는 무엇인가요?

저는 Meta에 입사한 이래로 광고 관리자 앱에만 집중했습니다. 우리 팀은 제품 전반을 담당하여 백엔드 기능 개발에도 기여하지만 제가 React를 사용하는 분야는 AMA뿐입니다.

팀에서 React를 사용하기로 결정한 이유는 무엇이고 React를 사용하고 나서 개발 목표를 달성하는 데 본인과 팀에게 어떤 도움이 되었나요?

우리는 광고 관리자 앱이 전 세계 최초의 React Native 앱 중 하나라는 데 자부심이 있습니다. React Native가 2013년 Facebook 해커톤에서 비롯되었다는 것은 잘 알려진 사실이고 우리 앱은 누구보다 앞서서 이 기술을 사용했습니다. 광고 관리자 앱은 광고주가 광고 캠페인으로 성공하는 데 도움이 되는 인사이트와 권장 사항을 제공하고 React Native은 이 목적을 수행하기에 완벽한 도구입니다. React Native는 iOS와 Android 플랫폼에서 모두 빠르게 개발할 수 있고 우수한 성능을 제공함으로써 그동안 AMA의 성공에 큰 도움을 주었습니다.

최근 들어 기쁘거나 자부심을 느낄 만한 성과가 있었나요?

최근에 안정성에 크게 집중하여 푸시 알림 인프라를 개선하는 데 상당한 노력을 기울였습니다.

알림은 모바일 앱에서 중요한 역할을 하고, AMA의 경우에는 알림이 사용자에게 시기적절하게 인사이트를 제공하여 광고 캠페인의 성공에 큰 영향을 미칠 수 있기 때문에 특히 중요합니다.

그러나 지나치게 많은 알림으로 사용자에게 부담을 주지 않도록 균형을 잡는 것이 중요합니다. 또한 iOS와 Android는 알림을 처리하고 관리하는 방법이 다르고 이 두 가지 모바일 운영 체제의 개인정보 보호 규칙도 고려해야 합니다. 이런 어려움이 있지만 AMA는 도전하는 보람이 있는 프로젝트입니다. 각 플랫폼에 적절한 방식으로 알림을 관리하면서도 iOS와 Android에 최적의 사용자 경험을 보장하고 각각 서로 다른 플로를 개발하려면 제품에 대한 스킬과 기술적 스킬이 모두 필요하기 때문입니다.

React Native를 사용한 덕분에 iOS와 Android 알림 델리게이트 사이에 차이가 있는 로직의 대부분을 추상화하여 개발 프로세스를 단순화하였고 저희는 개발 프로세스에 집중할 수 있었습니다.

Meta와 같은 기업에서 React 개발자로 일하면서 특별히 흥미로운 부분이 있나요?

Meta에서 React Native 앱 개발자로 일하는 것은 정말로 특별한 경험입니다. 자신이 개발한 앱으로 엄청나게 큰 규모의 사용자 기반에 도달하고 수많은 사람에게 큰 영향을 미칠 수 있다는 것은 큰 보람입니다. 하지만 이런 대규모 개발에 참여하다 보면 더욱 일에 흥미를 느끼고 자꾸 발전할 수밖에 없는 특별한 도전 과제가 따라오기 마련입니다.

이 일의 핵심적 특징 중 하나는 사용자의 개인정보 보호와 데이터 무결성을 지켜야 한다는 것입니다. 우리 개발자들은 어떤 데이터를 저장할 수 있고 저장할 수 없는지 잘 알아야 하며, 사용자 개인정보를 보호하기 위해 개인정보 보호팀과 긴밀히 협력합니다. 이는 비교적 규모가 작은 프로젝트나 스타트업에서는 간과하기 쉬운 중요한 측면이지만, Meta에서는 이를 매우 중요한 우선순위로 생각하고 저희에게 유연하고 조절 가능한 방식을 취할 것을 요구합니다.

전 세계적으로 사용되는 프런트엔드 앱을 개발하는 데 도전이 되는 또 다른 요소는 현지화입니다. 영어로 앱을 설계하고 개발하는 작업은 비교적 간단하지만, 20개 이상의 언어로 모든 것을 번역하다 보면 이전에는 발견할 수 없었던 가벼운 결함과 버그가 발견될 수도 있습니다. 언어가 달라지면 같은 단어라도 3~4배 길어질 수 있고 모든 제약 조건을 올바르게 처리하기 위해서는 신중한 설계와 정밀한 개발이 필요합니다. 저는 이전에 은행과 항공사에서 개발했던 경험이 있어서 이런 측면에 잘 대비할 수 있었고 현재 Meta에서 맡은 직무에도 이 경험을 많이 활용하고 있습니다.

요즘 React 분야에서 일하면서 힘이 되는 부분은 무엇인가요?

Meta에서 React 개발자로 일하는 것은 정말로 특별한 기회입니다. React 팀과 매우 긴밀하게 일할 수 있어서 직접적인 협업과 소통이 가능하기 때문입니다. 이를 통해 회사 내에서 누구도 대신할 수 없는 역할을 하게 됩니다.

소비자 중심 제품 분야에서 성공적인 엔지니어가 되려면 다양한 기술이 필요합니다. 사용자 경험과 접근성 등의 측면에 집중해야 할 뿐만 아니라 성능을 우선으로 하는 깔끔하고 신뢰할 수 있는 코드를 작성하는 능력이 필수입니다. React와 같은 동적인 언어는 개발자가 과도한 오버헤드 없이 개발 프로세스에 집중할 수 있도록 해주기 때문에 도움이 됩니다. 저는 네이티브 모바일 개발, 특히 대규모 앱을 개발한 경험이 있어서 빌드 시간이 얼마나 일상 업무에 지장을 주고 귀중한 시간을 낭비하는지 직접 경험해 보았습니다. 그래서 React에서 가상 DOM을 사용하는 것이 마음에 듭니다. 효율적인 업데이트를 지원하고 UI 구성 요소를 실시간으로 렌더링하기 때문입니다. React는 웹 전반에 걸쳐 개발자와 기업에 널리 도입되었지만 개발자가 흔히 사용하는 언어인 JavaScript/TypeScript(JS/TS)에 기반을 두고 있어 여전히 사용하기 편리하고 접근성이 뛰어납니다. 저는 React와 함께 TypeScript를 사용하는 것을 좋아합니다. TypeScript는 정적 타입이어서 개발 프로세스 초기에 버그를 더 쉽게 찾아낼 수 있습니다.

또한, 개인적으로는 React의 기능적 구성 요소가 유용해서 좋아합니다. 메모이제이션 기능을 사용해서 성능에 맞추어 최적화할 수 있고 불필요한 렌더 업데이트를 방지하여 앱의 성능도 크게 개선할 수 있기 때문입니다. 구성 요소를 쉽게 재사용할 수 있는 기능은 코드베이스를 보다 쉽게 유지관리, 테스트 및 관리할 수 있게 해 주므로 대규모 앱에 특히 중요합니다.

개발자로서 일하는 동안 경험했던 React나 오픈 소스 소프트웨어 개발에 대한 오해는 무엇이 있나요?

사실 저는 개발자로 일하면서 React나 오픈 소스 소프트웨어에 대한 잘못된 오해를 많이 들은 적은 없습니다. 세계적인 대기업은 대부분 일상적인 운영에서 오픈 소스 소프트웨어를 사용하고 개발하며, 많은 개발자들이 오픈 소스 프로젝트에 참여하기 때문입니다.

저는 React Native에 대해 여러 가지 우려를 들었는데, 그중 대표적인 것은 React Native가 느리고 기능이 제한적이어서 소규모 프로젝트에만 적합하다는 우려입니다. 어떤 사람은 React Native에서 JavaScript를 사용하여 네이티브 구성 요소와 상호작용하는 것 때문에 네이티브로 작성한 앱보다 성능이 느리다고 생각합니다. 스트리밍과 같은 일부 사례에서는 네이티브 앱의 성능이 더 우수할 수 있지만, 주로 이미지와 텍스트를 표시하고 사용자 상호작용이 중심인 대부분의 일상적인 앱에서는 React Native도 우수한 성능을 발휘합니다.

React의 미래에서 기대되는 점은 무엇인가요?

React Native는 아키텍처가 안정적이고 효율적인 업데이트와 실시간 UI 렌더링을 통해 대규모 앱을 처리할 준비가 되어 있습니다. 또한, 코드 관리가 쉬워서 대규모 프로젝트에 이상적입니다. 게다가 React Native를 이용하면 네이티브 모듈에 액세스하는 기능을 통해 개발자가 네이티브 기능에 액세스할 수 있어 종합적인 앱 개발이 가능합니다.

React 사용을 시작하는 데 유용한 자료는 무엇이 있나요? 기여는 어떻게 할 수 있나요?

저는 개발자로 일을 시작할 무렵부터 React를 사용하기 시작했고 운 좋게도 전문가가 가르치는 동영상 수업이 있는 주요 온라인 학습 포털을 무료로 이용할 수 있는 기업에서 일하게 되었습니다. 제 생각에 가장 좋은 학습 방법은 동영상 튜토리얼을 시청하는 것입니다. 저는 동영상 튜토리얼을 통해 알아야 할 모든 정보를 단계별로 배웠습니다. 기초 정보를 습득한 후에는 실제 프로젝트를 개발하는 실무 경험이 React에 대한 이해를 발전시키는 데 매우 중요하다는 것을 알게 되었습니다. 실무에서 React를 접할 기회가 없다면 자신이 관심이 있는 분야를 찾아서 앱을 개발해 보는 방법을 추천해 드리고 싶습니다. 저는 제 포트폴리오가 들어간 개인 웹사이트를 만드는 것으로 시작했습니다. 또한 React Native의 공식 문서도 잘 작성되어 있어서 특정 정보를 찾을 때 매우 유용했습니다.

어디에서 Andrea Ferrando 씨를 만나고 작업 결과물을 팔로잉할 수 있나요?

저는 Github 계정이 있습니다만, 대부분의 개발 경험이 업무상 기밀로 인해 공개할 수 없거나 오픈 소스가 아닌 개인 프로젝트입니다. 저는 소셜 미디어를 즐겨 사용하고 Instagram도 많이 사용하지만 이 플랫폼은 개발에 대해 토론하는 장소로 이용하지 않습니다. 대신 일에서 벗어나는 휴식처로 사용합니다.


인터뷰에 응해주신 Andrea 씨에게 감사드립니다. React를 사용하여 대규모 앱을 어떻게 개선하는지와, Meta에서 빌드하는 모든 과정을 통해 배우고 React 커뮤니티에 다시 기여하는 방식을 알 수 있어 좋았습니다. 여러분께도 유익한 인터뷰가 되었길 바라며 React가 Meta에서 어디에 어떻게 사용되는지 약간의 인사이트를 얻으셨기를 바랍니다.

개발자와의 만남 소개 - React @ Meta 시리즈

React는 가장 인기 있는 오픈 소스 프로젝트 중 하나이고 최근 몇 년 동안 '가장 사랑받는' 웹 프레임워크에 꾸준히 이름을 올리고 있습니다. Meta에서는 React가 개발자로 하여금 대규모로 사용자 인터페이스를 쉽게 빌드하는 데 도움을 주는 우수한 라이브러리라고 생각합니다. 간단한 웹사이트에서부터 엔터프라이즈 앱에 이르기까지 전 세계적으로 수많은 개발자가 사용하는 React는 누구나 사용할 수 있는 오픈 소스 라이브러리입니다.

이 블로그는 개발자와의 만남 시리즈 중 하나로서, React를 정기적으로 사용하는 엔지니어와 개발자를 초대하여 경험을 공유하도록 하고 Meta에서 React를 사용하여 빌드하는 멋진 제품에 대한 이야기를 듣고 있습니다. 이 주제에 대해 다른 엔지니어를 만나고 그들의 생각을 들어보는 더 많은 인터뷰 블로그를 확인하세요.

Meta 오픈 소스에 대해 자세히 알아보려면 오픈 소스 사이트를 방문하거나 YouTube 채널을 구독하거나 Twitter, FacebookLinkedIn을 팔로우하세요.