왜 또 상태 관리자인가? - 세상에 Jotai를 소개하다

12

발행일: 2025년 05월 21일

내부 검증은 끝났다. 다이시 카토는 자신의 두 창조물, Zustand와 Jotai가 각기 다른 가치와 철학을 지녔음을 스스로에게 증명했다. 아토믹 모델의 우아함과 유연성은 특정 시나리오에서 분명 Zustand를 능가하는 빛을 발했다. 이제 남은 것은 이 새로운 발견을 세상과 공유하는 일이었다.

하지만 그의 마음은 복잡했다. 단순히 새로운 오픈소스 라이브러리를 하나 더 공개하는 것과는 차원이 다른 문제였다. 그의 손에는 이미 Zustand라는, 수많은 개발자들의 사랑을 받는 성공작이 들려 있었다. 그런데 그 창조주가 직접, 또 다른 상태 관리자를 들고나온다?

“왜…?”

그 질문이 마치 거대한 산처럼 그의 앞을 가로막고 있었다. 커뮤니티가 던질 가장 첫 번째이자, 가장 날카로운 질문.

“Zustand로도 충분하지 않았나요?”
“굳이 또 다른 라이브러리를 만들 필요가 있었습니까?”
“결국 자기 복제 아닌가요? Zustand 팀은 이제 Jotai에 집중하려는 건가요?”

머릿속은 벌써부터 시끄러웠다. 예상되는 비판과 혼란, 그리고 어쩌면 쏟아질지 모를 비난까지. 그는 자신이 만든 첫 번째 왕국 옆에, 또 다른 새로운 형태의 도시를 건설하는 이유를 세상에 납득시켜야 하는 건축가와 같았다. 그 정당성을 설득력 있게 제시하지 못한다면, Jotai는 시작부터 ‘불필요한 존재’라는 낙인이 찍힐 수도 있었다.

“이건… 기술적인 문제 이전에, 커뮤니케이션의 문제야.”

그는 키보드 위에 손을 올렸지만, 선뜻 코드를 세상에 공개(git push)할 수가 없었다. 먼저 해야 할 일이 있었다. 바로 Jotai의 탄생 설화, 그 존재 이유를 명확하고 진솔하게 세상에 알리는 것. 코드만 덩그러니 던져놓는 것은 무책임한 일이었다.

그는 새로운 브라우저 탭을 열고, 빈 문서 편집기를 응시했다. 하나는 Jotai의 공식 GitHub 저장소에 올라갈 README 파일, 다른 하나는 자신의 개인 블로그에 게시할 소개글이었다. 이것은 단순한 사용 설명서가 아니었다. Jotai의 정체성을 담은 선언문이자, 커뮤니티를 향한 그의 진심 어린 편지가 되어야 했다.

그는 신중하게 단어를 고르며 써 내려가기 시작했다.

“Jotai: 원자적이고 유연한 React 상태 관리”

제목부터 명확히 했다. 그리고 서두에서부터 가장 민감한 질문, 즉 Zustand와의 관계를 정면으로 다루었다.

“많은 분들이 질문하실 겁니다. 왜 Zustand를 만든 제가 또 다른 상태 관리 라이브러리인 Jotai를 만들었는가? Zustand는 여전히 훌륭하고 강력하며, 많은 상황에서 최적의 선택지입니다. Jotai는 Zustand를 대체하기 위해 만들어진 것이 아닙니다.”

그는 단호하게 선을 그었다. Zustand를 폄하하거나 버리는 것이 아님을 분명히 했다.

“Zustand를 개발하고 커뮤니티와 소통하면서, 저는 상태 관리의 또 다른 측면, 특히 대규모 애플리케이션에서의 모듈성, 코드 스플리팅과의 조화, 그리고 궁극적인 간결함에 대해 더 깊이 고민하게 되었습니다. Zustand의 ‘하나의 큰 스토어와 셀렉터’ 모델이 가진 미묘한 한계점들이 특정 시나리오에서는 아쉬움으로 다가왔습니다.”

그는 Jotai가 탄생하게 된 배경, 즉 Zustand가 미처 다루지 못했던 ‘다른 종류의 문제’에 대해 솔직하게 설명했다.

그리고 Jotai의 핵심 철학, ‘아토믹 스테이트(Atomic State)’를 소개했다.

“Jotai는 상태를 더 이상 쪼갤 수 없는 원자(Atom) 단위로 다룹니다. 각 원자는 독립적이며, 필요한 곳에서 정의되고 사용됩니다. 이는 마치 레고 블록과 같습니다. 개발자는 이 작은 블록들을 조합하여 원하는 상태 구조를 자유롭게 만들 수 있습니다.”

그는 Zustand와의 차이점을 명확히 대비시켰다.

“Zustand가 잘 설계된 하나의 큰 창고에서 필요한 물건을 꺼내오는 방식이라면, Jotai는 필요한 물건(원자)들 자체가 독립적으로 존재하고, 필요에 따라 서로 연결되는 방식입니다. 이는 특히 높은 모듈성과 점진적인 도입, 그리고 최소한의 보일러플레이트를 추구하는 개발자들에게 새로운 가능성을 열어줄 것입니다.”

파생 상태가 함수로 정의되고, 의존성이 자동으로 추적되는 Jotai만의 장점도 빼놓지 않고 강조했다.

마지막으로 그는 다시 한번 힘주어 말했다.

“결론적으로, Jotai는 Zustand의 경쟁자가 아닙니다. 여러분의 연장통에 추가될 수 있는 다른 종류의 정교한 도구입니다. 프로젝트의 특성과 요구사항에 맞춰 Zustand와 Jotai, 혹은 다른 훌륭한 상태 관리 라이브러리 중에서 최적의 도구를 선택하는 지혜가 필요합니다.”

README와 블로그 포스트 초안을 완성하고, 그는 몇 번이고 다시 읽으며 문장을 다듬었다. 기술적인 정확성은 물론, 그의 진심이 왜곡 없이 전달될 수 있도록 단어 하나하나에 심혈을 기울였다.

마침내 준비는 끝났다. 그는 심호흡을 하고, Jotai의 코드를 GitHub에 푸시했다. 그리고 거의 동시에, 정성껏 작성한 README 파일과 블로그 포스트를 세상에 공개했다.

이제 주사위는 던져졌다.

그는 텅 빈 사무실에서 홀로 모니터의 불빛을 응시했다. 자신의 설명이 커뮤니티에 어떻게 받아들여질까? 그의 진심이 통할까? 아니면 또 다른 논쟁의 불씨가 될까?

두려움과 기대감이 교차하는 복잡한 심정. 하지만 그는 피하지 않았다. 자신의 새로운 창조물에 대한 믿음, 그리고 그것이 필요한 개발자들에게 분명 가치를 제공할 것이라는 확신이 있었기에.

Jotai 1.0. 다이시 카토의 두 번째 야심작이 마침내 세상에 그 모습을 드러냈다. 이제 남은 것은 커뮤니티의 반응을 기다리는 것뿐이었다. 그의 새로운 모험은 이제 막 진짜 시험대에 오른 참이었다.