안녕하세요
면접을 보면 항상 공통적으로 그때 당시에 "왜 React로 가야 하는가?"에 대해서 팀내 발표를 진행하셨다고 하셨는데 왜 React로 가야 하는지 발표를 하셨나요? 에 대한 저의 생각을 다시 차근차근 적어보려고 합니다.
제가 관리하는 서비스는 페이지 구성이 굉장히 복잡한 서비스 였습니다.
얼마나 복잡한데요?
- admin에서 구성한 데이터로 UI를 구성하고, 구성한 UI를 클릭할때 마다 아래의 UI가 바뀌어야 하는 페이지 였습니다. 한마디로 데이터 의존성이 굉장히 높은 페이지 였습니다.
또, 페이지를 제어하는 javascsript 로직은 모두 하나의 객체에 담겨 있었고,
무엇인가를 수정해야 한다면, 그 컴포넌트를 건드리고, 참조하는 로직이 사방곳곳에 정의되어 있어 배포시 사이드 이펙트가 자주 발생하였습니다.
javascript도 수정이 어려웠지만, css구조도 인라인 스타일, html 내부의 css, css파일에 있는 디자인 정의가 혼합되어 있었습니다. 또 서로 관계없는 컴포넌트인데 UI가 비슷하다는 이유로 같은 클래스를 공유하여 디자인 수정도 쉽지 않았습니다.
위의 문제를 해결하기 위해서는 React의 코드 스타일과 동작방식, 저희 서비스의 적합성 부분에서 React가 더 이득이라고 생각했습니다.
=> 기존에는 들여쓰기와 닫는 태그도 정상적으로 되어 있지 않는 html을 분석해야 했다면, React의 컴포넌트 설계와 선언형 스타일로 코드 파악에 유리하다고 생각합니다.
=> 그때 당시 같은 컴포넌트가 많았는데 이를 컴포넌트화 하고 싶었습니다.
=> 기존에는 직접 dom에 접근하여 변경해야 됬고, 이 로직이 사방 곳곳에 있었다면 이제는 데이터의 변경하는 곳을 한곳으로 정리할 수 있고, 변경하는 곳은 액션의 네이밍으로 쉽게 찾을 수 있습니다.
그때 당시, 제가 담당하고 있는 모듈은 추가 기능 개발이 필요했고, 고객을 더 받기 위해서는 서비스 안전성과 성능 개선이 필요하였습니다. (lighthouse 기준으로 PC가 평균 40점, Mobile이 평균 20점 정도 되는 성능을 가지고 있었습니다) 조금 더 안정적으로 서비스를 개선하기 위해서는 해당 개선 작업이 필요하다고 느껴 담당자로서 왜 필요한지에 대해서 리더분에게 PPT 발표를 진행하였습니다
이후, TF팀을 결성하여 1차와 2차로 나눠 리팩토링 작업과 프로토타입 개발을 진행했습니다. 그 결과, Lighthouse 기준으로 PC 평균 점수는 40점에서 88점으로 향상되어 48점 상승했으며, Mobile 평균 점수는 20점에서 78점으로 향상되어 58점 상승하는 개선 효과를 보였습니다. 또한, 제시된 개선 사항을 반영하여 최종적으로 모든 항목이 90점 이상으로 개선되었습니다.