[번역] 2025 in Review

[번역] 2025 in Review

2025-12-27

TkDodo2025 in Review 를 번역한 글입니다.

1

또 다시 그 시기가 돌아왔습니다 - 지난 12개월 동안 제가 한 일을 되돌아보는 시기입니다. 좋은 것, 위대한 것, 완벽한 것들. 솔직히 말하자면, 2025년은 저에게 놀라운 해였습니다. 제 새로운 직업부터 시작해볼까요:

Sentry 👨‍💻

1월 7일, 저는 지난 10년 동안 비엔나의 스타트업에서 일한 후, Sentry의 디자인 엔지니어링 팀에 파트타임 계약자로 합류했습니다. 이건 제 경력에서 가장 큰 변화였으며, 동시에 흥미롭고 두려운 일이었습니다. 그러나, 뭐라고 말할 수 있을까요: 저는 Sentry에서 일하는 것을 정말 즐깁니다. 비엔나 사무실의 모든 사람들은 매우 친절하고 환영해 주며, 일은 도전적이고 보람이 있으며, 아이들을 둔 이후로 유럽을 떠나 본 것은 처음인 샌프란시스코로 여행을 갔습니다.

올해 초 제 블로그 포스트 ‘디자인 시스템 설계’에서 디자인 엔지니어링 팀의 업무에 대해 쓴 적이 있지만, 만약 이게 다소 추상적으로 들린다면, 제가 자랑스럽게 생각하는 올해 제가 도와서 배포한 일들의 구체적이지만 비포괄적인 리스트를 아래에 작성하겠습니다:

Sentry의 재설계

아직 보지 못하셨다면 - Sentry는 대담한 새로운 모습을 가지고 있으며, 디자인 엔지니어링 팀이 전체 플랫폼에 이를 배포하는 책임을 맡았습니다. 이는 S.C.R.A.P.S - 우리의 새로운 디자인 언어와 디자인 시스템( S tandardized C ollection of R eusable A ssets & P atterns for S entry) 구축과 함께 진행되었습니다. 이 이름은 기존에 코드베이스에서 발견한 ‘공유 구성 요소’로부터 첫 번째 버전을 실제로 모아온 것처럼 잘 어울립니다. 이는 APIs와 문서를 개선하고, 누락된 새로운 패턴을 제공하는 등 앞으로 우리에게 많은 일이 남아있음을 의미합니다.

Sentry 코드베이스 개선

우리는 Sentry 코드베이스를 모든 사람에게 더 좋게 만들기 위해 꽤 많은 노력을 기울였습니다. 지난 10년 동안 거의 감독 없이 유기적으로 성장했기 때문입니다. 올해 우리는 타입 인식 린팅을 활성화하고 noImplicitAny를 켜며 사용되지 않는 코드를 제거하기 위해 knip를 도입했습니다. 이 프로젝트는 몇 달 동안 많은 노력을 투자했으며, 저에게 ‘죽은 코드는 존재하면 안 된다’라는 주제로 발표를 하도록 영감을 주었습니다. 내년에 여러 컨퍼런스에서 이 발표를 할 예정입니다.

Sentry 제품 개선하기

우리는 모두를 위해 Sentry를 더 빠르게 만들기 위해 노력했습니다. ⚡ 여기에는 경로 의도 미리 로드, Select 구성 요소를 위한 자동 가상화, 처음 탐색할 때 로딩 스피너가 깜박이지 않도록 공유 레이아웃을 사용하는 기능이 포함됩니다. 그리고 우리는 내부 개발한 URL 상태 솔루션을 nuqs로 교체하는 과정에 있습니다. 이는 진행 중인 마이그레이션으로, 얕은 라우팅을 지원하기 때문에 성능에 긍정적인 영향을 미칠 것입니다. 올해 나는 여러 기능과 수정사항이 병합되어 nuqs에 적극적으로 기여하게 되었습니다. 오픈 소스에 기여하는 가장 좋은 방법 중 하나는 사랑하는 도구를 도와주고 그 도구를 직접 사용할 필요가 있다는 것이 사실입니다. nuqs 코드베이스를 안내해준 François Best에게 감사드립니다. 그는 정말 최고입니다. 🙌

오픈 소스 🔓

