장애 감지와 Auto Healing
오늘은 서비스 운영 중 발생하는 장애를 감지하고 자동으로 복구하는 Auto Healing(자동 복구)에 대해 배웠다.
서비스에 문제가 생겼을 때 무조건 재시작하는 것이 아니라, 어떤 장애가 발생했는지에 따라 해결 방법이 달라진다는 것을 알게 되었다.
예를 들어 서버가 갑자기 종료되면 재시작이 필요하고, 네트워크가 일시적으로 끊겼다면 재시도(Retry)를 통해 해결할 수 있다. 반면 API 키가 없거나 코드 자체에 문제가 있다면 여러 번 재시작해도 해결되지 않아 사람이 직접 수정해야 한다.
Health Check는 서비스가 정상적으로 동작할 수 있는지 확인하는 기능이다. 단순히 서버가 켜져 있는지만 확인하는 것이 아니라 API 키나 로그 저장 상태처럼 실제로 서비스를 이용할 수 있는지도 점검한다.
Watchdog(감시자)은 서비스 상태를 주기적으로 확인하다가 문제가 발생하면 다시 실행시키는 프로그램이다. 다만 서버가 시작되는 중에도 잠시 응답하지 않을 수 있기 때문에 한 번의 실패만으로 장애라고 판단하면 불필요한 재시작이 반복될 수 있다.
재시도 실습에서는 Python의 tenacity 라이브러리를 사용해 실패한 요청을 일정 횟수만큼 다시 실행하는 방법을 살펴보았다. 또한 주 AI 모델이 계속 실패할 경우 다른 모델로 요청을 보내는 Fallback(대체 모델) 방식도 배웠다.
Docker에서도 HEALTHCHECK로 상태를 확인하고 재시작 정책으로 종료된 컨테이너를 다시 실행할 수 있다. 하지만 상태가 unhealthy로 표시된다고 해서 자동으로 재시작되는 것은 아니라는 점도 알게 되었다.
확장 실습에서는 AI 에이전트가 도구에 잘못된 날짜를 전달하는 경우를 다뤘다. 이런 판단 오류는 같은 요청을 반복하기보다 오류 내용을 알려주거나 필요한 정보를 제공해 입력값을 수정하도록 해야 한다.
이번 수업에서는 자동 복구가 모든 오류를 해결하는 것은 아니며, 오류의 원인을 파악하고 상황에 맞는 방법을 선택하는 것이 중요하다는 점을 배웠다.
댓글
댓글이 없습니다.
