반응형 전체 글5 100만건의 데이터 저장 속도 780배 개선기 서론이번 포스팅에서는 개인 프로젝트 진행 중에 다수의 쿼리를 한 번에 발생시킬 필요성이 있어, 기존에 사용하던 saveAll() 메서드와 save() 메서드, JPA batch, JdbcTemplate의 batchUpdate 메서드 간의 차이점에 대해 알아본 과정과 결과를 공유하고자 합니다. 테스트에 사용된 기기는 맥북프로 m1 pro 기반이므로, 실제 서버의 성능과 별개로 상대적인 최적화 개선방법으로 봐주시면 감사하겠습니다. 포스팅에서 작성된 코드는 아래 깃헙 레포지토리에서 클론하여 직접 테스트 해볼수 있습니다.https://github.com/jaewonLeeKOR/save-optimization-testHibernate의 save()보통 jpa에서 단건 데이터를 저장하거나 Transactional을.. 2025. 5. 31. RestClient로 OpenAi API 사용하기 이번 글은 Java에서 RestClient를 이용한 OpenAi 활용 클라이언트 구현기 입니다.이전 프로젝트에서 Spring AI를 이용해서 멀티 에이전트 서비스를 구현한 경험이 있지만, 이번에는 Spring AI 라이브러리를 사용하지 않고 간단한 기능을 구현해 봤습니다.간단한 API 사용부터 Reflection API와 어노테이션을 활용한 구조화된 반환을 위한 클라이언트 메서드 구현까지 진행 해보겠습니다.OpenAI API 사용하기OpenAI에서는 ChatGPT의 여러 멀티모달 모델을 SaaS(Software as a Service) 형태로 제공하고 있습니다.OpenAI의 API를 사용하기 위해서는 우선 OpenAI의 API Platform에서 API key를 발급 받아 사용해야 합니다.API key를.. 2025. 5. 21. @Transactional 의 Lost Update 문제 해결기 (Redis 분산락) 제가 참여하고 있는 케플 프로젝트에서 좋아요와 댓글의 개수를 엔티티 자체에 저장하는 케이스가 존재했습니다. 최근에 해당 데이터를 다루는 과정에서 동시성 문제가 생겨 해결해 나간 경험을 공유하고자 합니다.그래서 무엇이 문제인가?@Transactional 의 Lost Update 문제스프링을 이용해 서버를 구현하였다면 익히 @Transactional 어노테이션을 사용하고 있을것입니다.@Transactional 어노테이션을 사용하는 이유는 상황에 따라 다르겠지만, 가장 유용하게 사용하는 이유는 Dirty Checking 방식의 변경 감지에 따른 update 쿼리 발생일것입니다.@Transactional 어노테이션이 실행되는 방식을 간단히 들여다 보면, @Transactional 어노테이션 내에서 DB로부터 조.. 2025. 5. 9. Spring AI : Retrieval Augmented Generation 번역 주의이 번역본은 현재의 Spring AI 모듈의 개발 상황에 따른 문서이며 현재 활발히 개발중인 모듈이므로 사용방법이나 컨셉이 변경될 수 있다.Retrieval Augmented Generation검색 증강 생성은 긴 형식의 콘텐츠, 사실적 정확성과 맥락 인식에 어려움을 겪는 LLM의 한계를 극복하는데 유용한 기술이다.Spring AI는 모듈식 아키텍쳐를 제공하여 사용자가 커스텀 RAG 플로우를 구축하거나 Advisor API를 활용하여 즉시 사용 가능한 RAG 플로우를 사용할 수 있도록 지원한다.AdvisorsSpring AI는 Advisor API를 활용하여 일반적인 흐름에 대한 즉시 사용 가능한 지원을 제공한다.QuestionAnswerAdvisor벡터 데이터베이스는 AI 모델이 인식하지 못하는 데.. 2025. 3. 16. Git 브랜치 전략 브랜치 전략여러 개발자들이 협업하는 환경에서 효과적으로 개발하기 위한 Git 사용 전략대표적인 Git 브랜치 전략Github Flowmaster 브랜치를 중심으로 운영기능 개발, QA(Quality Assurance) 등의 작업용 브랜치를 구분하지 않는 구조작업 브랜치에서 master 브랜치로 PR을 한 후 테스트를 하여 검증 후 master 브랜치로 병합브랜치 전략이 단순하여 처음 접하기 쉬움Git Flow개발, QA, 운영의 단계를 나눈 브랜치 전략Github Flow메인 브랜치master기능 개발이 완료된 브랜치들을 병합하는 브랜치보조 브랜치feature목표로 하는 기능을 개발에 사용하는 브랜치근원 브랜치master병합할 브랜치masterGit Flow2개의 메인 브랜치와 3개의 보조 브랜치로 구성.. 2025. 3. 15. 이전 1 다음 반응형