외부 API 연동 개발 비용은 무엇으로 결정될까?
웹서비스를 개발하다 보면 다른 서비스의 기능이나 데이터를 연결해야 하는 경우가 많습니다.
웹서비스를 개발하다 보면 다른 서비스의 기능이나 데이터를 연결해야 하는 경우가 많습니다.
- 토스페이먼츠 결제
- 카카오·네이버·구글 로그인
- 지도와 주소 검색
- 이메일과 알림톡
- 물류와 배송 조회
- ERP·CRM
- 공공 데이터
- AI 모델
- 회계와 세금계산서
- 외부 회원 시스템
이때 흔히 다음과 같이 생각할 수 있습니다.
API 문서가 있으니 연결만 하면 되는 것 아닌가요?
간단한 API는 짧은 개발로 연동할 수 있습니다.
하지만 실제 서비스에서는 요청을 한 번 보내고 결과를 화면에 보여주는 것 외에도 인증, 데이터 저장, 오류 처리, 호출 제한, 관리자 기능과 동기화가 필요할 수 있습니다.
따라서 API 연동 비용은 API 개수보다 다음 질문에 의해 결정됩니다.
외부 서비스와 어떤 데이터를 어떤 방향으로 주고받으며, 실패했을 때 우리 서비스는 어떻게 처리해야 하는가?
API 연동의 기본 구조
간단한 API 연동은 다음과 같이 작동할 수 있습니다.
사용자가 주소 입력
→ 우리 서버가 주소 API 호출
→ 검색 결과 수신
→ 사용자에게 목록 표시
복잡한 연동은 다음과 같을 수 있습니다.
외부 ERP에서 주문 수집
→ 기존 주문과 중복 검사
→ 고객·상품 데이터 연결
→ 우리 데이터베이스 저장
→ 상태 변경
→ 처리 실패 기록
→ 관리자 확인
→ 수정 결과를 ERP로 다시 전송
두 프로젝트 모두 API 연동이라고 부르지만 개발 범위는 전혀 다릅니다.
API 연동 비용을 결정하는 핵심 요소
1. 연동 방향
단방향 조회
외부 데이터를 읽기만 합니다.
예시:
- 날씨 조회
- 지도 검색
- 상품 정보 조회
- 배송 상태 조회
단방향 전송
우리 서비스의 데이터를 외부로 보냅니다.
예시:
- CRM에 고객 등록
- 이메일 발송
- 결제 요청
- 알림톡 발송
양방향 동기화
양쪽 시스템에서 데이터가 생성되고 수정됩니다.
예시:
- ERP 주문과 웹서비스 주문 동기화
- CRM 고객 정보 연동
- 재고 시스템 연결
- 외부 캘린더 일정 동기화
양방향 연동은 데이터 충돌과 수정 순서를 정해야 하므로 복잡도가 높아질 수 있습니다.
2. 인증 방식
API를 사용하려면 호출 주체를 인증해야 합니다.
API 키
정해진 키를 요청에 포함합니다.
사용자 토큰
로그인한 사용자마다 다른 토큰을 사용합니다.
OAuth
사용자가 외부 서비스에서 권한을 승인하고 우리 서비스와 계정을 연결합니다.
인증서·전자서명
금융이나 기업 시스템에서 별도 인증서와 서명 방식이 필요할 수 있습니다.
IP 허용
등록된 서버 주소에서만 API를 호출할 수 있습니다.
인증 방식이 복잡할수록 계정 연결, 만료와 갱신 처리가 추가됩니다.
3. 사용자별 외부 계정 연결
운영 회사의 API 계정 하나를 사용하는 것과 사용자마다 자기 계정을 연결하는 것은 다릅니다.
예시:
사용자 A → A의 Google Calendar
사용자 B → B의 Google Calendar
사용자 C → C의 Google Calendar
필요 기능:
- 외부 로그인
- 권한 동의
- 토큰 저장
- 토큰 갱신
- 연결 해제
- 권한 부족
- 여러 계정
- 관리자 확인
4. API 문서의 품질
잘 정리된 문서에는 다음이 포함됩니다.
- 인증 방법
- 요청 주소
- 입력값
- 응답값
- 오류 코드
- 예제
- 테스트 환경
- 호출 제한
- 변경 이력
문서가 부족하거나 실제 응답이 문서와 다르면 분석과 업체 간 협의 시간이 늘어날 수 있습니다.
5. 테스트 환경
실제 결제나 주문 데이터로 바로 개발하기는 어렵습니다.
API에서 다음을 제공하는지 확인해야 합니다.
- 테스트 계정
- 샌드박스
- 테스트 상품
- 테스트 결제
- 가상 응답
- 운영 전환 절차
테스트 환경이 없다면 안전하게 검수하기 어려울 수 있습니다.
6. 호출할 API 수
하나의 서비스라도 여러 API를 사용해야 할 수 있습니다.
예를 들어 배송 연동에는 다음 기능이 포함될 수 있습니다.
- 배송 등록
- 송장 발급
- 배송 조회
- 배송 취소
- 상태 웹훅
- 반품 접수
API 호출 개수보다 실제 업무 흐름이 몇 단계인지가 중요합니다.
7. 데이터 변환
외부 서비스와 우리 서비스가 같은 항목명을 사용하지 않을 수 있습니다.
외부 데이터
{
"cust_no": "C100",
"ord_st": "20",
"amt": 15000
}
우리 서비스
{
"customerId": "C100",
"orderStatus": "PAID",
"totalAmount": 15000
}
다음 작업이 필요할 수 있습니다.
- 필드명 변환
- 상태값 매핑
- 날짜 변환
- 통화와 단위
- 빈 값 처리
- 코드값 변환
- 여러 데이터를 하나로 결합
8. 데이터 저장
API 결과를 화면에 한 번 표시할지, 데이터베이스에 저장할지 정해야 합니다.
저장하지 않는 경우
요청할 때마다 외부 API를 호출합니다.
저장하는 경우
- 검색 속도 향상
- 변경 이력
- 통계
- 외부 장애 대응
- 호출량 감소
저장한다면 최신 상태를 언제 다시 받아올지 정해야 합니다.
9. 실시간과 정기 동기화
사용자가 요청할 때
버튼을 누르면 API를 호출합니다.
정기 동기화
- 매시간
- 매일
- 매주
웹훅
외부 서비스의 변경을 즉시 전달받습니다.
실시간 조회
화면을 열 때마다 최신 데이터를 요청합니다.
실시간성이 높아질수록 호출량과 실패 대응이 중요해집니다.
10. 웹훅
웹훅은 외부 서비스가 이벤트를 우리 서버에 알려주는 기능입니다.
예시:
결제 완료
→ 결제사가 우리 서버에 결과 전송
→ 주문 상태 업데이트
웹훅에서 처리해야 할 항목:
- 요청 검증
- 중복 수신
- 순서가 바뀐 이벤트
- 서버 응답 실패
- 재전송
- 로그
- 잘못된 데이터
외부 서비스는 같은 웹훅을 여러 번 보낼 수 있으므로 중복 처리가 중요합니다.
11. 호출량 제한
API에는 사용량 제한이 있을 수 있습니다.
- 초당
- 분당
- 일일
- 월간
- 사용자별
- 앱별
호출 제한을 넘으면 다음 처리가 필요할 수 있습니다.
- 요청 대기
- 작업 큐
- 캐시
- 재시도
- 사용자 안내
- 관리자 알림
12. API 이용료
외부 서비스 비용이 발생할 수 있습니다.
- 호출당 요금
- 월 구독료
- 사용자 수
- 데이터 양
- AI 토큰
- 지도 사용량
- 메시지 건수
- 저장 공간
개발비와 월 운영비를 구분해야 합니다.
13. 오류 처리
API는 항상 성공하지 않습니다.
- 잘못된 입력
- 인증 실패
- 권한 부족
- 토큰 만료
- 호출 제한
- 외부 서버 오류
- 응답 지연
- 네트워크 오류
- 데이터 없음
사용자에게 어떤 메시지를 보여주고, 관리자는 어떤 정보를 확인할 수 있어야 하는지 정해야 합니다.
14. 재시도
일시적인 오류는 다시 시도할 수 있습니다.
정할 내용:
- 재시도할 오류
- 최대 횟수
- 간격
- 중복 처리 방지
- 최종 실패
- 관리자 수동 재실행
결제와 주문처럼 같은 요청이 두 번 처리되면 문제가 되는 기능은 특히 주의해야 합니다.
15. 일부 성공과 일부 실패
100개의 데이터를 외부로 전송했는데 90개는 성공하고 10개는 실패할 수 있습니다.
다음 기능이 필요할 수 있습니다.
- 성공·실패 구분
- 실패 사유
- 실패 데이터 수정
- 실패 건만 재전송
- 결과 파일
- 관리자 확인
16. 데이터 충돌
양방향 동기화에서는 양쪽 시스템에서 같은 데이터를 수정할 수 있습니다.
예시:
오전 10시:
웹서비스에서 고객 주소 변경
오전 10시 1분:
ERP에서 기존 주소로 수정
어느 데이터를 최종값으로 사용할지 규칙이 필요합니다.
- 가장 최근 수정
- 특정 시스템 우선
- 관리자 승인
- 충돌 목록
- 특정 필드별 원본 지정
17. 삭제 처리
한 시스템에서 데이터가 삭제되었을 때 다른 시스템에서도 삭제할지 정해야 합니다.
- 완전 삭제
- 비활성화
- 동기화 제외
- 보관
- 관리자 확인
실수로 대량 삭제가 전파되지 않도록 주의해야 합니다.
18. 관리자 페이지
API 연동을 운영하려면 다음을 확인할 화면이 필요할 수 있습니다.
- 연결 상태
- 마지막 동기화
- 성공·실패 건수
- 오류 내용
- 계정 연결
- 토큰 만료
- 수동 실행
- 재시도
- 데이터 비교
- 설정
사용자가 직접 외부 계정을 연결한다면 사용자 설정 화면도 필요할 수 있습니다.
19. 로그
문제 해결을 위해 다음 정보를 기록할 수 있습니다.
- 호출 시각
- API 종류
- 대상 데이터
- 결과
- 오류 코드
- 처리 시간
- 재시도
- 관련 사용자
비밀번호와 API 비밀키, 과도한 개인정보가 로그에 남지 않도록 해야 합니다.
20. 외부 서비스 변경
API는 다음 내용을 변경할 수 있습니다.
- 버전
- 인증
- 요청 주소
- 응답 구조
- 필수값
- 호출 한도
- 이용료
- 종료 일정
공식 변경 안내를 확인하고 새로운 버전으로 이전해야 할 수 있습니다.
21. 운영 계정과 개발 계정
다음 환경을 분리할 수 있습니다.
- 개발
- 테스트
- 운영
API 키와 콜백 URL도 환경마다 다를 수 있습니다.
운영 키를 개발자의 개인 PC에 무분별하게 공유하지 않도록 관리해야 합니다.
22. API 계정 소유권
외부 서비스 계정은 가능하면 의뢰사가 소유하는 것이 좋습니다.
- 개발자 포털
- 앱 소유자
- 결제 수단
- 사용량
- 비즈니스 인증
- 복구 이메일
- 2단계 인증
개발 업체에는 연동에 필요한 권한을 제공합니다.
API 연동 규모 예시
단순 조회형
사용자가 우편번호 검색
→ 주소 API 호출
→ 결과 표시
필요 범위:
- 입력 UI
- API 호출
- 결과 선택
- 기본 오류 처리
중간 규모
매일 외부 주문 API 호출
→ 신규 주문 저장
→ 중복 검사
→ 관리자 목록
→ 실패 알림
필요 범위:
- 인증
- 스케줄러
- 데이터베이스
- 중복 처리
- 관리자
- 로그
복잡한 연동
ERP와 주문·상품·재고·배송 양방향 동기화
필요 범위:
- 여러 API
- 데이터 매핑
- 웹훅
- 충돌
- 삭제
- 재시도
- 관리자
- 모니터링
- 운영 협의
API 연동 비용을 결정하는 요소
| 요소 | 범위 영향 |
|---|---|
| API 개수 | 호출·응답 처리 증가 |
| 사용자별 인증 | 토큰·연결 관리 |
| 양방향 연동 | 충돌·삭제·동기화 |
| 웹훅 | 검증·중복 처리 |
| 정기 동기화 | 서버·스케줄러 |
| 데이터 변환 | 매핑 규칙 |
| 대량 처리 | 큐·부분 실패 |
| 관리자 | 상태·재시도 |
| 짧은 실시간성 | 호출량·성능 |
| 외부 문서 부족 | 분석·협의 증가 |
| 테스트 환경 없음 | 검수 난도 증가 |
| 높은 중요도 | 로그·복구 강화 |
개발 업체에 전달할 요구사항
연동 서비스:
API 문서:
연동 목적:
읽을 데이터:
전송할 데이터:
단방향·양방향:
사용자별 계정:
인증 방식:
호출 시점:
실시간·정기:
예상 호출량:
웹훅:
데이터 저장:
중복 기준:
수정·삭제 동기화:
오류 처리:
재시도:
관리자 기능:
월 API 비용:
테스트 계정:
운영 일정:
API 연동 검수 체크리스트
[ ] 인증 성공
[ ] 인증 실패
[ ] 토큰 만료
[ ] 정상 조회
[ ] 데이터 없음
[ ] 잘못된 입력
[ ] 외부 서버 오류
[ ] 호출 제한
[ ] 데이터 변환
[ ] 중복 데이터
[ ] 웹훅 중복
[ ] 일부 성공·실패
[ ] 재시도
[ ] 관리자 오류 확인
[ ] 수동 재실행
[ ] 테스트·운영 환경
[ ] API 키 보안
[ ] 운영 계정 인계
견적서에서 확인할 항목
- API 호출 화면만 포함되는가?
- 데이터베이스 저장이 포함되는가?
- 정기 동기화와 웹훅이 포함되는가?
- 오류와 재시도가 포함되는가?
- 관리자 확인 화면이 포함되는가?
- 양방향 수정과 삭제가 포함되는가?
- API 이용료는 별도인가?
- 외부 업체와 기술 협의도 포함되는가?
- API 버전 변경 대응은 유지보수인가?
- 계정과 키를 의뢰사가 소유하는가?
마무리
외부 API 연동 개발 비용은 API 주소 하나를 호출하는 작업만으로 결정되지 않습니다.
다음 요소를 함께 확인해야 합니다.
- 어떤 데이터를 주고받는가?
- 단방향인가, 양방향인가?
- 사용자마다 외부 계정을 연결하는가?
- 데이터를 저장하고 동기화하는가?
- 실패와 중복을 어떻게 처리하는가?
- 운영자가 문제를 확인할 수 있는가?
개발 업체에 API 문서만 전달하기보다 실제 업무 흐름과 데이터 처리 기준을 함께 설명해야 정확한 범위와 견적을 받을 수 있습니다.
