𝟳 𝗠𝗶𝘀𝘁𝗮𝗸𝗲𝘀 𝗧𝗵𝗮𝘁 𝗕𝗿𝗲𝗮𝗸 𝗔𝗜 𝗔𝗴𝗲𝗻𝘁𝘀
테스트 단계에서 AI 에이전트는 잘 작동합니다. 빠르고 정확하죠. 하지만 배포하는 순간 모든 것이 실패합니다. 사용자들은 타임아웃과 오류를 보고합니다.
회복 탄력성(resilient) 있는 AI 에이전트를 구축하려면 좋은 코드 그 이상이 필요합니다. 프로덕션 환경의 복잡한 현실을 다룰 수 있어야 합니다.
더 나은 시스템을 구축하기 위해 다음의 7가지 실수를 피하세요:
- 외부 API 실패 무시 네트워크 요청은 타임아웃이나 속도 제한(rate limits)으로 인해 실패할 수 있습니다.
- 모든 호출을 try-catch 블록으로 감싸세요.
- 특정 타임아웃 값을 설정하세요.
- 지수 백오프(exponential backoff)를 적용한 재시도 로직을 사용하세요.
- 실패하는 서비스에 대해 서킷 브레이커(circuit breakers)를 사용하세요.
- 실패를 이분법적으로 취급 많은 개발자가 시스템이 작동하거나 작동하지 않거나 둘 중 하나라고 생각합니다. 하지만 실제로는 시스템의 일부가 실패하는 동안 다른 부분은 계속 활성 상태로 유지되는 경우가 많습니다.
- 다단계 폴백(fallback) 전략을 수립하세요.
- 기능이 축소된 상태에서 시스템이 어떻게 작동할지 정의하세요.
- 시스템이 성능 저하(degraded) 상태일 때 사용자에게 알리세요.
- 최소한의 로깅 보이지 않는 것은 고칠 수 없습니다.
- DEBUG, INFO, WARNING, ERROR 등 다양한 레벨로 로그를 남기세요.
- 사용자 여정을 추적하기 위해 request ID를 사용하세요.
- 오류율과 응답 시간을 추적하세요.
- 시스템 이상 징후에 대한 알림을 설정하세요.
- '해피 패스(happy paths)'만 테스트 성공하는 경우만 테스트한다면, 에이전트는 부하 상황에서 실패할 것입니다.
- 카오스 엔지니어링(chaos engineering)을 사용하여 실패 상황을 테스트하세요.
- 테스트 중에 의도적으로 의존성(dependencies)을 실패하게 만드세요.
- 네트워크 지연(latency)과 느린 서비스를 시뮬레이션하세요.
- 잘못된 형식의 데이터(malformed data)로 테스트하세요.
- 에이전트 상태 손실 크래시가 발생했다고 해서 모든 진행 상황을 잃어서는 안 됩니다.
- 주요 마일스톤마다 상태를 저장하세요.
- 멱등성(idempotent)이 보장되는 연산을 사용하세요.
- 중단된 작업을 재개할 수 있을 만큼 충분한 컨텍스트를 저장하세요.
- 설정값 하드코딩 타임아웃이나 API 엔드포인트를 변경할 때마다 다시 배포해야 해서는 안 됩니다.
- 모든 설정에 환경 변수를 사용하세요.
- 코드 변경 없이 임계값(thresholds)을 조정할 수 있도록 만드세요.
- 새로운 동작에는 피처 플래그(feature flags)를 사용하세요.
- 일반적인 오류 처리 유효성 검사 오류는 네트워크 타임아웃과는 다르게 처리해야 합니다.
- 재시도 가능한 오류와 영구적인 오류를 구분하세요.
- 속도 제한과 같은 일시적인(transient) 문제는 재시도하세요.
- 인증 실패와 같은 영구적인 문제는 재시도하지 마세요.
회복 탄력성은 현실을 예측하는 것입니다. 현재 사용 중인 에이전트가 이러한 함정에 빠져 있지 않은지 점검하는 것부터 시작하세요.
Optional learning community: https://t.me/GyaanSetuAi