| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- 스프링 부트 입문
- Effective Java
- JPA
- thymeleaf
- assertThat
- 스프링 빈
- DI
- 싱글톤
- jdbc
- 생성자 주입
- mybatis
- springboot
- resultMap
- 스프링부트
- 스프링 컨테이너
- Javascript
- kafka
- 스프링
- 필드 주입
- assertThrows
- db
- java
- @Configuration
- SQL
- 스프링 부트
- DIP
- 스프링 부트 기본
- 스프링 프레임워크
- spring
- sqld
- Today
- Total
목록전체 글 (314)
선 조치 후 분석
최근 기업 보안 이슈로 인해 외부 API(OpenAI 등)를 쓰지 않고 로컬에서 LLM을 구동하려는 수요가 많습니다.오늘은 S3(MinIO), OpenSearch, Ollama를 활용해 자바 환경에서 간단한 RAG 시스템을 구축한 과정을 공유합니다.1. 전체 아키텍처본 시스템은 데이터 수집 → 벡터화 → 저장 → 검색 → 답변 생성의 5단계 흐름을 가집니다.Storage: MinIO (S3 compatible)Vector DB: OpenSearchLLM Engine: Ollama (Llama 3)Framework: LangChain4j2. 핵심 기술 스택 및 역할기술역할비고MinIO원본 데이터(txt) 저장소S3 호환 로컬 스토리지OpenSearch벡터 데이터 및 텍스트 검색지식 창고 역할Ollama (..
먼저 간단하게 요약하면, 세션스토리지(SessionStorage)는 '일회용 포스트잇' 같고, 로컬스토리지(LocalStorage)는 '지워지지 않는 메모장' 같다고 표현할 수 있을 거 같다.두 저장소 모두 브라우저 내부에 데이터를 저장하는 공간이지만, 데이터가 "언제까지 유지되는가"와"범위가 어디까지인가"에서 큰 차이가 있다.개념도 (Storage Structure)● 브라우저 내부는 아래와 같은 구조로 데이터를 관리한다.① 로컬스토리지 (LocalStorage) → 도메인별로 할단된 영구적인 서랍장 (브라우저를 꺼도 유지)② 세션스토리지 (SessionStorage) → 탭마다 할당된 임시 포스트잇 (탭을 닫으면 파기)③ 쿠키 (Cookie) → 서버와 주고받는 작은 증표 (용량이 작고 만료일이 있음..
개발을 진행하면서 log4j / slf4j / Logback 을 왜 사용하는지 그리고 각각의 개념을 정리했다. SLF4J (Simple Logging Facade for Java)로깅 파사드(Facade)실제 로그 구현체가 아니라 인터페이스(추상화 계층)로깅 구현체(Log4J, Logback 등)를 느슨하게 연결로깅 API의 표준 인터페이스 역할 ● 구조[ Application ] ↓ SLF4J - 표준 인터페이스 ↓[ Logback | Log4J | Log4J2 ] - 구현체 ● Lombok 사용 안하는 방법import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class SampleService { private st..
개발을 진행하면서 예외처리에 대한 관심이 더 생기고 조금 더 깔끔하게 코드를 짜고 싶은 욕심이 생겨서 정리해 보았다. printStackTrace()란? 예외(Exception) 객체가 가진 스택 트레이스를 표준 에러 출력(stderr)으로 그대로 찍어주는 메서드try { int a = 10 / 0;} catch (Exception e) { e.printStackTrace();}java.lang.ArithmeticException: / by zero at com.example.Test.main(Test.java:10) 특징어디서 발생했는지 즉시 확인 가능설정 필요 없음무조건 콘솔에 출력단점로그 레벨 개념 없음파일로 남기기 어려움운영 환경에서 로그 관리 불가로그 포맷 통일 불가로그 수집(A..
프로젝트를 진행하다 보면 설정 파일을 어디에 두고 어떻게 읽어야 할지 헷갈릴 때가 많다.특히 "클래스패스(ClassPath) 기반과 파일패스(FilePath) 기반의 차이"를 명확하게 이해하지 못하면 배포 시 파일 경로 문제로 오류가 자주 발생하게 된다. 이번 글에는 직접 겪은 문제를 해결하는 과정을 기반으로 클래스패스(ClassPath) 기반과 파일패스(FilePath)의 차이를 정리했다.1. 클래스패스(ClassPath) 기반?Java 애플리케이션이 실행될 때, 클래스와 리소스를 찾기 위해 미리 설정된 경로SpringBoot 기준으로는 다음 경로가 클래스패스에 해당- src/main/resources** → (빌드 후) target/classes/**즉, resources 폴더 안에 넣어두기만 하면 ..
프로젝트 진행할 때, APM (스카우터)을 설치하는 업무가 생긴 경험이 있다. 한 번도 해본 적이 없어서, 개념도 같이 정리하기 위해 작성하였다.APM(Application Performance Monitoring)애플리케이션의 성능과 상태를 모니터링하고 분석하는 도구애플리케이션의 병목 현상, 오류, 성능 저하를 빠르게 발견하고 해결하는 것이 목적주요 기능실시간 모니터링- CPU, 메모리, 트래픽, DB 쿼리 속도 등 애플리케이션 상태 실시간 확인트랜잭션 추적- 사용자 요청이 애플리케이션 내 여러 서비스와 DB를 거치는 경로 추적알람/통지- 특정 기준 초과 시, 관리자에게 알람성능 분석- 느린 메서드, 쿼리, 외부 API 호출 등을 분석하여 최적화 포인트 제공로그 통합- 애플리케이션 로그와 성능 데이터를..