lifecarelog
개발일지

DB 없이 URL에 상태를 담아 계산 결과를 공유하기

플랜씨(plan-c) 계산기 결과를 링크 하나로 공유하려고 서버 DB 대신 URL에 상태를 담기로 한 과정과 트레이드오프를 정리했어요.

4분 읽기

혼자 플랜씨(plan-c)를 만들면서 이런 질문을 받았어요. "이 대출이자 계산한 거, 친구한테 그대로 보여줄 수 있어?" 계산기는 로그인 없이 쓰는 도구라, 결과를 저장할 계정도 공간도 없었거든요.

처음 떠오른 방법은 서버 저장이었어요

결과를 서버에 저장하고 짧은 링크를 발급하는 방식이요. 흔한 패턴이죠. 그런데 직접 설계해 보니 딸려 오는 게 많았어요. 링크를 담을 테이블 1개, 만료 처리, 안 쓰는 링크를 지우는 정리 작업까지. 로그인 없이 쓰는 계산기 하나 때문에 관리할 게 늘어나는 셈이었어요.

그러다 멈춰서 다시 봤어요. 이 계산기가 기억해야 할 상태가 얼마나 될까요? 대출 계산은 원금·금리·기간, 많아야 입력 필드 3~4개예요. 상태가 이렇게 작으면 굳이 서버에 둘 이유가 없더라고요.

서버에 저장하고 링크 발급 vs 상태를 URL에 직접 담기

그래서 URL에 담기로 했어요

입력값을 JSON으로 묶고, 인코딩해서 쿼리스트링에 붙이는 방식이에요. 링크를 연 사람은 그 값으로 계산을 다시 돌리기만 하면 돼요. 서버는 아무것도 저장하지 않아요.

입력값JSON인코딩URL 쿼리스트링

값을 그대로 붙이면 특수문자에서 깨져서, encodeURIComponent로 감싸는 단계 하나는 꼭 넣었어요. 붙여 보니 필드 3~4개짜리 계산은 URL이 200자도 안 됐어요. 브라우저마다 다르지만 2,000자 안쪽이면 대체로 안전해서, 이 정도 상태엔 여유가 넉넉했어요.

정리하면 이 결정으로 DB 테이블 0개, 만료 관리 0개, 로그인 0회가 됐어요. 링크 하나가 곧 상태라서, 북마크해 두면 다음에도 같은 결과가 그대로 열려요.

안 맞는 경우도 있어요

이건 상태가 작을 때만 통하는 방법이에요. 담을 값이 수십 개로 늘거나 파일이 끼면 URL이 감당을 못 해요. 링크에 입력값이 그대로 보인다는 점도 기억해야 하고요. 민감한 값이라면 URL에 담지 않는 게 맞아요. 플랜씨 계산기는 입력이 몇 개뿐이고 저장할 만큼 예민한 값도 아니라, 이 방식이 잘 맞았어요.

작은 도구일수록 저장부터 늘리지 말고 "이 상태가 정말 서버에 있어야 하나"를 먼저 물어보면, 지울 코드가 줄어드는 것 같아요.

#url-상태관리#플랜씨#1인개발#빌드로그

라이프케어로그 서비스가 궁금하신가요?

AI 기반 건강·일정·재활 관리 앱을 직접 써보세요.

서비스 살펴보기

관련 글

댓글

아직 댓글이 없어요. 첫 댓글을 남겨주세요.