올해 저에게 오픈 소스는 체감상 느리게 진행된 것 같습니다. TanStack Query에 대해서는 사실상 아무 일도 일어나지 않았습니다. 비록, 우리는 올해를 v5.62.11에서 시작해 현재 v5.90.12에 이르렀으니, 몇 가지 기능을 출시했을 것이라는 것은 확실하지만, 혁신적인 것은 아니었던 것 같습니다. staleTime:‘static’timeoutManager가 떠오르지만, 둘 다 꽤 niche적인 기능이라서 당신이 아직 사용해보지 않았다면 놀라지 않을 것입니다. 또한 streamedQuery도 좋은 추가 사항이었습니다. 때로는 보통 1년이 얼마나 긴 것인지 잊어버리기도 하고, 이렇게 뒤돌아보면 실제로 얼마나 많은 일이 있었는지를 깨닫게 됩니다. 😅

또한, 언젠가 v6이 될 수도 있는 정렬되지 않은 목록이 있지만, 여기서 서두르지 않을 것입니다. 해야 할 일이 무엇인지 충분히 자신감이 생기면 공개 토론을 게시할 것입니다. AI 덕분에 사용량이 급증했고, 대부분 사용자들은 현재 라이브러리에 매우 만족하고 있습니다. 남아 있는 개선 사항들은 매우 작거나 잘 발생하지 않는 엣지 케이스에 관한 것입니다. Query가 ‘기능 완전’이라고는 할 수 없지만, 현재 사용자들이 시도하려고 하는 것에는 ‘충분히 좋다’고 할 수 있을 것입니다.

반면에, 저를 괴롭히는 한 가지가 있는데, 그것은 물론 Async React입니다.

Async React

React는 최근에 많은 새로운 기능을 출시했습니다: Suspense, useTransition & View Transitions, use, useOptimistic 및 Actions. Ricky의 발표를 보신 분이라면 이러한 기능들이 정말 훌륭하고 올바르게 사용되면 꽤 강력하다는 것을 알 수 있습니다. 그러나 데모에서 API가 다소 저수준이고 우리가 희망하는 만큼 사용하기 쉽지 않다는 것도 보셨을 것입니다. 그의 발표 2부에서 그는 이를 개선하기 위해 우리가 필요한 세 가지 요소가 있다고 결론짓습니다: 디자인 컴포넌트 라이브러리에서의 Async React 지원, 라우터 및 데이터 페칭 라이브러리의 기본 설정입니다. 기본적으로 앱 개발자는 기존 라이브러리에서 저수준 API에 대한 좋은 추상화를 제공하고 이를 매끄럽게 통합할 때까지 걱정할 필요가 없습니다. TanStack Router, TanStack Query 및 Sentry Scraps에서 모두 작업하는 사람으로서, 이는 정말 무섭습니다.😂 앞으로 해결해야 할 많은 것들을 알아내야 한다는 의미입니다. 적어도 지금은, 그것은 ‘미래의 나’ 문제처럼 보입니다. Async React 작업 그룹이 시작되고 우리가 이 주제를 더 잘 이해하게 되면서 내년에 이에 대한 블로그 게시물이 더 많을 것으로 기대해 주세요.

공식 참석 🗣️

저는 React 파리에서 ‘React Query API Design - Lessons Learned’라는 발표를 했고, React Summit 암스테르담과 React Advanced 런던에서 ‘React Query - Beyond the Basics’라는 워크숍을 진행했습니다. 이번이 워크숍을 한 첫 번째 시간이었고, 경험에 대해 긍정적으로 놀랐습니다. 저는 React Query에 대한 패턴을 가르치는 것을 좋아하고, 제 경험 덕분에 독특한 자격이 있다고 생각합니다. 워크숍 준비는 많은 작업이 필요했지만(발표 준비보다 더 많은), 누구나 경험 수준에 관계없이 그 네 시간에서 뭔가를 가져가는 모습을 보니 완전히 가치가 있었습니다. 그래서 만약 저에게 그 워크숍을 직접 혹은 온라인으로 해주길 원한다면, 꼭 연락해주세요.

블로깅 📚

