Stripe 결제 연동: 돈을 받는 코드는 왜 이렇게 무서운가
SaaS에 결제를 붙이려고 Stripe을 연동했다. 결제 코드는 다른 코드와 차원이 다른 긴장감이 있었다. Checkout Session부터 Webhook까지 실전 경험.
기술과 사람, 그 수많은 생각의 '사이'를 사유합니다.
단절된 경계의 빈 공간을 코드로 채워 잇는 개발자입니다.
SaaS에 결제를 붙이려고 Stripe을 연동했다. 결제 코드는 다른 코드와 차원이 다른 긴장감이 있었다. Checkout Session부터 Webhook까지 실전 경험.
실시간 알림을 구현하려고 WebSocket을 공부했다. HTTP 폴링부터 Supabase Realtime까지, 실시간 통신의 선택지와 실전 패턴을 정리했다.
매일 수동으로 데이터를 정리하다가 지쳤다. 서버리스 환경에서 크론잡과 백그라운드 작업을 구성하면서 배운 것들.
서비스를 운영하면서 유저가 어디서 이탈하는지, 어떤 기능을 쓰는지 전혀 몰랐다. PostHog를 붙이고 데이터 기반으로 결정하기 시작한 경험.
결제 플로우의 상태를 if문과 boolean 플래그로 관리하다 버그 지옥에 빠졌다. XState의 상태 머신으로 불가능한 상태를 원천 차단한 경험.
회원가입 확인 이메일을 보내야 하는데 HTML 이메일이 지옥이었다. React Email로 컴포넌트처럼 이메일을 만들고 Resend로 보내는 방법을 정리했다.
3개월 전에 만든 내 API를 보고 이게 뭔지 몰랐다. 일관된 REST API를 설계하기 위한 네이밍, 버전 관리, 페이지네이션 패턴을 정리했다.
REST API를 만들 때마다 프론트엔드와 백엔드의 타입이 어긋났다. tRPC를 도입하고 API 명세서 없이 타입이 자동으로 맞춰지는 경험을 했다.
내 서비스를 키보드만으로 써보려다 탭이 엉뚱한 곳으로 날아갔다. 웹 접근성을 실제로 개선하면서 배운 것들을 정리했다.
한국어로만 서비스하던 블로그에 영어를 추가하면서 next-intl을 도입했다. App Router 환경에서 다국어를 구현하며 겪은 시행착오와 패턴.