Python 기초: aiohttp 사용 시 주의사항
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 중급 이상의 Python 개발자
- 비동기 프로그래밍 및 API 통신에 관심 있는 개발자
- 실무에서 발생할 수 있는 시스템 설계 문제를 사전에 예방하고자 하는 개발자
핵심 요약
aiohttp
사용 시 비동기 요청의 비동기 처리와 오류 처리가 필수적- 3rd-party API 의존도가 높은 서비스는 레이트 제한(rate limiting) 및 재시도 로직(retry logic) 구현 권장
- 시스템 실패 시 캐스케이딩 실패(cascading failure)를 방지하기 위해 단일 API 의존도 최소화 및 모니터링 도구 도입 필요
섹션별 세부 요약
1. 사고 개요
- 금융 플랫폼의 실시간 사기 탐지 시스템에 사용된 리스크 평가 서비스에서 캐스케이딩 실패 발생
- 3rd-party API 의존도가 높은 서비스에서 네트워크 불안정이 아닌 API 서버 과부하로 인한 사고 발생
- 사고 원인: 동시 요청 수 증가로 인해 API 서버의 레이트 제한을 무시한 비동기 요청 발생
2. aiohttp의 역할
aiohttp
라이브러리의 비동기 요청 처리 기능을 사용하여 수천 개의 API 요청을 동시에 처리async/await
구문으로 비동기 I/O 처리 가능- 사고 원인: 비동기 요청의 오류 처리 로직 누락으로 인해 API 서버 과부하 발생**
3. 사고 대응 및 개선 방안
- 사후 조치: API 서버의 레이트 제한 정책 확인 및 재시도 로직(exponential backoff) 추가**
- 시스템 설계 개선: 3rd-party API 의존도 분산화 및 대체 API 도입**
- 모니터링 도구: Prometheus 및 Grafana 사용하여 API 요청 패턴 모니터링**
결론
aiohttp
사용 시 비동기 요청의 레이트 제한 및 오류 처리 로직을 반드시 구현**- 3rd-party API 의존도가 높은 서비스는 대체 API와 모니터링 도구를 병행하여 시스템 안정성 확보
async/await
구문과aiohttp
의ClientSession
클래스를 활용하여 비동기 통신 효율성 극대화**