728x90 분류 전체보기74 [DB] FULL TEXT INDEX 도입에 관해 현재 원툴에서 키워드 검색 기능을 제공하고 있다. 도면의 제목과 작가를 검색하는 기능으로 LIKE문을 사용하고 있다. LIKE 문의 비용은 원래 크다고 배웠다. 그래서 왜 느린지 원인을 분석하고 Full Text Index 도입에 대해 고민해보고자 한다. Full Text Index란?긴 문자의 텍스트 데이터를 빠르게 검색하기 위한 MySQL의 부가적인 기능이다. InnoDB의 전체 텍스트 인덱스는 역색인 설계를 따릅니다. 근접 검색을 지원하기 위해 각 단어의 위치 정보도 바이트 오프셋으로 저장됩니다. 역 색인(인버트 인덱스)이란?색인이 데이터에서 키워드를 빠르게 찾는 기법이라면 역 색인은 키워드로 데이터를 찾는 기법을 말한다. 검색 엔진에서 추출된 키워드를 term라고 한다. 즉, 검색 엔진은 특정 문.. 2025. 6. 2. 창의설계경진대회 회고 약 두 달간의 캡스톤 디자인 프로젝트 끝에 창의설계경진대회가 진행되었다. 컴퓨터공학 교수님들과 스타트업 대표들에게 프로젝트를 시연 및 발표하고 심사받는 행사였다. 발표는 특이하게 발표 영상을 상영하고, 질의응답 받는 형식이었다. 이를 위해 포스터도 만들어 쉽게 파악할 수 있도록 만들었다. 주로 연구하시는 교수님들 특성상 프론트엔드나 백엔드 보다 AI 중심으로 질의 응답을 하셨다. 우리는 이를 파악하여 포스터 및 발표자료에 뷰와 서버에 대한 내용은 모두 빼고 작성했다. 때문에 AI 개발을 한 친구가 매우 힘들어했다. 혼자 AI 학습 및 정리하는 것을 보며 항상 도와주고 싶어서 물어봤지만, "도움 필요하면 말할게"라고 하고 혼자 다 했었다. 그 친구에게 더 미안한 생각이 들었다. 발표 1시간 전, 성격 .. 2025. 5. 30. [Deploy] AI 서빙을 어떻게 해야할까? 현재 상황 AI 기반의 필적 감정 서비스를 개발하게 되었다. 검사하려는 검증물과 비교 대상인 대조물 사이의 유사도 및 필적 특징을 추출하여 제공하는 서비스이다. 내가 담당하게 된 파트는 AI 서빙이었다. 평소 AI 기반 서비스가 어떻게 이루어지는지 많이 궁금하였고 이 참에 공부해보는 것도 좋겠다고 생각했다. 기술적 고민현재 제공하는 AI 서빙 방법은 총 3가지이다. 1. 웹 서버 프레임워크로 직접 서빙하기2. TensorFlow Serving 이용하기3. NVIDIA Triton 카카오 테크 블로그에서 비교된 아티클을 발견하여 참고하였다.https://tech.kakaopay.com/post/model-serving-framework/ "FastAPI와 TensorFlowServing, Trioton과의.. 2025. 5. 29. [Test] 테스트 코드 작성에 대한 의문점 테스트 코드를 왜 작성하는가? 나는 크게 3가지의 이유로 테스트 코드를 작성한다고 생각한다. 예외 처리를 위해프로덕션 코드 변경에 따른 영향을 쉽게 파악하기 위해코드 작성의 의도를 문서화 이 중 나는 1번과 3번의 의미가 테스트 코드에서 크다고 생각한다. >에서도 3번에 대한 내용을 강조하고 있다. 해당 책에선 대부분의 테스트 코드(80%가량)가 단위 테스트로 이루어져야 한다고 말한다. 그래서 나도 이번 프로젝트에서 각 레이어의 메서드별 테스트 코드를 작성하였다. 그 결과 코드 커버리지는 높일 수 있었지만 테스트 코드 작성의 필요성에 대한 궁금증이 더 커졌다. 작성할 수록 모르겠는 테스트 코드현재 자바 진영에서 주로 Mockito 라이브러리를 통해 테스트 코드를 작성한다. 나 또한 Mockito를 통해 .. 2025. 4. 10. [Test] void 메서드 테스트 문제상황BlueprintBusiness의 테스트 코드를 작성하는 과정에서 BlueprintService에 대한 스텁을 지정했다. 그러나 해당 BlueprintService의 메서드는 반환형이 void이기 때문에 값 기반의 검증이 불가능하다.// BlueprintBusinessTest@Testvoid 도면을_생성한다() { // given BlueprintRequest request = BlueprintFixture.createBlueprintRequest(); doNothing().when(blueprintService).saveBlueprint(any(Blueprint.class)); // when blueprintBusiness.createBlueprint(request);.. 2025. 4. 5. [DB] N+1 문제 해결을 위한 최고의 선택은? 현재 상황기존 코드의 경우, 키워드를 통한 Blueprint를 검색하는 JPQL을 사용하고 있다. 이 경우에 당연하게도 Blueprint에 있는 연관관계에 의해 N+1이 발생하게 된다.// Blueprint@OneToMany(mappedBy = "blueprint")private List orderBlueprints = new ArrayList();@OneToMany(mappedBy = "blueprint")private List cartBlueprints = new ArrayList();// BlueprintRepository@Query(value = "SELECT b FROM Blueprint b WHERE (b.blueprintName LIKE %:keyword% OR b.creatorName LI.. 2025. 3. 13. 이전 1 2 3 4 ··· 13 다음 728x90