728x90 프로젝트8 [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. [Infra] 코드 변경이 도커에 반영안되는 줄 알았다.. 문제 상황현재 github action을 통해 CI/CD 파이프라인을 구축했다. 해당 cicd에서 도커 이미지 빌드 및 ssh를 통해 ec2 내부에서 이미지 pull하도록 수정했다. 그런데 자꾸 코드를 변경했지만, 도커 컨테이너 환경에서는 변경이 반영되지 않는 문제가 발생했다. 도커 이미지 빌드 시, 볼륨의 이미지 레이어 캐시를 통해 빠르게 생성된다. 따라서 캐시와 코드의 변경 사항을 캐치하지 못해 업데이트에 반영되지 않나? 라고 생각을 했다. 그러나 Spring 컨테이너의 경우 볼륨을 마운트하지 않고 있어 이것이 문제가 아니였다. 두번째로, docker-compose 시 이미지를 제대로 pull 하지 못하나? 라고 생각했다. 그래서 v1 이라는 버전 명보다 커밋 해시값을 이용하여 태깅했다. 그런데 d.. 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. [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 다음 728x90