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'일 때만
실제 문자가 발송됩니다.
개발 중에는 이 값을 설정하지 않으면,
문자가 실제로 나가지 않고 "가짜 발송 완료" 로그만 찍힙니다.
이걸 넣어달라고 한 이유가 있어요. 처음에 테스트하면서 진짜 문자가 나갈 뻔한 적이 있었거든요. 테스트 100번이면 문자 100건 비용이 나가는 거니까요.
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번 고친 이야기인데... 그건 다음 글에서.