모노리포 희망편, 절망의 리포가 희망의 리포로 부활하기까지 걸린 1년

4 hours ago 1

안녕하세요, 토스 클라이언트 엔지니어링 헤드 박서진, 프론트엔드 플랫폼 엔지니어 박성범입니다. 토스 서비스는 어떻게 개발되고 있을까?토스에서는 100명이 넘는 프론트엔드 엔지니어들이 토스앱 안과 밖의 제품들을 개발하면서, 하루에 수백 번 제품을 업데이트 해가고 있어요. 제품의 숫자가 많고 종류도 다양하지만, 핵심적인 개발환경은 동일하게 유지하고 있습니다. 구체적으로는 아무리 오래된 제품이라고 하더라도 모두 최신 버전에 가까운, 동일한 버전의 React 19와 Next.js 15을 사용하고 있어요. 덕분에 사용자들은 React Concurrent Mode 및 React Server Components와 같은 최신 기능을 사용하며 좋은 경험을 하고 있죠. 동일한 버전의 라이브러리를 사용하고 있기 때문에, 여러 서비스 간 코드 공유도 무척 쉬워요. 토스앱 전체에 걸쳐서 영향을 미치는 라이브러리를 개발하고자 해도, 여러 React 버전 등을 고려할 필요 없이 쉽게 공유 코드를 만들 수 있어요.또한 React나 Next.js 뿐만 아니라 TypeScript나 번들러, Linter 경험도 동일하게 유지하고 있어요. 구체적으로는, 모든 서비스는 빠짐없이 Go로 작성된 TypeScript 7를 사용하는 등 최신 개발환경의 사용성을 누리고 있어요.이 모든 사용자 경험과 개발자 경험의 핵심에는 토스에서 중요하게 생각하는 ‘모노리포’가 있어요. 토스에서는 모든 모바일 제품을 개발하는 코드는 1개의 모노리포로 통합되어 있어요. 데스크톱 제품을 개발하는 코드도 비슷하고요. 모노리포를 활용하고 있기 때문에 전체 서비스의 형상을 거의 비슷하게 맞추고, 플랫폼 변경사항을 빠짐없이 편리하게 전파하고 있어요.모노리포만으로는 모든 문제가 해결되지 않는다그런데 모노리포를 사용한다고만 해서 이 모든 것이 가능할까요? 그렇지는 않았어요.토스 프론트엔드는 총 인원이 5명일 때부터 모노리포를 사용해 왔지만, 100명이 넘는 인원이 되기까지 규모가 확장되며 다양한 문제를 마주해왔어요. 구체적으로는, 2025년 초 기준으로는 개발자 숫자가 지금보다 훨씬 더 적었음에도 여러 문제들이 있었어요.먼저, 모노리포 안에서 사용되는 의존성이 매우 다양했어요. 어디는 최신 버전의 React를 쓰지만 어디는 아주 오래된 버전을 썼죠. React 뿐만이 아니라 모든 라이브러리가 이랬어요.이러다 보니까 개발자 경험도 파편화되었어요. 어떤 서비스는 최신 버전의 새 개발환경을 ...

Read Entire Article