Python Asyncio로 Didit API 처리량 극대화하기 (KO)
Python의 Asyncio를 활용하여 Didit의 신원 확인 API를 사용하는 애플리케이션의 처리량과 효율성을 혁신적으로 높이는 방법을 알아보세요. 비동기 프로그래밍으로 API 호출 성능을 최적화하고, 높은 트래픽에서도 안정적인 서비스를 제공할 수 있습니다.

API 소비 최적화: Python Asyncio는 논블로킹 I/O 작업을 가능하게 하여, Didit와 같은 신원 확인 서비스에 수많은 API 호출을 하는 애플리케이션의 효율성을 대폭 향상시킵니다.
속도 제한 마스터: Asyncio를 통해 정교한 속도 제한 전략을 구현하여 Didit의 API 제한을 준수하고, 429 오류를 방지하며, 고처리량 시나리오에서도 지속적인 서비스 가용성을 보장합니다.
확장 가능한 솔루션 구축: Asyncio의 동시성 모델을 활용하여 높은 인프라 비용 없이 초당 수천 건의 신원 확인 요청을 처리할 수 있는 견고하고 확장 가능한 시스템을 설계하세요.
Didit의 API 우선 장점: Didit의 개발자 중심 접근 방식은 깔끔한 API와 즉각적인 샌드박스를 제공하여 비동기 프레임워크와의 통합에 이상적입니다. 이를 통해 ID 확인부터 생체 인식에 이르는 원활하고 고성능의 신원 확인 워크플로우를 구현할 수 있습니다.
속도의 필요성: API 소비에 Asyncio가 필요한 이유
오늘날의 빠르게 변화하는 디지털 세상에서 애플리케이션은 기능을 수행하기 위해 수많은 외부 API 호출을 수행해야 하는 경우가 많습니다. 이러한 호출이 블로킹 방식, 즉 애플리케이션이 다음 응답으로 진행하기 전에 각 응답을 기다리는 방식이라면 성능 병목 현상이 빠르게 발생합니다. 이는 특히 신원 확인 서비스의 경우 더욱 그렇습니다. 단일 사용자 온보딩 흐름에 ID 확인, 수동 및 능동 생체 인식 검사, 1:1 얼굴 매칭, AML 심사 등 여러 API 상호 작용이 포함될 수 있기 때문입니다. 사용자 수가 많은 기업의 경우 이러한 순차적 작업은 상당한 지연과 좋지 않은 사용자 경험으로 이어질 수 있습니다.
Python의 asyncio 라이브러리는 async/await 구문을 사용하여 동시성 코드를 작성하기 위한 강력한 프레임워크를 제공합니다. CPU 바운드 작업에 대한 GIL(Global Interpreter Lock)과 같은 복잡성을 유발할 수 있는 전통적인 멀티 스레딩과 달리, asyncio는 I/O 바운드 작업을 위해 설계되었습니다. API 호출은 본질적으로 I/O 바운드(네트워크 응답 대기)이므로, asyncio는 외부 API를 효율적으로 소비하는 애플리케이션의 능력을 향상시키는 데 이상적인 후보입니다. API 응답을 기다리는 동안 프로그램이 다른 작업을 수행할 수 있도록 함으로써, asyncio는 애플리케이션 아키텍처를 분산 시스템으로 완전히 재작성할 필요 없이 처리량을 크게 늘릴 수 있습니다.
Didit의 API 환경 및 속도 제한 이해하기
AI 기반 신원 플랫폼인 Didit은 ID 확인(OCR, MRZ, 바코드), 수동 및 능동 생체 인식, 1:1 얼굴 매칭, AML 심사 및 모니터링 등 포괄적인 신원 확인 API 제품군을 제공합니다. 당사의 API는 고성능과 신뢰성을 위해 설계되었지만, 모든 강력한 API와 마찬가지로 모든 클라이언트 간의 안정성과 공정한 사용을 보장하기 위해 속도 제한을 사용합니다. 이러한 제한을 이해하는 것은 모든 고처리량 소비자에게 매우 중요합니다.
Didit은 전역 및 엔드포인트별 속도 제한을 모두 적용합니다. 예를 들어, 전역 제한은 일반적으로 GET 및 쓰기/삭제 엔드포인트 모두에 대해 애플리케이션당 분당 300회 요청입니다. 고영향 작업에는 더 엄격한 제한이 적용됩니다. 예를 들어, POST /v2/session/(확인 워크플로우 생성용)에는 600 RPM, GET /v2/session/<id>/decision/(세션 결정 검색용)에는 100 RPM이 적용됩니다. 이러한 제한을 초과하면 API는 429 Too Many Requests 상태 코드와 함께 백오프 전략을 안내하는 X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After(에포크 초)와 같은 유용한 헤더를 반환합니다.
asyncio를 구현하면 이러한 속도 제한을 훨씬 더 효과적으로 관리할 수 있습니다. 단일 블로킹 스레드가 제한에 도달하는 대신, 비동기 애플리케이션은 요청을 지능적으로 대기열에 넣고, 지수 백오프를 구현하며, 전체 애플리케이션 흐름을 차단하지 않고 실패한 호출을 재시도할 수 있습니다. 이는 더 원활한 API 소비와 더 적은 중단을 초래하여, 피크 부하 시에도 신원 확인 프로세스가 중단 없이 유지되도록 합니다.
동시 Didit API 호출을 위한 Asyncio 구현하기
Didit의 API와 asyncio를 통합하려면 aiohttp와 같은 비동기 HTTP 클라이언트를 사용해야 합니다. 다음은 비동기 API 호출을 구성하는 방법에 대한 개념적인 개요입니다.
import asyncio
import aiohttp
import time
API_KEY = "YOUR_DIDIT_API_KEY"
BASE_URL = "https://verification.didit.me/v3/"
async def call_didit_api(session, endpoint, payload=None, method='POST'):
headers = {
'accept': 'application/json',
'x-api-key': API_KEY
}
if method == 'POST':
headers['content-type'] = 'application/json'
url = f"{BASE_URL}{endpoint}"
async with session.request(method, url, json=payload, headers=headers) as response:
if response.status == 429:
retry_after = int(response.headers.get('Retry-After', '5'))
print(f"Rate limit hit. Retrying after {retry_after} seconds...")
await asyncio.sleep(retry_after) # Implement simple backoff
return await call_didit_api(session, endpoint, payload, method) # Retry
response.raise_for_status()
return await response.json()
async def create_verification_session(session, workflow_id, user_id):
endpoint = "session/"
payload = {
"workflow_id": workflow_id,
"vendor_data": user_id,
"callback": "https://your-app.com/didit-callback"
}
return await call_didit_api(session, endpoint, payload, method='POST')
async def get_session_decision(session, session_id):
endpoint = f"session/{session_id}/decision/"
return await call_didit_api(session, endpoint, method='GET')
async def main():
async with aiohttp.ClientSession() as session:
tasks = []
# Example: Create 10 verification sessions concurrently
for i in range(10):
tasks.append(create_verification_session(session, "YOUR_WORKFLOW_ID", f"user_{i}"))
results = await asyncio.gather(*tasks)
for res in results:
print(f"Created session: {res.get('session_id')}")
# Example: Retrieve decisions for some sessions concurrently
decision_tasks = []
for res in results[:5]: # Take first 5 for decision retrieval
session_id = res.get('session_id')
if session_id:
decision_tasks.append(get_session_decision(session, session_id))
decision_results = await asyncio.gather(*decision_tasks)
for decision in decision_results:
print(f"Session decision: {decision}")
if __name__ == "__main__":
asyncio.run(main())
이 예제는 여러 확인 세션을 생성하고 동시에 결정을 검색하는 방법을 보여줍니다. call_didit_api 함수는 429 Too Many Requests에 대한 기본적인 재시도 메커니즘을 포함하며, Retry-After 헤더를 사용하여 지수 백오프를 구현합니다. 프로덕션 시스템의 경우 더 정교한 백오프 및 회로 차단기 패턴이 권장되지만, 이는 핵심 원리를 보여줍니다.
asyncio.gather를 사용하면 여러 API 요청을 동시에 시작할 수 있어, 애플리케이션이 다른 작업을 처리하거나 응답을 동시적으로 기다릴 수 있게 되어 순차적인 블로킹 호출에 비해 상당한 성능 향상을 가져옵니다.
대량 신원 확인을 위한 전략
Asyncio를 사용하여 Didit API로 높은 처리량을 달성하려면 단순히 요청을 동시에 수행하는 것 이상이 필요합니다. 다음 전략들을 고려하십시오:
- 스마트 배치 처리: Didit의 핵심 확인은 종종 사용자 주도이지만, AML 모니터링 또는 특정 데이터 조회와 같은 작업의 경우, 적용 가능한 경우 일괄 처리를 허용하는 워크플로우를 설계하여 총 API 호출 수를 줄일 수 있습니다.
- 적응형 속도 제한: 단순한 지수 백오프를 넘어,
X-RateLimit-Remaining을 모니터링하고asyncio작업의 동시성 수준을 동적으로 조정하는 적응형 속도 제한기를 구현하십시오. 남은 호출이 적으면 속도를 늦추고, 많으면 속도를 높이십시오. - 웹훅 기반 업데이트: 세션 결과(예: ID 확인 또는 생체 인식 검사 후)의 경우, 과도한 폴링 대신 Didit의 웹훅을 사용하십시오. 이는 100 RPM의 더 엄격한 속도 제한이 있는
/v2/session/<id>/decision/에 대한 GET 요청 수를 줄입니다. Didit의 모듈식 아키텍처는 다양한 상태 변경에 대한 웹훅 알림을 설정할 수 있음을 의미하며, 지속적인 쿼리 없이 시스템에 실시간 업데이트를 푸시합니다. - 오류 처리 및 관찰 가능성: 네트워크 문제, API 오류(429s 이상), 시간 초과에 대한 강력한 오류 처리를 구현하십시오. 재시도가 트리거되거나 속도 제한에 지속적으로 도달할 때 로그를 기록하거나 경고하십시오. 이는 API 소비 전략을 최적화하는 데 중요한 통찰력을 제공합니다.
- 리소스 관리:
aiohttp.ClientSession인스턴스를 신중하게 관리하십시오. 연결 오버헤드로 인해 모든 요청에 대해 새 세션을 생성하는 것은 비효율적입니다. 여러 요청에 대해 단일 세션을 재사용하는 것이 일반적으로 가장 좋은 방법입니다.
Didit이 돕는 방법
Didit은 개발자와 고성능 애플리케이션을 위해 처음부터 구축되었으며, Python Asyncio 구현에 이상적인 파트너입니다. 당사의 모듈식 아키텍처를 통해 ID 확인, 수동 및 능동 생체 인식, 1:1 얼굴 매칭, AML 심사와 같은 신원 확인 기능을 필요에 따라 플러그 앤 플레이 방식으로 사용할 수 있으며, 각 기능은 깔끔하고 잘 문서화된 API를 통해 액세스할 수 있습니다. 이러한 모듈성은 특정 요구 사항에 맞춰 복잡한 확인 워크플로우를 구성하고, 비동기 기술을 사용하여 소비를 최적화할 수 있음을 의미합니다.
당사는 신원 확인을 접근 가능하게 만드는 것을 목표로 하며, 이를 위해 무료 핵심 KYC를 제공합니다. 이를 통해 선불 비용 없이 비동기 통합을 실험하고 구축할 수 있습니다. 당사의 AI 기반 접근 방식은 확인 서비스가 빠르고 정확하도록 보장하여 Asyncio의 속도 이점을 완벽하게 보완합니다. 설치비가 없고 성공적인 확인 건당 지불 모델을 통해 Didit은 고처리량 신원 확인을 구현하려는 기업을 위한 비용 효율적이고 확장 가능한 솔루션을 제공합니다. 당사의 즉각적인 샌드박스 환경과 포괄적인 API 문서는 개발자가 새 시스템을 구축하든 기존 시스템을 개선하든 Didit 서비스의 사용을 신속하게 통합하고 최적화할 수 있도록 지원합니다.
시작할 준비가 되셨나요?
Didit의 실제 작동을 보고 싶으신가요? 지금 무료 데모를 받아보세요.
Didit의 무료 티어로 신원 확인을 무료로 시작하세요.