API가 뭔지 몰라도 문자 보내는 앱을 만들었다 — 코드 1시간, 심사 1주의 현실
API가 뭔지 몰라도 문자 보내는 앱을 만들었다 — 코드 1시간, 심사 1주의 현실
"API 연동" — 이 단어만 보면 닫고 싶었다
Echo Mail이라는 메일 알림 서비스를 만들면서 문자 발송 기능이 필요해졌어요. 발주 메일이 오면 담당자한테 자동으로 문자를 보내야 하니까요. 근데 검색하면 나오는 건 전부 "API 연동"이라는 말뿐이었습니다.
API가 뭔지부터 막혔어요. 솔직히 무서웠습니다.
결론부터 말하면 — API는 식당 메뉴판 같은 겁니다. SOLAPI라는 문자 발송 서비스가 메뉴판을 내밀고, "이 양식대로 주문하면 문자 보내줄게"라고 하는 거예요. 내가 직접 전화기를 조작하는 게 아니라, 주문서를 넘기면 SOLAPI가 대신 보내주는 구조.
그래서 AI한테 "이 메뉴판 보고 주문서 작성해줘"라고 시켰습니다.
처음 시도 — "문자 보내는 코드 만들어줘"의 결과
첫 프롬프트는 이랬어요:
문자 보내는 코드 만들어줘. SOLAPI 사용해서.
AI가 만들어준 코드는... 작동은 하겠지만 위험한 코드였습니다. 뭐가 위험했냐면:
- API 키(비밀번호 같은 것)가 코드에 그대로 적혀있었고
- 에러가 나면 그냥 멈춰버리는 구조였고
- 개발 중에 진짜 문자가 나갈 수 있는 구조였어요
"이렇게 시켜야 쓸 수 있는 코드가 나온다" — 프롬프트를 바꿨더니
여기서 프롬프트 작성법을 배웠어요. AI한테는 내 상황을 전부 알려줘야 합니다:
당신은 Node.js 백엔드 전문가입니다.
Next.js 14 프로젝트에서 SOLAPI SDK를 사용해 SMS/알림톡을 발송하는
모듈을 만들어주세요.
[현재 상태]
- Next.js 14 + TypeScript 프로젝트
- SOLAPI SDK(solapi v5.5.2) 설치 완료
- 환경변수: SOLAPI_API_KEY, SOLAPI_API_SECRET, SOLAPI_SENDER_PHONE
[요구사항]
- SMS 단건 발송 함수
- 에러 핸들링: 잔액 부족, 발신번호 미등록, 수신거부 등 케이스별 처리
- 개발모드(테스트) / 운영모드 분기 ← 이게 핵심!
[제약조건]
- API 키는 반드시 환경변수에서 읽을 것
- 개발 중엔 실제 문자 안 나가게 할 것
차이가 뭔지 보이시나요?
| 항목 | 첫 번째 프롬프트 | 바꾼 프롬프트 |
|---|---|---|
| 역할 부여 | 없음 | "Node.js 백엔드 전문가" |
| 현재 상태 | 없음 | 기술 스택, 설치된 SDK 버전 |
| 에러 처리 | 없음 | 잔액 부족, 수신거부 등 케이스별 |
| 테스트 안전장치 | 없음 | 개발/운영 모드 분기 |
테스트모드 — 개발 중 실수로 문자가 나가는 걸 막는 장치
바꾼 프롬프트로 받은 코드에는 이런 안전장치가 있었습니다:
환경변수 ENABLE_REAL_NOTIFICATIONS 값이 'true'일 때만
실제 문자가 발송됩니다.
개발 중에는 이 값을 설정하지 않으면,
문자가 실제로 나가지 않고 "가짜 발송 완료" 로그만 찍힙니다.
이걸 넣어달라고 한 이유가 있어요. 처음에 테스트하면서 진짜 문자가 나갈 뻔한 적이 있었거든요. 테스트할 때마다 실제 문자가 나가면 안 되잖아요.
AI한테 "더 간단하게 해달라"고 피드백한 사이클
처음에 AI가 문자 발송 인증을 직접 만들어줬어요. HMAC-SHA256이라는 암호화 서명을 매번 생성하는 방식이었는데, 코드가 이해가 안 됐습니다. 이건 레스토랑에서 주문할 때마다 신분증 위조 방지 기술을 직접 만드는 것과 비슷한 상황이에요.
그래서 이렇게 피드백했습니다:
지금 API 호출할 때마다 HMAC 서명을 직접 만들고 있는데,
SOLAPI 공식 SDK(solapi v5.5.2)를 쓰면 인증이 자동 처리됩니다.
공식 SDK로 전환해주세요.
기존 함수 이름(sendSMS, getBalance)은 유지하면서
내부 구현만 SDK로 바꿔주세요.
결과:
[전환 전] 서명 생성 코드 20줄 + 매 API 호출마다 수동 인증
↓
[전환 후] SDK 한 줄로 인증 자동 처리
이게 피드백 사이클의 핵심이에요. AI가 처음부터 완벽한 코드를 주는 게 아닙니다. "이거 너무 복잡한데, 공식 도구 있지 않아?"라고 물어보면 더 나은 방법을 알려줍니다.
자주 하는 실수 4가지 — 저도 전부 겪었습니다
SOLAPI 연동하면서 실제로 한 실수들이에요:
실수 1: API Secret을 복사할 때 앞뒤 공백 포함 SOLAPI 콘솔에서 Secret을 복사하면 가끔 공백이 붙어요. 눈에 안 보이니까 "인증 실패"만 뜨고 원인을 못 찾습니다. 30분 날렸어요. 실수 2: 발신번호 등록에 서류가 필요한 걸 모름 "발신번호 등록하면 바로 쓸 수 있겠지" — 아닙니다. 사업자등록증이나 통신서비스 이용증명원을 제출해야 하고, 승인에 1~2 영업일 걸립니다. 실수 3: SMS/LMS 구분을 모름 한글 45자(90바이트)가 넘으면 SMS가 아니라 LMS로 바뀝니다. 가격이 3배. AI한테 "자동 판별해줘"라고 안 했으면 모르고 비싼 LMS로 보내고 있었을 거예요. 실수 4: 카카오 알림톡 심사가 이렇게 오래 걸리는 줄 모름 이게 제일 충격이었어요. 아래 표를 보시면:| 단계 | 실제 소요 시간 |
|---|---|
| 카카오 비즈니스 채널 만들기 | 10분 |
| SOLAPI에 채널 연동 신청 | 10분 |
| 카카오 심사 승인 대기 | 약 1주 |
| 알림톡 템플릿 등록 | 30분 |
| 템플릿 심사 대기 | 1~3 영업일 |
| 코드 구현 (AI한테 시킴) | 1시간 |
비용 최적화 — 카카오톡 우선, SMS 자동 전환
문자 서비스는 공짜가 아니에요. 메시지 한 건마다 비용이 나갑니다. 종류별로 가격이 다른데:
| 메시지 종류 | 비용 수준 |
|---|---|
| SMS (한글 45자 이하) | 기본 |
| LMS (한글 45자 초과) | SMS의 약 3배 |
| 카카오 알림톡 | SMS보다 저렴 |
| 카카오 친구톡 | SMS와 비슷 |
AI한테 이 비용 구조를 알려주고 "알림톡 우선 발송 + SMS 자동 전환" 로직을 시켰더니, 비용 최적화까지 알아서 해줬어요.
돌아보면 — API는 생각보다 무서운 게 아니었다
"API 연동"이라는 말에 겁먹을 필요 없었어요. 실제로 해보니:
- API는 그냥 메뉴판이었고
- AI한테 "이 메뉴판 보고 주문서 작성해줘"라고 시키면 됐고
- 진짜 시간이 걸리는 건 코드가 아니라 심사와 서류였습니다
다음에는 이 문자 발송에서 겪은 중복 발송 버그 이야기를 쓸 예정이에요. 같은 문자가 3번씩 나가서 15번 고친 이야기인데... 그건 다음 글에서.