카카오 로그인 API 사용 방법 - 2025 ver (Java, Spring)
·
Spring
이 글은 과거(2023년 10월) 작성했던 글을 현재(2025년 12월)을 기준으로 리뉴얼 한 글이다.과거와 비교했을 때 달라진 점은 크게 없고, kakao에서 마이그레이션을 잘 해줘서 문제없지만, 사소하게 달라진 점들이 있다.예를들면 당시에는 사용자 email, 연령 등의 정보를 쉽게 얻을 수 있었는데, 지금은 비즈니스앱인증을 받아야 되는 등... 이런것들이 바뀌었다.2023.10.14 - [Spring] - [Spring] 카카오 로그인 API 사용 방법kakao developershttps://developers.kakao.com/ Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해 보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다..
[Spring] ehcache 설정, 코드 기반 configuration
·
Spring
EH cache웹 애플리케이션에서 성능을 확보하기 위해 가장 먼저, 쉽게 도입할 수 있는 기술 중 하나가 캐싱(Cache)이다. 캐시는 반복적으로 조회되는 데이터를 메모리에 보관해 DB 부하를 줄이고, 응답속도를 빠르게 만드는 도구이다. 보통 Redis부터 떠오르는데, Caffeine, EhCache와 같은 로컬 캐싱 방법도 있다. 그 중 EhCache는 안정적이고, JVM에 최적화된 로컬 캐시로 널리 사용된다.외부 인프라(Redis 등)을 도입하지 않고, 간단하게 Spring Boot 설정만으로 캐싱을 도입할 수 있다는 장점이 있다. EhCache란?JVM 힙/오프힙 메모리 기반 캐싱디스크 저장 가능(옵션)JSR-108(JCache) 표준 지원Spring Cache 추상화(@Cacheable)와 통합되..
[Spring] 메모리 Queue + @Scheduling 배치 처리 - 부하 분산
·
Spring
대량으로 발생하는 사용자 행동 로그를 그때그때 DB insert 하게 되면 애플리케이션과 DB에 둘 다 부담이 커진다.로그가 초당 수십-수백건 씩 쌓이면 DB connection pool 고갈, 애플리케이션 성능 저하 등이 발생한다.일반적으로는 kafka, RabbitMQ 등 이벤트 / 메시지 기반 인프라를 이용하여 처리할 수 있지만 상황에 따라 애플리케이션 레벨에서 해결해야했다. 이 글에서는 다른 인프라를 추가하지 않고, 애플리케이션 레벨에서 로그를 모아뒀다가 Batch insert 하는 방법을 다룬다. 설계 과정문제 상황유저 행동 로그(일단은 페이지 이동, 클릭 등 이벤트)를 수집해야 하는 상황로그가 초당 수십-수백건 수집되면 DB 부하가 심해지고, 애플리케이션 부담이 커질 수 있음추가 인프라 도입(..
[Spring AI] 벡터 DB - Qdrant 스프링부트 연동과 ollama를 이용한 임베딩
·
Spring
Qdranthttps://qdrant.tech/ Qdrant - Vector DatabaseQdrant is an Open-Source Vector Database and Vector Search Engine written in Rust. It provides fast and scalable vector similarity search service with convenient API.qdrant.tech최근 AI 서비스 개발에서 핵심 키워드 중 하나는 벡터 데이터(Vector Data) 이다. 텍스트, 이미지, 오디오 같은 비정형 데이터를 임베딩(embedding) 모델을 통해 고차원 벡터로 변환하면, 이 벡터들을 서로 비교해 유사도 검색이나 컨텍스트 기반 검색을 수행할 수 있다. 여기서 중요한 건 ..
[Spring AI] Spring Boot에 LLM을 도입하기 전 꼭 알아야 할 RAG 개념 정리
·
Spring
이 글은 AI, RAG에 대해 기술적으로 전혀 모르는 상황에서 인앱 AI를 도입하기 위한 기본 개념을 정리합니다. 이 개념을 이해한 후에, 아래 Spring AI 실습 글을 보시길 바랍니다.(이 글에서 Spring AI는 직접적으로 다루진 않습니다.)[Spring] - [Spring] Spring AI + RAG 임베디드 AI 구축 방법 [Spring] Spring AI + RAG 임베디드 AI 구축 방법시작하기 전에, 이 글은 개념 정리는 없는 실습 글입니다.RAG 및 AI 개념에 대해 정리한 글이 있으니, 참고하세요.[Spring AI] Spring Boot에 LLM을 도입하기 전 꼭 알아야 할 RAG 개념 정리 [Spring AI] Spring Boinnovation123.tistory.com 인..
Spring AI로 RAG 챗봇 만들기 – Ollama, pgvector 부터 API 까지
·
Spring
시작하기 전에, 이 글은 개념 정리는 없는 실습 글입니다.RAG 및 AI 개념에 대해 정리한 글이 있으니, 참고하세요.[Spring AI] Spring Boot에 LLM을 도입하기 전 꼭 알아야 할 RAG 개념 정리 [Spring AI] Spring Boot에 LLM을 도입하기 전 꼭 알아야 할 RAG 개념 정리이 글은 AI, RAG에 대해 기술적으로 전혀 모르는 상황에서 인앱 AI를 도입하기 위한 기본 개념을 정리합니다. 이 개념을 이해한 후에, 아래 Spring AI 실습 글을 보시길 바랍니다.(이 글에서 Spring AI는innovation123.tistory.com 특정 도메인의 정보를 LLM이 읽어서 챗봇처럼 대답해 주기 위한 기본 흐름은 아래와 같다.특정 도메인을 임베딩 하여 vector DB..
[Spring] @Transactional 전파수준 정리 - Propagation 예제코드로 테스트해보기
·
Spring
@Transactional 전파 수준이란?Spring에서는 @Transactional을 통해 트랜잭션을 선언적으로 쉽게 관리한다.대부분의 경우 기본 전파 수준인 REQUIRED만으로도 충분하지만, 하나의 서비스 메서드에서 또 다른 트랜잭션 메서드를 호출할 때, 전파 전략을 명확히 이해하고 설정하지 않으면 원치 않는 rollback 또는 commit이 발생할 수 있다. 트랜잭션 전파 수준은 “이미 존재하는 트랜잭션이 있는 상황에서 이 메서드를 새 트랜잭션으로 실행할 것인가, 아니면 기존 트랜잭션에 참여할 것인가”를 결정하는 설정하는 것이다. 트랜잭션 전파가 중요한 상황들주문 entity 저장 진행 중, 로그테이블에 기록해야 됨. -> 로그 저장 중 에러 발생한다고 비즈니스 로직을 롤백하면 안 됨서비스 내의..
[Spring] @RequestBody JSON 바인딩 원리와 Jackson 직렬화/역직렬화 과정 (MappingJackson2HttpMessageConverter)
·
Spring
@RequestBody Json 데이터 바인딩Frontend에서 Http Body에 Json 데이터를 담아서 보내면, Spring Boot Controller의 @RequestBody로 객체로 바인딩된다. 결론부터 말하자면 아래의 방법 중 하나로 바인딩 한다.기본 생성자 + Setter전체 필드 생성자 + @JsonCreator필드 직접 접근HttpMessageConverterSpring은 @RequestBody가 붙은 파라미터를 처리할 때 내부적으로 HttpMessageConverter를 사용한다.HandlerMethodArgumentResolver → RequestResponseBodyMethodProcessor → HttpMessageConverter 순으로 요청을 처리한다.JSON String은 ..