25.04
저는 백엔드가 친숙하지 않은 개발자입니다. 사이드 프로젝트를 하다가 백엔드 관련 기능이 필요하면 직접 구현하기보다는 이미 있는 솔루션을 가져다 쓰는 식이었습니다. 예를 들어, 이전 블로그를 개발할 때 댓글 기능은 직접 DB등을 세팅하지 않고 giscus로 처리했습니다.
하지만 블로그를 사용하면서 아쉬운 순간이 자주 찾아왔습니다. 만들고 싶은 것을 블로그 백엔드가 없어 만들지 못한 경우가 많았거든요.
그러다 최근 등장한 Cursor를 써보며 풀스택 블로그의 가능성을 보게 됐습니다. 이제 이것저것 물어볼 백엔드 개발자가 에디터 안에 있으니까요.
그래서 이번에 도전해봤습니다. 제게 익숙한 프론트엔드 코드를 짤 때와 익숙하지 않은 백엔드 코드를 짤 때 Cursor를 활용하는 방식이 꽤 달랐다는 점이 인상 깊었습니다.
프론트엔드에서는 주로 귀찮은 작업을 Cursor에게 맡겼고 덕분에 저는 디테일에 집중할 수 있었습니다. 예를 들어 네트워크 에러같은 일상적인 에러 처리는 Cursor가 적당히 구현해줘서 저는 에러 처리를 위한 코드보단 유저에게 어떤 메시지를 보여줄지등을 더 고민할 수 있었습니다.
또한 새로운 기술을 도입하는 심리적인 허들을 크게 낮출 수 있었습니다. 모달같은 기본적인 컴포넌트도 접근성이나 focus처리등을 고려하면 제대로 만드는 것이 어려움을 알고 있나요? 그래서 radix-ui를 써보고 싶었는데 공부하기는 귀찮아서 Cursor에게 부탁해보았습니다. 댓글 삭제 확인 모달을 잘 만들어주더군요.
주의할 점은 ‘댓글 기능 구현해줘’처럼 추상적이고 큰 단위로 요구하면 Cursor가 종종 의도하지 않은 코드를 쏟아낼 때가 많았습니다. 그래서 컴포넌트 단위로 요구사항을 잘게 나눠서 주는 방식으로 작업해야 했습니다. 이렇게 작업 단위가 작을수록 코드 리뷰가 수월했고 토큰을 아낄 수도 있었습니다.
혼자하는 사이드프로젝트에서 PR 리뷰하는 것 같아서 재미있었네요.
백엔드 작업은 제게 낯선 부분이 많았기 때문에 Cursor에게 기능을 설명하고 그에 맞는 쿼리나 서버 액션 코드를 짜달라고 요청하는 방식으로 사용했습니다. 예를 들어 “유저별로 댓글을 관리하고싶은데, 이걸 담을 수 있는 테이블을 만들어줘”라고 설명하면 적절한 테이블 스키마와 쿼리를 생성해줬습니다.
종종 테이블을 만들 때 제 블로그에서는 불필요한 필드를 넣는 경우가 있어서 수정 요청을 하기도 했습니다. 진지한(?) 서비스라면 넣을 법한 필드들이었지만 저는 최대한 단순하게 만들고 싶어서 쳐냈습니다.
제가 이해하지 못하는 코드들도 추가되었는데, 이런 것들이 쌓이다보면 손도 못대는 프로젝트가 되어버리니 AI가 짠 코드를 잘 격리하는 것이 중요하겠다 생각했습니다.
Supabase를 썼기 때문에 RLS(Row Level Security) 같은 보안 설정도 함께 해줘야 했는데 이 부분도 Cursor가 자동으로 짜줘서 굉장히 편리했습니다. Supabase의 단점으로 RLS 설정이 번거롭다는게 있다고하지만 저는 Cursor 덕분에 큰 스트레스 없이 넘어갈 수 있었습니다.
전반적으로 저는 프론트엔드 작업에서는 코드의 디테일을 챙기는 역할을, 백엔드 작업에서는 요구사항을 Cursor가 제대로 이해했는지 확인하는 역할을 맡았습니다.
좋은 결과물을 만들려면 “무엇이 가능한지를 아는 것”이 정말 중요하다는 걸 느꼈습니다. 백엔드는 제가 잘 모르다 보니 Cursor가 이상하거나 비효율적인 코드를 짜줘도 그걸 눈치채지 못할 때가 있었습니다.
예를 들어 이모지 반응 남기는 기능을 처음에는
방식으로 구현했지만 db function을 활용하면 db에서 이 작업을 해주니 요청 1번에 가능했습니다. 나중에서야 깨닫고 최적화를 해줬습니다. 아무래도 Cursor는 서비스의 요구사항을 저만큼 모르니 일반적으로 잘 먹히는 코드를 짜야해 발생하는 문제라고 생각합니다.
최적화는 요구사항에 대한 이해와 기술적인 이해가 동시에 있어야 가능하다고도 느꼈습니다. 이번에는 제가 요구사항을 알고 Cursor가 기술을 알았던 셈이지만 Cursor를 더 잘 활용하려면 백엔드 공부가 필요하겠다 느꼈습니다.
마지막으로 Supabase 설정이나 GitHub Auth처럼 환경 세팅 관련 트러블슈팅은 Cursor만으로 해결하기 어려웠습니다. 개발 환경 전반을 이해하는 AI가 얼른 상용화되면 좋겠습니다.