저는 정기적으로 블로깅을 하려고 노력했고, 많은 일에도 불구하고 11개의 블로그 포스트를 작성할 수 있었습니다 - 거의 매달 하나씩입니다. 아직 공개하지 못한 TanStack Router에 관한 또 다른 글을 준비 중입니다. 이 글은 존재하지 않는 API를 참조하고 있으며 우선 구현되어야 하므로, #12로 볼 수 있겠습니다.

저는 해커 뉴스의 첫 페이지에 오르기도 했습니다. 이 아름다운 통계를 보세요: Dominik 🔮 @tkdodo.eu PoV: 7월의 주황색 사이트에서의 하루 🟠 그것은 또한 내가 ‘React의 useCallback Hook은 쓸모없는가?‘에 대해 PodRocket 팟캐스트에 다시 출연하게 만들었습니다.

그럼에도 불구하고, 제 블로그로의 트래픽은 전년 대비 4분의 1 감소하기 시작했습니다. 이는 주로 AI가 직접 답변을 제공하기 때문에 많은 사람들이 더 이상 블로그 포스트를 읽을 필요가 없기 때문이라고 생각합니다. 하지만 내 블로그를 방문하기로 결정한 사람들은 그들이 보는 것을 좋아한다는 것을 나타내는 방문 기간과 방문당 조회수가 모두 상승하고 있는 것은 보기 좋습니다 📈.

달리기 🏃‍♂️

2025년은 제가 달리기를 진지하게 시작한 해입니다. 9월에 와하우 하프 마라톤에 참가하기로 등록하고 3월부터 그에 대한 훈련을 시작했습니다. 처음에는 주 2-3회로 시작해 여름 동안 주 4회로 늘렸습니다.

저는 더 긴 거리를 준비하기 위해 몇 번의 10km 경주에 참가하여 실제 경주에서 경쟁하는 것이 얼마나 다른 느낌인지 체험하고 싶었습니다. 믿고 싶지 않았지만, 다른 사람들의 존재, 당신을 응원하는 사람들 그리고 ‘경쟁 정신’이 훈련 중에 생각했던 것보다 훨씬 더 빨리 달리게 해 줍니다.

예를 들어, 제 최상의 훈련 10km 기록은 59분 21초였지만, 경주에서 나온 제 개인 기록은 51분 56초입니다.

저는 7월에 친구와 함께 21.1km 거리도 한 번 달렸고, 2시간 7분 4초에 완주했습니다. 경주 목표는 2시간 이내로 완주하는 것이었으므로 훈련에서 그 범위에 있다면 경주에서도 그곳에 도달할 수 있을 것 같았습니다.

안타깝게도, 그럴 수는 없었습니다. 올해 제가 아팠던 유일한 시간은 경주 일주일 전이었습니다. 😭 삼일 만에 나아졌지만, 여전히 제 몸의 신호를 듣고 경주를 건너뛰기로 결정했습니다. 자신의 건강을 위험에 빠뜨릴 가치는 없으며, 그 후 며칠 후에 리액트 프라하 - 더 스파크로 여행을 가기로 되어 있었고 그걸 놓치고 싶지 않았습니다.

돌아보면, 통계는 제가 달리기에 많이 향상되었다고 말해 줍니다. 연초에 제 기본 주행은 일반적으로 6:30 페이스로 5km를 달렸습니다. 이제는 같은 심박수인 약 150bpm로 쉽게 5:40 페이스로 달립니다.

올해는 아직 끝나지 않았지만 제 시계는 제가 지금까지 142회의 달리기 활동으로 1천 킬로미터(1007km)를 넘게 달렸다고 알려줍니다. 내년에는 하프 마라톤 경주를 반드시 마치고, 매달 100킬로미터를 꾸준히 달리고 싶습니다.

2026 미리보기 👀

흥미롭게도, 저는 2026년 여행 일정이 이미 많이 정리되어 있습니다. 올해보다 도로에서 더 많은 시간을 보낼 예정입니다. 이 행사 중 하나에 참석하신다면, 저와 만나고 싶으시다면 알려주세요:

새해 복 많이 받으세요 🎉

그와 함께, 여러분 모두에게 행복한 새해를 기원합니다. 네, 물론 2026년에 블로그를 Astro로 다시 작성할 예정입니다. 지난 4년 동안 해왔던 것처럼요. 😉