분류 전체보기49 비동기 처리 구조와 @Async 왜 동기 방식에서 비동기로 바꿈?- 사용자가 AI 분석 요청하면 서버가 AI 처리 끝날 때까지 응답 못 돌려줌- AI 처리에 10초가 걸리면 사용자의 HTTP 요청도 10초동안 계속 연결된 상태 => 그 요청을 처리하던 서버 Thread도 계속 잡혀 있다는 점 사용자 요청 1 -> tomcat thread 1사용자 요청 2 -> tomcat thread 2사용자 요청 3 -> tomcat thread 3 but, AI 요청 하나가 오래 걸리면Thread 1 -> AI 응답 10초 대기Thread 2 -> AI 응답 12초 대기Thread 3 -> AI 응답 8초 대기 Thread 1사용자 A 요청↓Qwen 호출↓응답 기다리는 중............10초↓DeepSeek↓응답 반환Thread 2사용자 .. 2026. 7. 19. AI 시스템 평가 - RAGAS와 골든셋 골든셋 - 무엇을 평가할지 정한 대표 시험 문제와 기대 결과 RAGAS - 그 시험 결과를 여러 품질 지표로 채점하는 평가 도구 골든셋: 시험 문제와 정답지RAG 시스템: 시험을 푸는 학생RAGAS: 채점 기준과 채점 도구 골든셋- AI 시스템을 반복적으로 평가하기 위해서 준비한 대표 입력과 기대 결과의 모음- 시스템을 수정할 때마다 이 입력을 다시 실행하고 결과가 기대 조건을 만족하는지 확인 1) 분류 모델 -> 입력 + 기대 분류값 2) RAG 시스템-> 질문 + 기대 답변 + 정답 근거 3) AI AGENT -> 사용자 요청 + 기대 TOOL 호출 + 기대 상태 변화 + 최종 응답 조건 - 골든셋은 다음을 평가할 수 있음 질문 이해의도 분류검색 결과TOOL 선택과 호출AGENT 실행 경로.. 2026. 7. 17. DB 인덱스 인덱스- 테이블의 데이터를 빠르게 찾기 위해 별도로 만들어 두는 정렬된 자료구조- 인덱스는 조회 성능을 높이는 대신 저장 공간을 사용하고 INSERT, UPDATE, DELETE 비용을 증가시킴=> 즉, 조회 성능 높이는 대신 저장 공간 소비하고 데이터 변경 작업 비용을 증가시키는 트레이드오프를 가짐 인덱스 관리 - 인덱스는 항상 최신의 정렬 상태를 유지해야 함.그래서 인덱스가 적용된 컬럼에 INSERT, UPDATE, DELETE가 수행되면 추가적인 연산을 해주어야하고 이로 인해서 오버헤드가 발생함. [DML 비용 증가]INSERT : 새로운 데이터에 대한 인덱스 추가DELETE : 데이터를 삭제해도 인덱스 공간에서 즉시 지워지지 않고 '사용 안 함' 처리 됨 -> 인덱스 크기는 줄어들지 않음UPD.. 2026. 7. 14. 동기 vs 비동기 동기 처리- 요청을 보낸 사람이 작업이 끝날 때까지 기다리는 방식- 사용자는 처리 상태를 알 수 없어서 기다리다가 '왜 안 되지?' 생각하고 재요청하면 중복 작업이 발생할 수 있음 비동기 처리- 요청을 받은 서버가 작업 완료를 기다리지 않고 먼저 응답하는 방식- 클라이언트 입장에서는 ai 작업과 http 요청이 분리됨 사용자 AI 요청 → jobId 17번 발급 → 사용자에게 즉시 반환 별도 Worker가 AI 처리 사용자가 17번 상태 조회 → PROCESSING → 나중에 DONE + 결과 주문AI 요청주문번호jobId주문서AiJob DB 데이터주방 직원ai-worker Thread조리 대기열Executor Queue조리 중PROCESSING조리 완료DONE조리 실패FAILED전광판 확인Po.. 2026. 7. 13. Presigned URL S3객체는 개인 정보가 포함될 수 있으니 비공개로 두고, 필요한 순간에만 임시 접근 권한을 주는 방식이 더 안전함그 임시 출입증이 Presigned URL임 S3 Presigned URL- AWS가 서명해서 만들어주는 유효기간이 있는 임시 URL S3 비공개 이미지: 잠긴 창고 안의 물건일반 사용자: 창고 열쇠가 없음Presigned URL: 50분 동안만 사용할 수 있는 임시 출입증 https://bucket.s3.amazonaws.com/uploads/image.png?X-Amz-Algorithm=...&X-Amz-Credential=...&X-Amz-Date=...&X-Amz-Expires=3000&X-Amz-Signature=... 사용자 이미지 -> Presinged PUT URL로 업.. 2026. 7. 13. RunGuard 개발 - 캐시 무효화 검증 로컬 캐시 Caffeine으로 성능을 개선할 기반으로 마련했고, 이를 실제로 테스트 해보자 캐시 on/ off 성능 테스트 비교 1. MySQL에 테스트 데이터 넣기mysql -u root -p runguard 2. 데이터 확인 SELECT COUNT(*) AS usersFROM usersWHERE id BETWEEN 2 AND 102;SELECT COUNT(*) AS workoutsFROM workoutsWHERE user_id BETWEEN 2 AND 102 AND started_at BETWEEN '2026-07-04 00:00:00' AND '2026-07-10 23:59:59'; 3. 캐시 OFF 서버 실행.\gradlew.bat bootRun --args='--spring.profiles.. 2026. 7. 10. 이전 1 2 3 4 ··· 9 다음