현재 특정 api 요청에 대한 서버 구조이다.

db가 존재할 때는 문제가 없지만, db miss 발생 시, 시간이 엄청걸려서 자꾸 타임아웃 에러가 발생하였다. 이 문제를 클로드 코드와 함께 해결하였다.
추가로 기수에 대한 정보에 대한 기능 추가도 하였다.
멱등성을 보장하기 위해서 위와 같은 구조를 잡았다. 그러나 웹 클라이언트 입장에서 무한히 스피너가 돌아가며 기다린다면 최악일 것이다. 물론 개인용으로 사용하면 상관없겠지만..
front를 로컬에 띄우고 요청했을 때, 서버에서 db miss가 발생해 크롤링을 하는데 계속 10초 정도에 로직이 중지되었다. 프론트 내부 코드가 블랙박스이므로 클로드에게 의존하는 수밖에 없었다. 계속 수정하고 디버깅해서 고쳐달라고 했지만 클로드도 답답했는지 방향성을 제시해달라고 했다.
curl 도구를 사용해서 요청한 경우에는 정상으로 동작을 하는 것을 확인했다. curl의 경우 요청 후 응답을 받을 때까지 타임아웃을 명시적으로 세팅하지 않으면 무한히 기다린다고 한다. 크롤링에서 ip ban 당하지 않도록 random delay를 주었기 때문에 한 번의 요청마다 최소 5초의 대기를 하기에 응답이 지연되었다. 따라서 프론트에서 요청 시 응답을 10초 동안 받지 못한다면 타임아웃이 걸려버리는 것이었다. 프론트의 타임아웃 시간을 의도적으로 길게 설정한 뒤, 정상 동작하는 것을 확인했다.
특정 시간에 배치를 돌든 비동기 mq를 활용해 처리를 하든 크롤링 작업을 db miss 시 실행하지 않도록 구조를 바꿀 예정이다.
db miss가 나서 실패 시, 곧바로 자료가 없다는 응답을 리턴하고 조금 있다가 다시 시도를 하라는 문구를 띄우던가 ux 적인 면도 생각을 해야겠다.
경마장에서 분석해본 결과 기수의 승률도 무시 못하는 데이터인 것 같아 추가하였다.

기수 이름을 클릭 시 기수의 최근 1년 기록과 통산 전적이 나오게 된다.

우측 상단의 최근 1개월 기록 조회를 누르게 되면 1개월 모든 경주 성적을 리스트로 보여준다.

모두 체크, 해제를 통해서 원하는 경주 거리로 필터링할 수 있도록 했다.
클로드 코드를 활용한 바이브 코딩을 하면서 실력이 늘기를 바라면 안 되는 것 같다. 대신 클로드가 세상에 내가 알지 못하는 구조와 방식으로 내가 원하는 기능을 구현을 했을 때 어떻게 했는지 분석하고 받아들이는 게 공부인 것 같다.
완벽하게 에러를 해결해 주지 못한다. 에러가 발생했을 때 해결하는 능력을 키우는 것도 실력이 느는 것 같다.