새로운 가능성을 찾아서

5

발행일: 2025년 05월 08일

‘좀비 차일드’와의 사투 끝에 맞이한 새벽은 유난히 차가웠다. 텅 빈 머그잔에는 식어버린 커피 자국만이 남아있었다. 카토는 뻑뻑한 눈을 비비며 모니터 너머의 희뿌연 창밖을 응시했다. 밤새 그를 괴롭혔던 코드 대신, 이제는 근본적인 질문이 그의 머릿속을 떠나지 않았다.

‘이 길은 아니다.’

Context API와 useReducer. React가 제시한 길이었지만, 그 길 끝에는 불필요한 렌더링의 늪, 보일러플레이트의 정글, 그리고 예측 불가능한 좀비들의 함정이 도사리고 있었다. 더 이상 이 길을 고집할 수는 없었다.

“다른 방법… 다른 방법은 없나?”

마치 망망대해에서 나침반을 잃은 선장처럼, 카토는 새로운 방향을 찾아 헤매기 시작했다. 그의 손가락은 다시 키보드 위를 분주하게 움직였다. 목적지는 명확했다. ‘React 상태 관리 라이브러리’.

가장 먼저 눈에 들어온 것은 역시 ‘거인’ Redux였다. 한때 React 상태 관리의 표준처럼 여겨졌던 라이브러리. 강력한 상태 관리 패턴, 예측 가능한 상태 변경, 방대한 커뮤니티와 풍부한 미들웨어 생태계. 장점은 차고 넘쳤다.

하지만 카토의 표정은 밝지 않았다.

‘Redux… 확실히 강력하지만, 그만큼 무겁지.’

과거 Redux를 사용했던 경험을 떠올렸다. 액션, 리듀서, 스토어, 미들웨어… 수많은 개념과 규칙들. 프로젝트를 시작하기 위한 설정부터가 만만치 않았다. 그리고 무엇보다, useReducer에서도 질리도록 경험했던 그놈의 ‘보일러플레이트’. Redux는 그보다 더하면 더했지, 덜하지 않았다. 마치 거대한 요새를 짓기 위해 두꺼운 설명서를 정독하고 수많은 벽돌을 쌓아 올려야 하는 기분이었다.

‘지금 우리에게 필요한 건 경쾌한 발걸음인데, 이건 너무 육중해.’

다음으로 눈길을 돌린 것은 MobX였다. 반응형 프로그래밍에 기반한, 보다 직관적이고 유연한 상태 관리. 데코레이터나 프록시를 활용하여 마치 마법처럼 상태 변경을 감지하고 컴포넌트를 업데이트했다. 확실히 Redux보다는 코드량이 적고 간결해 보였다.

하지만 MobX 역시 카토의 마음을 완전히 사로잡지는 못했다.

‘이 편리함 뒤에는… 보이지 않는 복잡성이 숨어있어.’

MobX의 ‘마법’은 때로는 양날의 검이었다. 상태 변경이 어떻게 전파되고 컴포넌트가 언제 리렌더링되는지 명시적으로 추적하기 어려울 때가 있었다. 디버깅 과정에서 예상치 못한 동작에 발목을 잡혔던 기억이 떠올랐다. 마치 투명 망토를 입은 존재처럼, 그 내부 동작을 완전히 이해하기 전까지는 불안감을 떨칠 수 없었다.

Redux와 MobX. 둘 다 훌륭한 라이브러리였지만, 지금 카토가 찾는 것은 아니었다. 그는 더 가볍고, 더 단순하고, 그러면서도 React의 철학과 자연스럽게 어우러지는 무언가를 원했다. 기존 라이브러리들은 강력한 기능을 제공하는 대신, 저마다의 복잡성과 학습 곡선이라는 트레이드오프를 요구했다.

‘결국… 돌고 돌아 다시 React인가?’

카토는 문득 React 훅(Hook)을 떠올렸다. useState, useEffect, useContext, useReducer… 컴포넌트 로직을 간결하고 재사용 가능하게 만들어준 혁신적인 기능. 특히 함수형 컴포넌트의 매력을 극대화시킨 주역이었다.

‘훅의 단순함과 유연함… 이걸 상태 관리에 그대로 녹여낼 수는 없을까?’

Context API의 문제는 ‘어떻게’ 상태를 구독하고 전파하는지에 있었다. 불필요한 리렌더링을 유발하는 비효율적인 방식. 만약 이 부분만 개선할 수 있다면?

‘훅처럼 쓰면서도… 성능 문제를 해결할 순 없을까?’

순간, 카토의 머릿속에 희미한 빛줄기가 스쳐 지나갔다. 마치 짙은 안갯속에서 새로운 항로를 발견한 듯한 느낌. 기존 라이브러리를 따라가는 것이 아니라, React의 핵심, 훅의 장점을 살리면서 Context의 단점을 극복하는 새로운 방식.

아직은 막연한 아이디어였다. 구체적인 형태도, 구현 방법도 떠오르지 않았다. 하지만 방향은 잡힌 것 같았다. 거대한 외부 라이브러리에 의존하는 대신, React의 내재적인 힘, 훅의 잠재력을 최대한 활용하는 길.

카토는 다시 한번 깊게 숨을 들이마셨다. 절망의 끝에서 발견한 실낱같은 희망. 그의 눈빛에는 어느새 새로운 도전을 향한 투지가 어리고 있었다. 길고 긴 터널의 끝이 보이기 시작한 것일까? 아직은 알 수 없었지만, 그는 다시 키보드 위에 손을 올렸다. 이제부터는 ‘탐색’이었다. 새로운 가능성을 향한, 미지의 영역으로의 탐색이 시작된 것이다.