단일 서버에서 특정 기능을 분리해 전체 안정성을 높인 경험
인턴 때 이미지 처리 기능이 메인 API 서버 안에 있어 이미지 처리 중 CPU가 치솟으면 다른 API도 느려지는 문제가 있었습니다. 이미지 처리를 별도 워커로 분리하는 작업을 보조했습니다.
메인 서버는 이미지 요청을 큐에 위임하고, 워커가 비동기로 처리하는 구조로 바꿨습니다. 분리 후 메인 API 응답 시간의 95퍼센타일이 800ms에서 120ms로 줄었습니다. 이미지 처리 속도는 동일했지만 다른 기능이 영향받지 않았습니다.
실패 경험은 워커가 실패했을 때 재처리 로직이 없어 이미지가 조용히 누락됐던 것입니다. 재시도 큐와 실패 알람을 추가하면서 분리는 새로운 실패 모드를 만든다는 걸 배웠습니다. 아키텍처 개선은 성능 수치뿐 아니라 실패 경로도 함께 설계해야 완성된다는 기준이 그때 생겼습니다.