본문으로 건너뛰기

"Decision Log" 태그 — 2개 게시물

의사결정 기록

모든 태그 보기

늦게 돌아온 추출 워커의 완료 처리와 소유권 펜싱

· 약 6분
김성연
AI Research Engineer, Braincrew

문서 추출 워커가 응답하지 않으면 다른 워커가 작업을 이어받을 수 있어야 한다. 그런데 응답이 늦다는 이유만으로 이전 워커가 종료됐다고 볼 수는 없다. 새 워커가 결과를 저장한 뒤 이전 워커도 완료를 보고할 수 있다.

Deep Connector의 추출 코드를 검토하면서 작업을 가져오는 조건과 결과를 확정하는 조건을 나눠 읽었다. 작업을 처음 점유할 때의 행 잠금만으로는 나중에 돌아온 워커의 쓰기까지 막을 수 없기 때문이다. 결과를 확정할 때도 DB에 기록된 현재 소유자를 확인해야 한다.

아래 순서는 지연 상황을 설명하려고 만든 가정이며 실제 장애 회고가 아니다. 예제는 소유권 조건을 축약한 메모리 모델로, 실제 제품 코드나 다중 인스턴스 DB 실험을 실행한 결과와 구분한다.

동의어 검색에서도 사용자가 입력한 단어를 먼저 찾기

· 약 4분
김성연
AI Research Engineer, Braincrew

문서 코드를 정확히 입력했는데, 그 코드가 없는 안내문이 먼저 나온다고 하자. 검색 사전이 붙인 동의어가 안내문에 더 많이 등장했기 때문이다. 찾을 수 있는 표현은 늘었지만 사용자가 직접 지정한 단어의 우선순위는 낮아진 셈이다.

DeepConnector의 파일 검색은 사용자 입력과 사전 확장어를 함께 검색하되 점수는 구분한다. 직접 입력한 단어의 일치에는 큰 가중치를 주고, 사전이 보탠 별칭의 일치에는 작은 가중치를 준다. 동의어로 검색 범위를 넓히면서도 원래 검색어를 우선하려는 설계다.

첫 상황은 설계를 설명하기 위한 가정이며 실제 고객 장애가 아니다. 아래 문서와 검색어도 설명용으로 만들었다. 검증에는 특정 구현 스냅샷에서 추출한 실제 스니펫 조립 코드를 사용했고, 검색 서버나 사전 서비스 전체를 실행한 것은 아니다.