“API 문서가 있으니 연결만 하면 되는 것 아닌가요?”
API연동 개발 외주를 검토할 때 자주 나오는 질문입니다. 외부 서비스가 API를 제공하고 있고, 개발 문서와 테스트 계정까지 준비되어 있다면 처음에는 비교적 단순한 작업처럼 보일 수 있습니다.
예를 들어 쇼핑몰 주문을 ERP로 전달하거나, 내부 회원 정보를 외부 솔루션과 동기화하거나, 결제 결과를 주문 시스템에 반영하는 상황을 생각해볼 수 있습니다.
개발 범위를 다음과 같이 설명하기도 합니다.
- 상품 API 연동
- 회원 API 연동
- 주문 API 연동
- 결제 API 연동
- 배송 상태 API 연동
하지만 실제 견적을 검토하는 단계에서는 ‘API 몇 개를 연결하는가’만으로 범위를 판단하기 어렵습니다.
같은 주문 연동이라도 다음 조건에 따라 필요한 구조가 달라지기 때문입니다.
- 주문 정보를 어느 시스템에서 최초 생성하는가
- 어느 시스템의 데이터를 최종 기준으로 보는가
- 주문 생성과 변경을 양쪽 모두에서 허용하는가
- 실시간으로 전달해야 하는가
- 실패하면 자동으로 다시 시도하는가
- 운영자가 실패 건을 확인하고 직접 재처리해야 하는가
- 일부 상품만 성공했을 때 주문 전체를 어떻게 처리하는가
- 외부 시스템의 상태와 내부 상태가 다를 때 어느 쪽을 따르는가
API연동 개발의 핵심은 요청을 보내고 응답을 받는 코드 자체보다, 서로 다른 두 시스템 사이에서 데이터와 업무 상태를 일관되게 유지하는 데 있습니다.
따라서 외주 범위를 정할 때도 단순한 연결 기능이 아니라 기준 시스템, 동기화 방향, 식별자, 상태값, 실패 처리, 관리자 운영 기능을 함께 확인해야 합니다.
API연동 개발에서 먼저 정해야 하는 것은 기준 시스템입니다
API연동을 시작하기 전에 가장 먼저 답해야 할 질문은 다음과 같습니다.
같은 데이터가 여러 시스템에 존재할 때 어느 시스템의 값을 기준으로 판단할 것인가?
예를 들어 자사 쇼핑몰과 ERP에 동일한 상품이 등록되어 있다고 가정해보겠습니다.
쇼핑몰에는 상품명, 판매 가격, 판매 상태, 대표 이미지가 있고 ERP에는 품목 코드, 원가, 실제 재고, 거래처 정보가 있을 수 있습니다.
이때 단순히 “상품 정보를 연동한다”고 정의하면 다음과 같은 문제가 남습니다.
- 상품명은 쇼핑몰과 ERP 중 어디에서 수정하는가
- 판매 가격은 어느 시스템이 기준인가
- ERP에서 품목이 중지되면 쇼핑몰도 자동으로 판매 중지하는가
- 쇼핑몰에서 상품을 삭제하면 ERP 데이터도 삭제하는가
- 재고 수량이 서로 다르면 어느 값을 덮어쓰는가
두 시스템에서 모두 같은 데이터를 자유롭게 수정하도록 만들면 마지막에 저장된 값이 이전 변경 내용을 덮어쓸 수 있습니다. 변경 시점이 비슷하거나 네트워크 지연이 발생하면 어느 데이터가 최신인지 판단하기도 어려워집니다.
따라서 데이터 항목별로 기준 시스템을 구분하는 편이 좋습니다.
| 데이터 | 기준 시스템 예시 | 연동 방향 |<br>|---|---|---|<br>| 품목 코드 | ERP | ERP → 쇼핑몰 |<br>| 상품명 | 쇼핑몰 | 쇼핑몰 내부 관리 |<br>| 실제 재고 | ERP | ERP → 쇼핑몰 |<br>| 판매 가능 재고 | 쇼핑몰 | ERP 재고를 바탕으로 계산 |<br>| 주문 정보 | 쇼핑몰 | 쇼핑몰 → ERP |<br>| 출고 상태 | ERP | ERP → 쇼핑몰 |<br>| 결제 상태 | 결제·주문 시스템 | 결제 결과 → 주문 상태 반영 |
여기서 중요한 점은 시스템 전체를 하나의 기준으로 결정할 필요는 없다는 것입니다.
상품의 기준은 ERP가 될 수 있지만, 고객이 보는 상품 설명과 이미지는 쇼핑몰 관리자가 운영할 수 있습니다. 주문은 쇼핑몰에서 시작되지만, 출고와 송장 정보는 ERP나 물류 시스템에서 관리할 수도 있습니다.
따라서 API연동 외주 문의서에는 “ERP와 쇼핑몰을 연결하고 싶다”는 설명보다 다음과 같은 내용이 포함되어야 합니다.
- 각 시스템에서 생성되는 데이터
- 각 시스템에서 수정할 수 있는 데이터
- 다른 시스템으로 전달할 데이터
- 덮어쓰면 안 되는 데이터
- 삭제 대신 사용 중지로 관리할 데이터
- 값이 충돌했을 때 우선할 시스템
이 기준이 정리되어야 개발사도 데이터베이스 구조와 동기화 로직, 관리자 기능의 범위를 구체적으로 판단할 수 있습니다.
데이터 흐름은 단방향인지 양방향인지 구분해야 합니다
API연동에서 자주 사용하는 표현 중 하나가 ‘양방향 연동’입니다.
하지만 양방향이라는 말만으로는 실제 동작을 충분히 설명하기 어렵습니다.
예를 들어 회원 데이터의 양방향 연동은 다음과 같이 여러 의미로 해석될 수 있습니다.
- 홈페이지에서 가입한 회원을 CRM으로 전송한다.
- CRM에서 수정한 담당자 메모를 홈페이지 관리자에서 조회한다.
- 홈페이지와 CRM 양쪽에서 이름과 연락처를 수정할 수 있다.
- 한쪽에서 탈퇴하면 다른 쪽에서도 개인정보를 삭제하거나 비활성화한다.
- 수정 시간이 더 최근인 데이터를 자동으로 선택한다.
1번과 2번은 데이터별로 방향이 구분된 구조입니다. 반면 3번부터는 같은 필드를 양쪽에서 수정할 수 있어 충돌 기준과 이력 관리가 필요합니다.
따라서 연동 방향은 시스템 단위가 아니라 데이터와 업무 단위로 작성하는 것이 좋습니다.
예를 들면 다음과 같습니다.
``text<br>쇼핑몰에서 주문 생성<br>→ 내부 주문 번호 발급<br>→ ERP 주문 등록 API 호출<br>→ ERP 주문 번호 저장<br>→ ERP에서 출고 처리<br>→ 쇼핑몰이 출고 상태와 송장 번호 수신<br>→ 고객 주문 화면에 배송 정보 반영<br>``
이처럼 실제 업무 순서로 작성하면 어느 시점에 어떤 API가 호출되는지, 어떤 식별자를 저장해야 하는지, 실패할 경우 업무가 어디에서 중단되는지 확인할 수 있습니다.
반대로 “주문 양방향 연동”이라고만 작성하면 주문 취소, 부분 출고, 품목 변경, 반품과 환불 같은 예외 범위가 견적에서 빠질 가능성이 있습니다.
실시간·주기적 동기화·수동 재처리의 차이
모든 데이터를 실시간으로 동기화해야 하는 것은 아닙니다.
동기화 방식은 업무의 긴급성, 외부 API의 제약, 데이터 양, 호출 비용과 장애 영향을 함께 고려해 정할 수 있습니다.
1. 요청 즉시 동기화
사용자의 행동과 동시에 외부 API를 호출하는 방식입니다.
예를 들어 사용자가 결제하거나 주문을 확정했을 때 외부 시스템으로 데이터를 즉시 전달할 수 있습니다.
장점은 결과를 빠르게 확인할 수 있다는 것입니다. 하지만 외부 API가 느려지거나 중단되면 사용자 화면도 함께 느려질 수 있습니다.
따라서 요청 즉시 처리하는 연동에서는 다음을 정해야 합니다.
- 외부 API 응답을 기다릴 최대 시간
- 응답이 늦으면 사용자에게 보여줄 안내
- 내부 데이터는 먼저 저장할지 여부
- 외부 전송이 실패해도 주문 접수를 유지할지 여부
- 백그라운드에서 다시 전송할지 여부
2. 웹훅 또는 이벤트 수신
외부 시스템에서 상태가 변경될 때 우리 시스템으로 결과를 전달하는 방식입니다.
결제 승인, 배송 상태 변경, 구독 해지와 같은 이벤트에 활용할 수 있습니다.
웹훅을 사용할 때는 요청이 실제 연동 대상 시스템에서 전송되었는지 확인하는 절차가 필요합니다. 예를 들어 GitHub 공식 문서에서도 웹훅을 처리하기 전에 서명을 검증하고, 전달 식별자를 이용해 요청을 구분하도록 안내합니다. (docs.github.com)
웹훅 연동 범위에는 다음 항목이 포함될 수 있습니다.
- 웹훅 수신 주소
- 요청 서명 검증
- 이벤트 유형 구분
- 중복 이벤트 방지
- 처리 결과 저장
- 처리 실패 로그
- 누락된 이벤트 재수신 또는 조회
- 테스트 환경과 운영 환경의 주소 분리
웹훅은 한 번만 전달된다고 가정하면 안 됩니다. 같은 이벤트가 다시 전달되거나 전달 순서가 바뀔 가능성을 고려해 식별자와 상태 변경 조건을 설계해야 합니다.
3. 주기적 동기화
일정한 시간마다 외부 시스템의 데이터를 조회하거나 내부 데이터를 모아서 전송하는 방식입니다.
재고, 상품, 회원, 정산 데이터처럼 즉시 반영이 필수적이지 않은 경우에 사용할 수 있습니다.
주기적 동기화에서는 단순히 “10분마다 실행”을 정하는 것보다 다음 기준이 필요합니다.
- 전체 데이터를 매번 조회할지
- 마지막 동기화 이후 변경된 데이터만 가져올지
- 마지막 성공 시간을 기준으로 할지
- 데이터 생성·수정 시간을 어느 표준으로 비교할지
- 한 번에 처리할 데이터 수
- 처리 도중 실패하면 다음 실행에서 어디부터 시작할지
- 실행이 겹칠 경우 중복 처리를 어떻게 막을지
데이터가 많아지면 전체 목록을 매번 조회하는 방식은 API 호출량과 처리 시간을 증가시킬 수 있습니다. 외부 서비스가 호출 제한이나 할당량을 운영하는지도 확인해야 합니다. 실제로 Google Cloud API도 공유 자원의 공정한 사용과 남용 방지를 위해 호출 제한과 할당량을 적용한다고 안내합니다. (docs.cloud.google.com)
4. 운영자 수동 실행
운영자가 관리자 화면에서 특정 데이터의 동기화를 직접 실행하는 방식입니다.
자동 처리를 완전히 대체하기보다는 다음과 같은 예외 상황에서 사용할 수 있습니다.
- 특정 주문만 다시 ERP로 보내야 하는 경우
- 누락된 배송 상태를 다시 조회하는 경우
- 상품 하나의 재고를 즉시 갱신해야 하는 경우
- 외부 장애가 복구된 후 실패 건을 다시 처리하는 경우
- 고객 문의를 확인하면서 결제 상태를 재조회하는 경우
수동 실행 기능을 만들 때는 버튼 하나만 추가해서는 부족합니다.
실행 권한, 실행 전 확인 정보, 중복 처리 방지, 처리 결과 표시, 작업자 기록까지 함께 정해야 실제 운영에서 사용할 수 있습니다.
상품·회원·주문·결제의 식별자를 어떻게 연결할 것인가
두 시스템에 같은 데이터가 존재하더라도 각 시스템이 사용하는 번호는 다를 수 있습니다.
쇼핑몰의 주문 번호가 ORDER-1001이고 ERP의 전표 번호가 ERP-82591일 수 있습니다. 결제 시스템에서는 이 거래에 또 다른 결제 키가 발급될 수 있습니다.
이때 주문명이나 회원 이메일처럼 변경될 수 있는 값을 기준으로 데이터를 연결하면 문제가 생길 수 있습니다.
일반적으로 연동 데이터에는 다음 식별자가 필요할 수 있습니다.
- 내부 시스템의 고유 ID
- 외부 시스템의 고유 ID
- 업무에서 사용하는 주문 번호 또는 품목 코드
- API 요청을 구분하는 요청 ID
- 동일한 작업의 중복 처리를 막는 멱등성 키
- 웹훅 이벤트 ID
- 최초 전송 시간과 마지막 처리 시간
예를 들어 주문과 결제 데이터를 다음처럼 구분할 수 있습니다.
``text<br>내부 주문 ID<br>내부 주문 번호<br>외부 ERP 주문 ID<br>결제사 거래 ID<br>웹훅 이벤트 ID<br>최초 API 요청 ID<br>마지막 동기화 상태<br>``
이 식별자들이 연결되어 있어야 고객이 “결제는 됐는데 주문이 접수되지 않았다”고 문의했을 때 결제 기록, 내부 주문, ERP 전송 결과를 함께 추적할 수 있습니다.
같은 요청이 두 번 처리되지 않게 해야 합니다
네트워크가 중간에 끊기면 요청을 보낸 시스템은 상대방이 실제로 처리했는지 알기 어려울 수 있습니다.
응답을 받지 못했다고 동일한 주문 생성 요청을 다시 보내면 외부 시스템에 주문이 두 번 등록될 가능성이 있습니다.
이런 문제를 줄이기 위해 요청별 고유 키를 저장하고 같은 키가 다시 들어왔을 때 최초 처리 결과를 반환하거나 중복 작업을 막는 구조를 사용할 수 있습니다. Stripe 공식 API도 생성·수정 요청을 안전하게 재시도하기 위한 멱등성 키 사용 방식을 제공하고 있습니다. (docs.stripe.com)
다만 외부 API가 멱등성 기능을 제공한다고 해서 내부 처리가 자동으로 안전해지는 것은 아닙니다.
다음 항목을 별도로 확인해야 합니다.
- 외부 시스템이 멱등성 키를 지원하는가
- 키의 유효 기간은 얼마인가
- 내부 시스템에서도 같은 작업을 중복 저장하지 않는가
- 재처리 시 기존 키를 재사용할 것인가
- 부분 성공 후 다시 호출하면 어떤 결과가 발생하는가
- 주문 등록과 결제 처리처럼 여러 단계에 각각 키가 필요한가
상태값 매핑은 이름보다 의미를 기준으로 해야 합니다
API연동에서는 한 시스템의 상태값을 다른 시스템의 상태값으로 변환해야 하는 경우가 많습니다.
예를 들어 내부 주문 시스템에는 다음 상태가 있을 수 있습니다.
- 결제 대기
- 결제 완료
- 주문 확인
- 출고 준비
- 출고 완료
- 배송 중
- 배송 완료
- 취소 요청
- 취소 완료
ERP에는 다음 상태만 있을 수도 있습니다.
- 접수
- 처리 중
- 출고
- 완료
- 취소
단순히 비슷한 이름끼리 연결하면 실제 업무가 맞지 않을 수 있습니다.
내부 시스템의 ‘결제 완료’를 ERP의 ‘접수’로 전달할지, 운영자가 주문을 확인한 후에만 ERP에 접수할지에 따라 업무 흐름이 달라집니다.
상태값 매핑표에는 다음 항목을 함께 작성하는 것이 좋습니다.
| 내부 상태 | 외부 상태 | 전환 조건 | 연동 동작 | 되돌리기 가능 여부 |<br>|---|---|---|---|---|<br>| 결제 완료 | 접수 | 결제 검증 완료 | 주문 등록 | 조건부 가능 |<br>| 주문 확인 | 처리 중 | 운영자 확인 | 처리 상태 변경 | 가능 |<br>| 출고 완료 | 출고 | 송장 등록 | 배송 정보 반영 | 제한적 |<br>| 취소 요청 | 변경 없음 | 취소 가능 여부 확인 | 외부 취소 요청 | 결과 확인 필요 |<br>| 취소 완료 | 취소 | 외부 취소 성공 | 내부 상태 확정 | 일반적으로 제한 |
특히 취소, 환불, 반품, 부분 출고는 단순한 상태 변경으로 처리하기 어렵습니다.
이미 외부 시스템에서 출고가 시작된 주문을 내부 시스템에서 바로 취소 완료로 변경하면 양쪽 데이터가 달라질 수 있습니다. 따라서 ‘취소 요청’과 ‘취소 완료’를 구분하고 외부 결과를 확인한 뒤 최종 상태를 변경하는 구조가 필요할 수 있습니다.
정상 응답만으로 끝나지 않는 오류 설계
API 문서의 정상 요청 예제를 실행해 성공 응답을 받는 것은 연동 개발의 시작 단계에 가깝습니다.
실제 운영에서는 다음과 같은 상황이 발생할 수 있습니다.
- 외부 API 응답이 늦게 도착함
- 연결 시간이 초과됨
- 인증 토큰이 만료됨
- 호출 횟수 제한을 초과함
- 필수 데이터가 누락됨
- 외부 시스템에 동일한 데이터가 이미 존재함
- 상품 10개 중 8개만 성공함
- 주문 등록은 성공했지만 상태 저장에 실패함
- 성공 응답을 받기 전에 네트워크가 끊김
- 웹훅이 중복되거나 순서가 바뀌어 도착함
이러한 오류는 모두 같은 방식으로 재시도하면 안 됩니다.
다시 시도할 수 있는 오류
일시적인 네트워크 문제, 외부 서비스의 일시적 중단, 호출 제한 등은 일정 시간이 지난 뒤 재시도할 수 있습니다.
다만 짧은 시간에 계속 요청하면 외부 시스템의 부하를 더 높일 수 있으므로 재시도 간격을 점차 늘리는 방식 등을 검토할 수 있습니다. AWS의 재시도 지침도 일시적인 오류에 지수 백오프를 적용할 수 있지만, 재시도 대상 작업이 멱등성을 갖는지 먼저 확인해야 한다고 설명합니다. (docs.aws.amazon.com)
자동으로 다시 시도하면 안 되는 오류
다음과 같은 오류는 같은 데이터를 그대로 다시 보내도 계속 실패할 가능성이 높습니다.
- 필수 항목 누락
- 허용되지 않은 상태 변경
- 존재하지 않는 회원 또는 상품
- 잘못된 인증 정보
- 계약되지 않은 API 기능 호출
- 데이터 형식 오류
- 운영자가 확인해야 하는 중복 데이터
이 경우 무제한 자동 재시도보다 오류 원인을 운영자가 확인할 수 있도록 제공해야 합니다.
Google Cloud의 오류 처리 안내에서도 오류 코드에 따라 재시도, 재인증 등 대응을 구분하고 오류 메시지뿐 아니라 프로그램에서 처리할 수 있는 상세 정보를 활용하도록 안내합니다. (docs.cloud.google.com)
부분 성공을 어떻게 처리할 것인가
부분 성공은 API연동 견적에서 빠지기 쉬운 항목입니다.
예를 들어 주문 하나에 상품이 5개 포함되어 있는데 ERP가 4개 품목만 등록하고 1개 품목을 거절할 수 있습니다.
이때 선택할 수 있는 방식은 여러 가지입니다.
- 주문 전체를 실패로 보고 모두 취소한다.
- 성공한 품목은 유지하고 실패한 품목만 재처리한다.
- 내부에서는 처리 대기 상태로 두고 운영자가 판단한다.
- 대체 품목을 연결한 뒤 다시 전송한다.
- ERP에서 전체 취소 API를 호출한 후 처음부터 다시 등록한다.
어떤 방식이 적합한지는 외부 API의 기능과 실제 업무 규칙에 따라 달라집니다.
중요한 점은 ‘성공’과 ‘실패’ 두 상태만으로는 복합 연동 업무를 충분히 표현하기 어렵다는 것입니다.
다음과 같은 중간 상태가 필요할 수 있습니다.
- 전송 대기
- 전송 중
- 일부 성공
- 재시도 대기
- 운영자 확인 필요
- 재처리 중
- 처리 완료
- 재처리 불가
- 취소 처리 중
운영자가 확인하고 재처리할 수 있는 관리자 화면
API연동이 실패할 때마다 개발자가 서버 로그를 확인해야 한다면 운영팀이 업무를 처리하기 어렵습니다.
반대로 운영자가 모든 오류를 임의로 재처리할 수 있게 하면 중복 주문, 이중 결제, 상태 역전 같은 문제가 생길 수 있습니다.
따라서 관리자 화면에서는 확인할 수 있는 범위와 직접 처리할 수 있는 범위를 구분해야 합니다.
운영자가 확인해야 하는 정보
연동 이력 목록에는 다음 정보가 필요할 수 있습니다.
- 연동 대상 시스템
- 데이터 유형
- 내부 데이터 ID
- 외부 데이터 ID
- 요청 ID
- 연동 시작·완료 시간
- 현재 처리 상태
- 성공·실패 여부
- 오류 코드와 원인
- 자동 재시도 횟수
- 마지막 재시도 시간
- 수동 처리 여부
- 처리한 관리자
- 처리 전후 결과
운영자가 기술적인 오류 전문을 모두 읽을 필요는 없습니다.
예를 들어 다음처럼 운영자가 이해할 수 있는 설명으로 변환할 수 있습니다.
``text<br>오류 코드: PRODUCTNOTFOUND<br>운영 안내: ERP에서 해당 품목 코드를 찾을 수 없습니다.<br>확인 항목: 상품의 ERP 품목 코드가 등록되어 있는지 확인해주세요.<br>가능한 처리: 품목 코드 수정 후 다시 전송<br>``
재처리 버튼을 만들기 전에 정할 사항
관리자 재처리 기능은 다음 질문에 답할 수 있어야 합니다.
- 어떤 상태에서 재처리가 가능한가
- 동일한 요청을 다시 보내는가
- 최신 데이터로 새로운 요청을 생성하는가
- 이미 성공한 단계는 다시 실행하지 않는가
- 처리 중인 건을 다시 실행할 수 있는가
- 한 건씩만 처리하는가
- 여러 건을 일괄 처리할 수 있는가
- 재처리 권한은 누구에게 있는가
- 실행 전에 확인 창이 필요한가
- 재처리 결과를 즉시 보여주는가
- 실패하면 다시 재처리할 수 있는가
- 모든 작업 이력을 남기는가
특히 결제, 환불, 포인트, 정산처럼 금액이 바뀌는 작업은 일반 데이터 조회와 같은 방식으로 재처리해서는 안 됩니다.
예를 들어 결제 상태 조회는 여러 번 실행해도 실제 승인 작업이 반복되지 않을 수 있지만, 결제 승인이나 환불 요청은 잘못 반복하면 금전 처리에 영향을 줄 수 있습니다.
따라서 관리자 기능을 다음처럼 구분할 수 있습니다.
- 상태 다시 조회: 외부 시스템의 현재 결과만 확인
- 데이터 다시 전송: 기존 업무 데이터를 외부로 재전송
- 처리 이어서 실행: 성공한 단계 이후부터 계속 진행
- 전체 재처리: 처음부터 모든 단계를 다시 실행
- 수동 완료 처리: 자동 연동 없이 운영 판단으로 완료
- 처리 제외: 오류 건을 더 이상 자동 재시도하지 않음
수동 완료 처리나 처리 제외 기능에는 사유 입력과 권한 제한이 필요할 수 있습니다.
로그는 많이 저장하는 것보다 추적 가능하게 저장해야 합니다
API연동 로그를 만든다고 해서 요청과 응답 전체를 무조건 저장하는 것이 적절한 것은 아닙니다.
요청 본문에 이름, 연락처, 주소, 결제 관련 정보가 포함되어 있다면 관리자 화면이나 일반 로그에 그대로 노출되지 않도록 범위를 검토해야 합니다.
개인정보보호위원회의 안전성 확보조치 안내서도 개인정보 처리 환경에서 접근 통제, 접속기록과 보호조치 등을 구체적으로 다루고 있습니다. 개인정보가 포함되는 API연동이라면 어떤 정보를 저장하고 누가 열람할 수 있는지 프로젝트별로 확인해야 합니다. (pipc.go.kr)
실무에서 필요한 로그는 다음 세 가지 관점으로 나눌 수 있습니다.
1. 업무 추적 로그
어떤 주문, 회원, 상품이 어느 시스템으로 전달되었는지 확인하는 기록입니다.
2. 기술 오류 로그
응답 코드, 오류 유형, 처리 시간, 재시도 횟수처럼 장애 원인을 분석하기 위한 기록입니다.
3. 관리자 작업 이력
누가 언제 어떤 건을 조회·수정·재처리·완료했는지 확인하는 기록입니다.
모든 요청 본문을 그대로 남기기보다 추적에 필요한 식별자와 상태를 구조화해 저장하고, 민감한 값은 마스킹하거나 별도 권한으로 제한하는 방식이 필요할 수 있습니다.
API 인증·호출 제한·개인정보에서 확인할 항목
외부 API를 사용할 때는 기능 문서뿐 아니라 인증과 운영 조건도 확인해야 합니다.
인증 방식
API마다 인증 방식이 다를 수 있습니다.
- 고정 API 키
- 계정별 액세스 토큰
- OAuth 기반 인증
- 요청 서명
- IP 허용 목록
- 인증서 기반 연결
OAuth를 사용하는 경우에도 단순히 토큰을 발급받는 기능만 보는 것이 아니라 토큰 만료, 갱신, 폐기와 저장 위치를 함께 확인해야 합니다. OAuth 2.0 보안 모범 사례를 정리한 RFC 9700은 리디렉션 검증, PKCE, TLS 사용 등 구현 과정에서 고려할 보안 기준을 제시합니다. (datatracker.ietf.org)
인증 정보는 소스 코드에 직접 작성하지 않고 환경별로 분리해 관리해야 합니다. 테스트 환경과 운영 환경의 키를 구분하고, 담당자가 변경되거나 계약이 종료됐을 때 키를 교체할 수 있어야 합니다.
호출 제한
외부 API가 분당·일별 호출 횟수를 제한하는지 확인해야 합니다.
특히 다음 기능은 호출량이 빠르게 늘어날 수 있습니다.
- 전체 상품 동기화
- 대량 재고 조회
- 주문 상태 반복 확인
- 실패 건 일괄 재처리
- 여러 쇼핑몰이나 거래처의 데이터 수집
- 관리자 화면에서 목록을 열 때마다 외부 API 호출
호출 제한이 있다면 데이터를 내부에 저장할지, 마지막 조회 결과를 일정 시간 재사용할지, 작업 대기열로 나누어 처리할지 검토해야 합니다.
접근 권한
API 키 하나로 모든 기능을 사용할 수 있는 구조인지, 읽기·등록·수정·삭제 권한을 분리할 수 있는지도 확인해야 합니다.
OWASP API Security Top 10은 객체별 권한, 인증, 기능별 권한, 자원 사용 제한과 외부 API의 안전하지 않은 사용 등을 주요 위험으로 분류합니다. 연동 계정에는 업무에 필요한 최소 범위의 권한을 부여하고, 사용자나 관리자 권한과 분리하는 것이 좋습니다. (api-security.owasp.org)
테스트 환경과 운영 배포 범위도 견적에 포함해야 합니다
외부 API 문서가 있다고 해서 항상 별도의 테스트 환경이 제공되는 것은 아닙니다.
다음 항목을 외주 문의 전에 확인하면 테스트 범위를 정하기 쉽습니다.
- 테스트 계정이 제공되는가
- 실제 데이터와 구분되는 샌드박스가 있는가
- 테스트용 결제·주문·배송 상태를 만들 수 있는가
- 오류 응답을 의도적으로 발생시킬 수 있는가
- 웹훅 재전송 기능이 있는가
- 테스트와 운영의 API 주소가 다른가
- 운영 전환 시 계정이나 키만 바꾸면 되는가
- 운영 데이터로만 확인할 수 있는 기능이 있는가
API연동 테스트는 정상 처리 한 번을 확인하는 것으로 끝내기 어렵습니다.
최소한 다음 상황을 확인할 수 있어야 합니다.
- 정상 등록
- 같은 데이터의 중복 등록
- 필수값 누락
- 인증 만료
- 호출 제한 초과
- 응답 지연
- 외부 장애
- 일부 데이터만 성공
- 상태값 불일치
- 웹훅 중복 수신
- 웹훅 순서 변경
- 자동 재시도
- 관리자 수동 재처리
운영 배포 과정에서는 기존 동기화 작업을 언제 중단하고 새 연동을 시작할지도 정해야 합니다.
전환 시점이 불분명하면 같은 주문을 기존 프로그램과 신규 시스템이 동시에 전송할 수 있기 때문입니다.
외주 견적서는 ‘API 연동 1건’보다 업무 단위로 비교해야 합니다
견적서에 ‘API 연동 5건’이라고 작성되어 있어도 업체마다 해석이 다를 수 있습니다.
한 업체는 엔드포인트 호출 코드만 포함할 수 있고, 다른 업체는 데이터 저장, 매핑, 오류 처리, 로그와 관리자 기능까지 포함할 수 있습니다.
따라서 총금액보다 다음 항목이 각각 포함되어 있는지 확인하는 편이 좋습니다.
분석과 설계
- 기존 시스템 구조 확인
- API 문서 검토
- 데이터 기준 시스템 정의
- 동기화 방향 정의
- 필드 매핑표
- 상태값 매핑표
- 예외 상황 정의
연동 기능
- 인증 처리
- 데이터 조회·등록·수정
- 내부 데이터 저장
- 외부 식별자 저장
- 실시간·배치·웹훅 처리
- 호출 제한 대응
오류 처리
- 중복 방지
- 타임아웃 처리
- 자동 재시도
- 최대 재시도 횟수
- 부분 성공 처리
- 실패 건 분리
- 알림 조건
관리자 운영
- 연동 이력 조회
- 오류 필터
- 상세 오류 확인
- 상태 다시 조회
- 건별 재처리
- 일괄 재처리
- 처리 제외
- 관리자 작업 이력
보안과 배포
- 인증 정보 관리
- 개인정보 마스킹
- 테스트·운영 환경 분리
- 배포 설정
- 모니터링
- 운영 인수인계
유지보수
- 외부 API 버전 변경 대응
- 인증 정책 변경 대응
- 필드 추가·삭제 시 수정 범위
- 장애 확인 주체
- 외부 서비스 장애와 내부 오류의 구분
- 하자 수정과 추가 개발의 기준
API연동 개발 비용과 기간은 연동 개수만으로 단정하기 어렵습니다.
같은 API 하나라도 단순 조회 기능과 주문·결제·정산처럼 상태 변경이 이어지는 기능은 필요한 설계가 다릅니다. 관리자 재처리와 대량 동기화, 개인정보, 기존 시스템 수정 범위가 추가되면 작업 범위도 달라질 수 있습니다.
원소프트가 API연동 범위를 검토하는 관점
원소프트는 API를 연결할 때 사용자 화면의 성공 여부만 보지 않고, 연동 이후 운영자가 데이터를 어떻게 확인하고 처리할지도 함께 검토합니다.
부동산 경매 업무 통합 플랫폼인 바토너 프로젝트에서는 입찰 신청부터 계약 문서, 결제, 포인트, 정산, 알림과 문의까지 이어지는 백엔드/API를 개발했습니다.
이 프로젝트에서도 단순히 외부 기능을 호출하는 데 그치지 않고 다음 범위를 함께 구성했습니다.
- 결제 및 포인트 처리 내역 관리
- OCR을 활용한 문서 정보 인식 연동
- 푸시 알림 기능 연동
- 입찰·계약·결제·정산 상태 관리
- 회원·입찰·결제·정산 데이터를 확인하는 관리자 기능
- 사용자 유형별 인증과 권한 구분
- Swagger 기반 API 문서화
결제, OCR, 푸시처럼 성격이 다른 외부 기능은 성공과 실패의 의미도 서로 다릅니다.
OCR 결과는 운영자가 원문과 비교해 수정할 수 있어야 할 수 있고, 결제 결과는 거래와 주문 상태를 함께 추적해야 하며, 푸시 알림은 발송 요청과 실제 업무 상태를 구분해야 합니다.
따라서 API연동 범위를 정할 때는 기술적으로 호출 가능한지만 보는 것이 아니라, 외부 결과가 서비스의 어느 데이터와 상태에 연결되는지를 확인해야 합니다.
API연동 외주 문의 전에 준비하면 좋은 체크리스트
아래 내용을 완벽하게 정리하지 못하더라도 현재 알고 있는 범위까지 전달하면 상담과 견적 비교에 도움이 됩니다.
- [ ] 연동할 시스템과 서비스가 정해져 있다.
- [ ] API 문서와 테스트 계정의 제공 여부를 확인했다.
- [ ] API 계약과 계정 개설 주체를 정했다.
- [ ] 시스템별 기준 데이터를 구분했다.
- [ ] 데이터별 연동 방향을 정리했다.
- [ ] 실시간·웹훅·주기 동기화 여부를 구분했다.
- [ ] 내부 ID와 외부 ID의 연결 방법을 검토했다.
- [ ] 상태값 매핑이 필요한 업무를 확인했다.
- [ ] 중복 요청을 막을 기준을 확인했다.
- [ ] 자동 재시도 대상과 횟수를 정리했다.
- [ ] 운영자 확인이 필요한 오류를 구분했다.
- [ ] 관리자 재처리 기능이 필요한지 확인했다.
- [ ] 일괄 재처리가 필요한 데이터 양을 파악했다.
- [ ] 개인정보와 민감 정보의 포함 여부를 확인했다.
- [ ] 테스트 환경과 운영 환경을 구분했다.
- [ ] 배포 후 모니터링과 유지보수 범위를 확인했다.
API연동 개발은 두 시스템 사이에 통신 경로를 하나 만드는 작업으로만 보기 어렵습니다.
실제 운영 가능한 연동을 만들려면 어떤 시스템이 데이터를 책임지는지, 언제 어떤 방향으로 전달할지, 실패한 업무를 누가 어떻게 복구할지까지 정해야 합니다.
특히 운영자 재처리 기능은 연동이 실패한 뒤 추가하는 부가 기능이 아닐 수 있습니다. 외부 시스템을 사용하는 이상 지연과 장애, 데이터 불일치는 발생할 수 있으므로 초기 범위에서 확인하는 편이 좋습니다.
원소프트는 경기도 화성시 동탄순환대로 823, 영천동 에이팩시티에 위치한 웹·앱·AI·관리자 시스템 개발사입니다.
API연동 외주를 검토하고 있지만 범위를 정리하기 어렵다면 현재 사용 중인 시스템, API 문서, 실제 업무 흐름을 바탕으로 기준 시스템과 동기화 방식, 오류 처리와 관리자 운영 범위를 함께 정리해볼 수 있습니다.
제목 후보
- API연동 개발 외주, 데이터 동기화와 운영자 재처리 범위를 정하는 방법
- API연동 외주 견적, 연결 기능보다 동기화·오류·재처리 범위를 확인하세요
- API연동 개발 견적서에서 기준 시스템과 실패 재처리를 확인하는 방법
- API연동 외주 문의 전, 데이터 기준·상태값·관리자 기능을 정리하세요
- API연동 개발, 실시간 동기화와 관리자 재처리까지 범위에 넣어야 합니다
추천 제목
API연동 개발 외주, 데이터 동기화와 운영자 재처리 범위를 정하는 방법
메인 키워드
API연동
서브 키워드
- API연동 개발 외주
- API연동 개발 견적
- 데이터 동기화
- 외부 API 연동
- API 관리자 재처리
추천 해시태그
#API연동 <br>#API연동개발 <br>#API연동외주 <br>#데이터동기화 <br>#외부API연동 <br>#ERP연동 <br>#관리자페이지개발 <br>#시스템개발외주 <br>#동탄웹개발 <br>#화성웹개발
썸네일 문구
- API 연결보다 중요한 운영 범위
- 실패한 연동은 누가 다시 처리할까?
- 데이터 동기화·오류·재처리 기준
글 요약
API연동 개발 외주는 단순히 요청을 보내고 성공 응답을 받는 범위만으로 판단하기 어렵습니다. 기준 시스템과 동기화 방향, 식별자·상태값 매핑, 중복·지연·부분 성공에 대한 오류 처리와 운영자용 관리자 재처리 기능까지 함께 정의해야 운영 가능한 연동 범위와 견적을 비교할 수 있습니다.
CTA 후보
- 사용 중인 시스템과 API 문서는 준비되어 있지만 연동 범위를 구체화하기 어렵다면, 실제 데이터 흐름과 운영자의 오류 처리 방식부터 함께 정리해볼 수 있습니다.
- API연동 견적을 비교하고 계신다면 연동 개수뿐 아니라 기준 시스템, 동기화 주기, 실패 재처리와 관리자 기능이 어디까지 포함되어 있는지 검토해보시기 바랍니다. 필요한 경우 현재 업무를 기준으로 개발 범위를 정리해드릴 수 있습니다.
관련 포트폴리오
바토너(Batoner) - 부동산 경매 업무 통합 플랫폼
참고한 부분:
- 결제 및 포인트 외부 연동
- OCR 기반 문서 정보 인식 연동
- 푸시 알림 연동
- 입찰·계약·결제·정산의 상태 기반 업무 흐름
- 회원·입찰·결제·정산·문의 데이터를 관리하는 관리자 기능
- 사용자 유형별 인증과 권한 처리
- Swagger 기반 API 문서화
다음에 작성하면 좋은 연관 글
- ERP API연동, 상품·재고·주문 데이터의 기준 시스템을 정하는 방법
- API 관리자 페이지 개발, 연동 실패 로그와 재처리 권한을 설계하는 기준
- 결제 API연동 외주, 승인·취소·환불과 주문 상태를 분리하는 방법
