차봇 개발자 4인방이 전하는 차봇 RN 리뉴얼 프로젝트 리뷰
지난 10월 말, 차봇 앱이 슈퍼앱으로의 진화를 위한 내부 공사를 완료하고 차봇 2.0으로 새롭게 태어났습니다. 이번 업데이트를 통해 기존의 차봇 앱보다 좀 더 강하고 민첩한 앱으로 되었는데요, 앱 사용성과 운영 효율성을 높이며 슈퍼 앱으로 도약하기 위한 든든한 발판이 마련된 만큼, 앞으로 더욱더 멋지게 변신해 갈 차봇 앱의 모습이 기대됩니다.
이번 리뉴얼 프로젝트에는 개발자, 기획자, 디자이너 등 각 부문별 여러 크루분들이 힘을 모아 완성했습니다. 특히 앱 내부 공사인 만큼 개발자분들의 큰 노력과 수고가 없었다면 지금의 결과물을 얻을 수 없었을 텐데요. 차봇의 테크를 담당하고 있는 일명 ‘천재 개발차(천재 개발자+차봇)’의 테크부문 총괄 정문기 부문장님, 백엔드 엔지니어 박인규 크루, 프론트엔드 이승철, 이승민 크루와 만나 이번 차봇 RN 프로젝트의 숨겨진 이야기들을 속속들이 파헤쳐 봤습니다.
Q. 차봇 2.0시대가 본격 개막 되었는데요, 먼저 이번 차봇 앱 RN 리뉴얼 프로젝트에 대해 소개 부탁드려요.
문기: 이번 프로젝트는 차봇 앱 내부 공사라 할 수 있는데요. 프론트엔드에서 사용하는 프레임워크를 플러터(flutter)에서 리액트 네이티브(React Native)로 전환하는 작업을 진행했습니다. ‘차봇 앱’을 하나의 건축물이라고 한다면, 이 건축물의 전체적인 형태나 목적은 그대로 두되 이 건축물을 짓는 방법과 원재료를 바꾼 것과 비슷한데요. 프로그래밍에 조금 관심이 있는 분들이라면 ‘프로그래밍 언어를 바꾼 것과 비슷하다’고 표현했을 때 좀 더 쉽게 이해할 수 있을 것 같네요.
인규: 이번 리뉴얼을 진행하면서 구조적인 재편이 이루어졌어요. 기존에 플러터로 작업했던 코드들은 구조적인 고려가 되어있지 않아 코드를 분석하거나 추가, 수정하는 일이 어려웠는데요. 그러다 보니 단순한 에러를 수정할 때도 쉽지 않았죠. 그렇지만 이제는 훨씬 더 효율적으로 개발할 수 있게 되었어요. 전환 과정에서 고친 버그도 많고, 전체적인 성능 역시 좋아졌습니다. ‘알림 서비스’도 새로 만들었어요. 어떻게 보면 이게 가장 큰 변화가 아닌가 싶어요. 앞으로 사용자에게 엔진 오일이나 필터 같은 부속품을 교체해야 할 시기를 알려주는 등 다양하게 활용할 수 있는 기반이 생긴 거죠.
승철: 그전에는 우선 기능이 동작하는 데만 집중해서 짠 코드였다면, 이번에 리뉴얼하면서 향후 개발 환경까지 고려한 코드로 바꿨어요. 이걸 리팩토링(refactoring)이라고 하는데, 물건이 여기저기 어지럽게 놓여있던 책상 위를 깔끔하게 정리 정돈해서 물건을 수납하기 좋게 만든 것과 비슷해요.
특히 UX 디자이너분들이 만든 디자인 시스템을 개발자가 쉽게 사용할 수 있도록 공통 컴포넌트화했어요. 중복되는 코드가 생기는 걸 방지하고, 새로운 기능을 개발할 때도 사용할 수 있어서 앞으로 앱 화면과 관련된 생산성이 크게 높아질 수 있을 거라고 기대합니다.
또, 리액트 네이티브의 코드푸시를 활용해 앱을 업데이트할 때 필수적으로 해야 하는 앱스토어 심사를 거치지 않고 사용자가 앱을 켜는 것만으로 업데이트를 받을 수 있도록 변경했어요. 앱 용량도 크게 줄였고요. 기존 앱에서 더 이상 사용하지 않는 아이콘이나 이미지를 삭제하는 등 불필요한 부분을 없애 용량이 138MB에서 40MB로 기존 앱 대비 30% 수준으로 줄었습니다. 덕분에 데이터를 불러오는 방식을 바꾸거나, 다음 화면에 보일 이미지 등을 미리 불러와 로딩에 걸리는 시간을 줄여 앱의 반응 속도도 크게 개선되었죠.
Q. 개발자가 아닌 분들은 이해하기 어려울 수도 있을텐데요. 기존 플러터에서 리액트 네이티브로 프레임을 변경한 이유는 무엇인가요?
문기: 흔히 플러터나 리액트 네이티브는 둘 다 크로스 플랫폼이 가능하다는 이점 때문에 사용되고 있어요. 다만 어느 정도 규모가 큰 플랫폼 기업에서는 주로 플러터나 리액트 네이티브 모두 사용하지 않고 안드로이드와 iOS를 각각에 맞는 네이티브 언어로 개발하는 경향이 있습니다.
플러터에서 리액트 네이티브로 전환한 이유는 더 안정적인 서비스를 제공하려는 것입니다. 사실 플러터가 오히려 리액트 네이티브보다는 더 최근 등장한 프레임워크입니다. 그래서 왜 오래된 쪽으로 바꾸는지 의아할 수 있는데요. 리액트 네이티브가 더 연혁이 오래된 만큼 해당 프레임워크를 사용할 줄 아는 개발자분들이 더 많아요. 즉 시니어 인력이 더 풍부한데요. 전문 인력을 충원할 때 이점이 될 수 있죠.
물론 플러터도 장점이 있습니다. 플러터는 구글에서 만든 Dart라는 언어를 사용하는데, 주니어도 쉽게 배울 수 있는 언어라 진입장벽이 낮은 편이에요. 그렇지만 슈퍼앱을 지향하는 차봇 앱을 개발하는 과정에 있어서는 리액트 네이티브가 훨씬 더 작업 효율성을 높여주죠.
Q. 대대적인 공사 과정이라 생각되는데요. 이번 리뉴얼을 진행하면서 가장 주안점을 둔 부분은 무엇인가요?
문기: 차봇이라는 플랫폼의 기본을 만들겠다는 목표로 3개월간 밤샘작업을 하며 개발을 진행했습니다. 테크 인력들은 모두 다 합류했어요. 가장 주안점을 둔 부분은 UX에서 제작한 디자인 시스템을 기반으로 컴포넌트 공통 모듈화를 하는 작업이었어요. 그 다음으로는 기존의 오류를 제거하고 서비스를 더 안정적으로 바꾸는 것이었고요. 특히 알림이나 차량 관리 등의 기본적으로 사용자들에게 꼭 제공해야 하는 서비스들을 꼭 개발해야겠다는 의지를 다지고 리뉴얼을 시작했어요.
또, 차량관리 부분은 차봇 앱의 핵심 기능이 되어야 하지만, 각각의 기능들이 엉성하게 꼬여 있는 상태였는데요. 그 실마리를 풀고자 신규 API를 사용해 다시 만들고 테이블 구조도 다시 만드는 등 재설계를 진행했어요. 이제 사용자들에게 차량 관리에 관한 정보를 정확히 전달할 수 있는 기반을 다진 거죠. 이 기반을 토대로 알림 서비스도 작동할 수 있고요.
인규: 저는 데이터 관리가 필요한 부분에 관해 어드민 개발을 담당했었는데요. API 수정 역시 제가 맡았고요. 문기 부문장님을 서포트 하며 부문장님이 놓치신 부분이 없는지 크로스 체크해 프로젝트의 완성도를 높이는데 심혈을 기울였어요.
승철: 기존 차봇 앱과 리뉴얼된 앱에 확연한 차이가 있으면 좋겠다고 생각했습니다. 그래서 반응 속도가 느려지거나 버벅대는 등의 문제를 해결하는 데 가장 많은 시간을 쏟았어요. 목표는 고도화된 상용 앱 수준의 부드러운 사용성을 만드는 것이었습니다. 특히 앱의 사용성은 사용자가 차봇의 다른 비즈니스를 만나기 전 그 첫인상을 결정하는 부분이라고 생각했기에 더 집중했죠.
승민: 저는 특히 사용자 경험과 기술적 완성도에 주안점을 두고 작업했습니다. 사용자들이 차봇 앱을 사용하면서 편리함과 만족감을 느끼길 바랐거든요. 시각적인 디테일도 추가하고 사용자 경험도 향상하고자 정말 신경을 많이 썼어요. 많은 시간을 투자해서 버그를 줄이고 성능을 높여 코드 퀄리티와 안정성을 확보하고자 했고요. 사용자가 차봇을 만나는 건 결국 앱에서이니까, 그만큼 더 완벽하게 하고 싶었습니다. UX도 최대한 디자이너분들과 협업해서 더 좋게 만들기 위해 노력했고, 기술적으로도 완성도를 높였어요.
Q. 이번 리뉴얼에 대해 스스로 점수를 매긴다면 몇 점일까요?
승철: 저는 90점이요. 웹 뷰에 있는 것들을 대부분 그대로 들고 왔다는 점이 좋아요. 사실 iOS에서 기본적으로 제공하는 사용자 상호작용들이 있는데, 그런 것조차 기존의 차봇 앱에서는 제대로 구현이 안 되어 있어서 불편했거든요. 아이폰 사용자라면 차봇 앱을 쓰면서 그런 불편함을 느낄 수밖에 없었을 거예요. 안드로이드도 마찬가지고요. 그런 부분들을 지금까지 신경 쓰지 못해서 매우 아쉬웠는데, 이제는 많이 개선되어서 만족스러워요. 이제 정말 상용 앱이 된 것 같아요.
그리고, 나머지 10점은 이번 리뉴얼에서의 아쉬움인데요. 원래 계획은 웹 뷰에 있는 걸 전부 다 앱으로 가지고 오려고 했어요. 그런데 일정이 촉박하다 보니 한두 가지 정도는 웹 뷰에 그냥 그대로 남아있는 상태로 앱으로 옮겨심기만 했어요. 그런 부분은 앞으로 차차 수정해 나갈 예정입니다.
인규: 저는 51점 주고 싶어요. 프로트엔드 위주로 개편된 거라서 좀 아쉬운 점이 많아요.(웃음) 이번 리뉴얼은 프론트엔드 위주라 백엔드는 일부만 진행되었어요. 하지만 저는 백엔드 개발자다 보니 백엔드 관점에서 생각하게 되거든요. 백엔드에서도 비슷한 문제가 있는데, 이번 리뉴얼로 프론트엔드가 플러터를 리액트 네이티브로 바꾼 것처럼 백엔드도 가까운 시점에 전환을 대대적으로 하면 좋겠어요.
승민: 전 99점이에요. 다 지나고 나니 그동안 경험치가 쌓인 만큼 지금 다시 한다면 더 잘할 수 있지 않을까 싶은 아쉬움은 있지만요.(웃음) 저는 좀 더 애니메이션이 팡팡 터진다든지 앱에서 시각적으로 보이는 연출이 다양하면 좋겠다고 생각하는데요, 나중에 기반이 다 잘 갖추어진 후에는 그런 요소도 꼭 작업해 보고 싶어요.
문기: 저도 99점입니다. 기술적으로는 만점이지만 사용자에게 직접적으로 보이는 포인트가 적다고 생각해서 1점 깎았어요. 이번 리뉴얼은 완전히 기본에 충실해지자는 기조로 진행되었는데요. 물론 다들 충분히 잘해주었고 많은 변화가 있었지만, 이제는 서비스 쪽에서 좀 더 보강되면 좋을 거로 생각해요. 그래서 향후에는 시공서비스나 B2B에서도 앱 안정화를 이루고자 해요. 현재 제각각 따로 있는 여러 서비스가 궁극적으로는 하나의 플랫폼으로 거듭나도록요.
Q. 프로젝트 진행 과정에서 어려웠던 점을 꼽자면?
문기: 다른 프로젝트 개발 요청이 도중에 계속 있었는데, 그러다 보니 전체적인 개발 흐름이 깨져서 기한을 맞추기가 쉽지 않았던 점이 가장 어려웠어요. 그래도 프로젝트를 최대한 기한에 맞춰 마무리 할 수 있어 함께한 크루분들에게 모두 감사합니다.
인규: 해야 할 일은 많고 기한은 넉넉하지 않은데, 적은 인원으로 진행하다 보니 어려운 점이 많았죠. 그래도 서로서로 힘을 합쳐서 성공적으로 마칠 수 있었다고 생각해요.
승민: 리액트 네이티브로 하는 앱 작업은 이번에 처음 경험해 봤는데요. 그래서 초반에는 어려움을 좀 겪었어요. 그렇지만 주변 분들이 적극적으로 도와 주신 덕분에 잘 해낼 수 있었어요.
승철: 기존 앱에 대한 기획 문서가 상세하게 정리된 내용이 없다 보니 작업하기가 어려웠어요. 예를 들어 이 수치를 넣으면 여기에 뭐가 떠야 하고 이런 내용이 잘 정리가 되어 있지 않더라고요. 기존 앱과 리뉴얼할 앱을 일일이 비교해 가면서 작업할 수밖에 없었어요. 디자이너분들이 화면을 전부 다시 그려 주셔서 그걸 바탕으로 작업했습니다. 정말 감사한 일이죠.
Q. 힘든 점도 많았던 리뉴얼인 만큼 기억에 남는 에피소드도 있을 것 같은데요.
승민: 매일 크루들과 논의하고 늦게까지 개발하면서, 특히 자정 넘어서까지 크루들과 함께 으쌰으쌰 하며 야근했어요. 그땐 힘들었는데 리뉴얼이 잘 마무리되니까 정말 뿌듯합니다.
승철: 저도 리뉴얼 막바지에 프론트엔드 개발자 전부 밤까지 남아서 열심히 야근했던 게 기억나네요. 힘들기도 했지만 잊지 못할 추억이 된 것 같아요. 그리고 이번 프로젝트를 통해 승민 님에게 ‘맑은 눈의 광인’이라는 별명이 붙여진게 기억나요. (웃음) 야근할 때 마다 헤드폰에 올림머리하고 있는 게 비슷하다고요.
문기: UX 팀에게 무슨 디자인이든지 개발할 수 있다고 말했더니, 정말 고난이도의 디자인을 주셨어요. (웃음) 저는 개발에서 안 되는 건 없다고 생각하거든요. 그래서 그렇게 전했더니 정말 원하는 이상향 그대로 보내주셨더라고요. 그래서 그대로 다 만들었습니다.
그리고, 다들 야근 이야기를 하지만, 제가 야근을 딱히 독려하지는 않았어요. (웃음) 그보다는 일정에 다들 쫓기고 있었고, 어쩔 수 없이 야근해야 한 거라 책임 의식을 가지고 각자 스스로 야근을 한 셈이죠. 저도 야근을 별로 좋아하지 않아요. 가끔 왜 야근 안 하냐고 말하기는 하지만 그건 농담이고요. (웃음) 보통은 야근하지 말라고 하죠. 그렇지만 집에 가라고 해도 안 가는 사람이 대부분이에요.
Q. 앞으로 차봇 내 개발 인력을 크게 강화할 예정으로 알고 있는데요. 어떤 분들과 함께 일하고 싶으신 가요?
문기: 내년에는 추가로 30여명을 충원하며 개발 인력을 대폭 늘릴 계획이에요. 주로 시니어 위주로 채용할 예정인데요. 개발은 여러 사람이 함께하는 것이기 때문에 사람 간의 관계가 가장 중요하다고 생각합니다. 또, 자기가 맡은 바를 성실하게 다 책임지고 끝까지 완수하는 사람이 오면 좋겠어요. 기술력보다는 하고자 하는 의지가 있는지, 열정이 있는지가 더 중요하다는 거죠. 그래야 더 잘 성장할 수 있어요. 물론 기술적인 스펙은 기본은 있어야 하지만, 그 이상은 의지와 소통능력이 중요해요.
승민: 같이 열심히 배우려는 의지가 있는 사람이면 좋겠어요. 뭐든 열심히 으쌰으쌰 하면서 함께 일할 수 있는 분이라면 누구든 좋을 것 같아요. 예전에는 차봇 내에서 스터디도 많이 했는데 지금은 한동안 워낙 바빠서 다들 쉬고 있는 중이에요. 같이 배우면서 성장하는 분이 꼭 오셨으면 좋겠습니다.
승철: 저는 실력이 좋은 사람이 오면 좋겠어요. 스스로 뭔가를 해낼 수 있는 실력이 있는 사람요. 물론 그 전에 필수조건이 바로 인성이죠. 자기 혼자 잘났다고 하는 사람은 팀의 협동력을 망칠 수 있어요. 그보다는 함께 어우러져서 더 큰 시너지를 만들 수 있는 사람이 좋아요.
인규: 실력이 아무리 좋아도 겸손하지 못한 사람은 안 된다고 생각해요. 항상 노력하고 또 겸손한 사람과 같이 일하고 싶어요.
Q. 차봇에서 이루고 싶은, 그리고 개발자로서 달성하고 싶은 목표가 있다면 무엇인가요?
인규: 일차적으로는 백엔드 관점에서 아직 전환되지 않은 코드들을 모두 전화하고자 해요. 그 다음은 그걸 목적별로 분리하고, 인프라와 어울리게 구성하고 싶습니다. 말은 간단히 했지만 이게 사실 되게 큰 작업이고 시간도 많이 필요해서 아마 내후년은 되어야 가능하지 않을까 싶어요.
그리고 개발자로서 개인적인 목표를 생각해 보자면, 한 번 일을 하고 나면 또 같이 일하고 싶은 사람으로 기억되고 싶어요. 누군가 백엔드 개발자 한 명이 필요할 때 제일 먼저 생각나서 부르고 싶은 그런 사람이요.
승철: ‘자동차 앱은 차봇이야.’라는 말을 들을 수 있는 서비스로 만들고 싶어요. 자동차와 관련해서 뭔가 앱이 필요하다 싶을 때 사람들이 당연하게 차봇을 떠올리는 거죠. 제가 예전에 지도를 채우는 앱을 서비스한 적이 있는데, 여행하는 사람들이 있는 카페 같은 곳에서는 꽤 화제가 되었거든요. 그 모습을 보면서 정말 동기부여가 되었어요. 그래서 차봇도 사람들이 많이 언급하고 친숙하게 사용하는 그런 서비스가 되면 좋겠습니다. 또, 개발자로서는 ‘네가 하니까 확실히 다르다.’는 말을 듣고 싶어요. 이런 말을 들으면 저는 너무 좋더라고요. 그걸 위해서 열심히 발전해 나가야죠.
문기: 저도 승철 매니저랑 비슷해요. 사람들이 이건 딱 차봇이다 하고 떠올릴 수 있는 서비스가 되면 제일 좋을 것 같고요. 구체적으로는 향후 IPO로 상장할 수 있는 기업으로 거듭나면 좋겠어요. 충분히 현실 가능하고요. 그리고 나중에 차봇에서 저와 함께 일했던 사람들이 성장하고 또 다른 곳으로도 가면서 ‘나 차봇에서 일했어.’라고 할 때 환영 받았으면 좋겠어요. 차봇에서 일한 개발자는 믿고 뽑을 수 있다는 인식이 생기도록 계속해서 인재를 발굴하고 성장시키는 기반을 닦고 싶어요.
승민: 저는 차봇에서 함께 일하면서 주니어에서 시니어로 레벨업하는 분들과 같이 일하는 개발자가 되고 싶어요. 아직은 제가 주니어지만 열심히 배우고 경험치가 쌓이면 시니어로 거듭나는 날이 올 텐데요. 저처럼 차봇에서 레벨업을 기다리고 있는 분들과 함께 많이 배우고 싶어요. 또, 그분들이 저와 함께 일하고 싶다고 생각하는 그런 개발자가 되고 싶고요. 앞으로 많은 분들이 차봇에 합류하실 거고, 저보다 연차가 낮은 주니어 개발자분도 올 수 있을 텐데 그런 분들에게 필요한 지식을 잘 알려줄 수 있는 그런 개발자로 성장하고 싶어요.
Q. 마지막으로 이번 리뉴얼의 성공적인 마무리를 기념하며 소감 한 말씀 부탁드려요!
문기: 프론트엔드 개발자 이승민 님, 차주한 님, 원종현 님, 어드민 개발의 핵심 역할을 한 박인규 님, 그리고 프론트엔드 개발을 이끈 이승철 매니저와 함께 하나로 똘똘 뭉친 덕분에 이번 리뉴얼을 성공적으로 마칠 수 있었습니다. 앞으로 차봇에서 팀장과 팀원들이 하나 되어 목표를 이루려고 최선을 다하는 모습을 계속 볼 수 있으면 좋겠습니다. 테크부문 팀원들 모두 고생 정말 많았고, 앞으로도 열심히 합시다!
승철: 개편된 차봇 앱이 모든 크루분들의 마음에 쏙 들었으면 좋겠어요. 열심히 개발했고, 앞으로도 점점 개편되는 서비스를 보여드릴 테니 많은 관심과 기대 부탁드립니다. 그리고 우리 개발자분들, 이번 리뉴얼에 정말 많은 시간과 노력을 쏟아부었어요. 지나가다 마주치면 격려의 말씀 부탁드릴게요. (웃음) 그리고 리액트 네이티브로 개편할 때 김용민 팀장님이 개발자들의 멘탈 케어를 해주시고 일정도 조율하면서 힘써 주셔서 정말 감사하다고 말씀드리고 싶습니다. 감사합니다!
승민: 정말 다들 고생 많으셨어요! 제가 앱 개발이 처음인 만큼 부족한 부분이 있었지만, 주변 분들이 열심히 칭찬해 주고 이끌어 주신 덕분에 여기까지 올 수 있었다고 생각합니다. 부족한 실력 탓에 위축되고 풀이 죽어 있었는데 다들 저를 챙겨 주시고 힘이 되어 주셨어요. 그래서 정말 열심히 할 수 있었습니다. 다시 한번 정말 감사합니다!
인규: 앞으로도 어려움이 많고 힘든 일도 많겠지만 서로 힘을 합쳐서 잘 헤쳐 나가면 좋겠습니다. 파이팅!