왜 정말로 이게 필요한가
라이선스 확인 없이 데스크톱 앱을 판매한다는 것은, 설치 파일 사본을 얻은 누구나 두 번 다시 돈을 내지 않고도 영원히 사용할 수 있다는 뜻이다. 라이선스 키 확인이 절대 뚫리지 않아야 할 필요는 없다 — 그저 가벼운 공유가 가장 저항이 적은 길이 되지 않을 만큼만 문턱을 높이면서, 실제로 돈을 낸 고객에게는 매끄러운 활성화 경험을 제공하면 된다. 그것이 대부분의 인디 개발자가 실제로 넘어야 할 기준이다: 군사급 DRM이 아니라, 키가 뭔가를 의미하는 진짜 시스템 — 기기에 묶이고, 확인 가능하고, 취소 가능한 — 이지, 아무도 검증하지 않는 문자열이 아니어야 한다.
직접 만드는 것이 왜 진짜 프로젝트가 되어버리는가
유혹은 빠른 확인 로직을 대충 만드는 것이다: 하드코딩된 유효 키 목록, 또는 단순한 해시 함수를 만들고 출시하면 끝. 하지만 그건 첫 진짜 판매가 일어나기 전까지만 유효하다. 진짜 라이선싱에는 어떤 키가 존재하고 어떤 기기에서 활성화됐는지 추적하는 데이터베이스, 키가 그때그때 실시간으로 확인되고 단순히 공식으로 오프라인 검증되지 않도록 앱이 어디서든 호출할 수 있는 API, 누군가 지불 거부를 하거나 사기를 칠 때 키를 취소하는 방법, 그리고 구매 전에 체험해볼 수 있는 체험판 지원이 필요하다. 이 중 어느 것도 앱 내부에만 존재할 수는 없다 — 작정한 사용자는 오프라인 확인 로직을 그냥 패치로 제거해버릴 수 있다. 이렇게 나열해보면, "그냥 라이선스 확인만 추가하면 된다"는 것이 실제로는 당신이 이제 영원히 만들고, 호스팅하고, 유지보수해야 할 작은 백엔드 서비스가 되어버린다 — 그것도 당신의 진짜 제품이 아닌 기능을 위해서.
대안: 백엔드 프로젝트 대신 작은 호스팅 API
이것이 바로 SublimeKeys가 하는 일이다 — 라이선스 백엔드 그 자체이므로, 직접 만들 필요가 없다. 앱에 필요한 호출(activate, verify, deactivate, 그리고 체험판용 2개)이 포함된 REST API와, 제품을 만들고 판매할 때마다 수동 또는 자동으로 키를 발급할 수 있는 대시보드를 얻게 된다. 무료 플랜(제품 1개, 키 25개)이 있어서 무언가에 커밋하기 전에 전체 흐름을 테스트할 수 있고, 당신이 운영해야 할 인프라는 전혀 없다 — 라이선스 서버, 데이터베이스, 가동 시간, 이 모든 것이 이제 당신이 아니라 다른 누군가의 문제다.
연결하는 방법 — 4단계
실제로 얻게 되는 것
한 시간도 안 걸려서 특정 기기에 묶인 키(누구나 공유할 수 있는 단순 문자열이 아닌), 필요할 때 즉시 접근을 취소하는 방법 — 지불 거부, 사기, 환불 — 재설치로 초기화할 수 없는 선택적 7일 체험판, 원한다면 판매할 때마다 자동으로 발송되는 이메일 키까지 갖추게 된다. 이 중 어느 것도 데이터베이스 스키마를 작성하거나, 무언가를 호스팅하거나, 가동 시간을 신경 쓸 필요가 없었다 — 그 부분은 이미 처리되어 있다.
실제로 누구를 위한 것인가
Electron 앱
한 번 판매하고 자체 라이선스 서버 없이 보호하고 싶은 모든 Electron 데스크톱 앱.
Python 데스크톱 도구
PyInstaller로 패키징된 유틸리티, 이제 판매하는 내부 도구, GUI가 있는 CLI 제품.
.NET / WinForms 앱
현대적인 라이선싱 옵션 이전의 클래식 Windows 소프트웨어 — 재작성 없이 진짜 활성화 기능을 추가한다.
인디 도구 & 플러그인
자체 라이선스 백엔드를 만드는 것이 시간 낭비인 소규모 유료 유틸리티, 플러그인, 애드온.
Gumroad나 Keygen에서 이전
기존 고객을 일괄로 가져오고 설치 기반을 잃지 않으면서 새 키를 발급한다.
About
Patrick Chen — Sublimearts.io의 인디 개발자. ReelNox Studio를 위해 정확히 이 라이선스 확인 코드를 작성한 후, 데스크톱 소프트웨어를 판매하는 다른 모든 인디 개발자들이 같은 문제를 처음부터 해결하고 있다는 걸 깨닫고 SublimeKeys를 만들었다.
Did you find this helpful?