AI
온톨로지와 의미검색
2026.08.03
온톨로지가 있어야 의미검색이 가능할까?검색 시스템을 공부하다 보면 온톨로지, 의미검색, 임베딩, 벡터 검색 같은 용어를 자주 만나게 된다.처음에는 온톨로지가 있어야 컴퓨터가 단어의 의미를 이해하고, 의미검색도 가능해지는 것처럼 느껴질 수 있다. 하지만 결론부터 말하면 다음과 같다.온톨로지가 없어도 의미검색은 가능하다.현재 많이 사용되는 의미검색 시스템은 온톨로지 없이도 임베딩 모델과 벡터 검색을 이용해 구현할 수 있다. 그렇다면 온톨로지는 정확히 무엇이고, 의미검색과는 어떤 차이가 있을까?온톨로지란 무엇일까?온톨로지를 아주 쉽게 표현하면 다음과 같다.온톨로지는 컴퓨터가 세상을 이해할 수 있도록 만든 개념 관계도다.예를 들어 사람은 다음과 같은 관계를 자연스럽게 이해한다.강아지는 동물이다.동물은 생명체다...
Dev Team
Ponytail로 FastAPI 백엔드 다이어트하기
2026.06.26
Ponytail로 FastAPI 백엔드 다이어트하기1838줄짜리 서비스 파일, HTTP 클라이언트 3개 중복, 복붙 핸들러 — ponytail-audit 한 번으로 전부 잡았다.Ponytail이 뭔데?Ponytail은 Claude Code 플러그인으로, "게으른 시니어 개발자" 관점에서 코드를 리뷰한다. 핵심 철학은 단순하다: 가장 좋은 코드는 쓰지 않은 코드다.나는 다음 두가지 모드를 사용해봤다.ponytail-audit — 레포 전체를 스캔해서 불필요한 복잡도를 찾는다ponytail-review — git diff 기준으로 변경사항만 리뷰한다출력 형식도 간결하다. 한 줄에 하나의 발견:L52-71: delete: retry wrapper around an idempotent local call. No..
Dev Team
LLM과의 '채팅 기록' 지연 저장 — Lambda 성공 후 저장으로 변경
2026.06.05
1. 문제채팅 엔드포인트는 유저가 메시지를 보내면 채팅 Lambda 호출 전에 유저 메시지를 interaction_history에 바로 저장하고 있었다.Lambda 호출이 실패하거나 서버 에러가 발생하면, 유저 메시지만 DB에 남고 AI 응답은 없는 불완전한 상태가 된다. 이 상태에서 시험 화면을 새로고침하면 에러가 발생했던 채팅이 그대로 불러와지기 때문에, 불필요한 데이터가 계속 쌓이는 문제가 생겼다.[기존 흐름]유저 메시지 DB 저장 → Lambda 호출 → (실패) → AI 응답 없음 ↓ 새로고침 시 유저 메시지만 노출2. 고민 사항접근 방법 검토A. ..
Dev Team
REST API 설계 중 마주한 고민과 해결. 역할은 토큰, 경로는 리소스
2026.05.14
배경학생(applicant)이 로그인한 뒤 헤더의 교육현황을 누르면, 자신이 enroll된 교육(커리큘럼) 목록을 내려주는 API가 필요했다. 응답에는 커리큘럼 메타데이터, 교육자 이름, 기간 대비 상태(진행예정·진행중·완료), 시나리오 진행률, 성향·흥미 검사 완료 여부 등이 들어간다.설계를 하다 보면 스키마와 쿼리보다 먼저 막히는 지점이 하나 있다. 엔드포인트 URL을 어떻게 잡을 것인가다. 특히 이미 교육자용으로 /education 같은 경로가 있다면, 학생용을 같은 트리 아래 둘지, /student 네임스페이스를 새로 둘지 선택이 애매해진다.REST에서 자주 헷갈리는 것: “역할”을 URL에 넣어도 될까REST를 말할 때 흔히 등장하는 문장은 “URL은 리소스를 나타낸다”이다. ..
Dev Team
시험 응시 서비스의 동시성 문제 해결기: 왜 Lock 대신 State(Timeout)를 선택했나/행 단위 락(Row-level ), 분산락, 낙관적 락, 명시적 상태 전이
2026.04.15
회사에서 개발하고있는 '시험 응시' 서비스에서는 “시험을 시작하면 세션(row)이 생성되고, 시험에서의 활동 로그(답변 등등)가 누적되다가, 마지막에 평가를 수행”하는 형태로 동작합니다. 이 구조에서 운영을 하다 보면 피할 수 없는 질문이 생깁니다.사용자가 시험을 시작만 하고 나가버리면(중도 이탈) 세션은 어떻게 정리할까?제한시간이 끝났는데도 제출이 없으면, 로그가 남은 세션은 자동 평가할까?그 과정에서 “사용자 재개”와 “배치 정리/자동평가”가 동시에 일어나면 어떤 일이 벌어질까?이 글은 그 동시성(레이스 컨디션) 문제를 어떻게 정의했고, 해결 방안으로 어떤 선택지가 있었으며, 최종적으로 왜 timeout이라는 명시적 상태 전이(state transition) 로 풀었는지 정리한 글입니다.문제 배경: ..