Latest Posts · Page 1 of 3
Spring AI Ops 개발기 — Grafana Alerting과 GitHub Repository에 Push된 Code를 AI로 분석하는 실시간 대시보드

AI 기반 운영 자동화 도구인 Spring AI Ops 개발과정 소개. 주요 기능은 Grafana Alerting과 Loki 로그 조회로 AI 장애 분석, GitHub git push로 코드 리뷰를 AI가 수행하는 것. Spring Boot, Kotlin, Spring AI, Redis, Java 21 Virtual Thread 등 기술 스택 사용. 중요 설계 포인트와 트러블슈팅 사례 포함. AI AutoConfiguration을 비활성화하고 Redis를 데이터 저장소로 사용함.

Read
Nginx 프록시 환경에서의 WebSocket (WSS) 동작 이상 트러블슈팅

Kafka로 게시글을 발행하고, WebSocket을 통해 실시간 알림을 구현했는데, HTTPS 운영서버에서는 WebSocket이 동작하지 않아 Nginx 설정을 추가하여 문제 해결함. Nginx가 WebSocket 업그레이드 요청에 필요한 HTTP 헤더를 백엔드로 전달하지 않아 발생한 문제로, Upgrade와 Connection 헤더를 설정해야 함. Nginx에 `/ws/` 전용 location 블록을 추가하여 `proxy_http_version`, `proxy_set_header` 등의 설정을 적용하고 서비스를 재시작해야 함.

Read
Spring Boot 4 SRE 모니터링 스택 구축

Vultr 서버에 Grafana LGTM 스택(Loki, Prometheus, Tempo, Grafana)을 구성하여 Spring Boot 애플리케이션의 메트릭·로그·트레이스를 통합 관측했다. Virtual 환경 제약 속에서도 Docker 기반 인프라와 OpenTelemetry를 활용해 로그-트레이스-메트릭 간 연동까지 구현했다. 구축 과정에서 발생한 다양한 버전/설정 이슈를 해결하며 실무적인 트러블슈팅 경험과 운영 안정성을 확보했다.

Read
Google Drive 이미지 프록시 성능 개선 — Virtual Thread와 경량 캐시 적용

Google Drive 이미지 프록시에서 과도한 순차 API 호출로 인한 성능 저하를 캐시 + 병렬 처리로 개선했다. 폴더/파일 ID를 캐싱하고 Virtual Thread로 다운로드·메타 조회를 병렬화하여 응답 시간을 단축했다. 이후 Redis(Valkey) + Spring Cache로 확장하여 캐시 공유·TTL·운영 안정성까지 확보한다.

Read
RSA 클라이언트 암호화 적용

HTTPS만으로는 개발자 도구·프록시 등에서 비밀번호 평문 노출 위험이 존재하므로, 클라이언트에서 RSA로 한 번 더 암호화하는 방식을 적용한다. 브라우저는 공개키로 암호화하고 서버는 개인키로 복호화하여 기존 인증 로직은 유지하면서 전송 보안을 강화할 수 있다. 다만 이는 HTTPS를 대체하지 않으며, 리플레이 공격·키 관리 등 추가적인 보안 고려가 필요하다.

Read
Spring AI로 OpenAI 연동하기 : Kotlin + Spring Boot

Spring AI를 활용하면 OpenAI 등 다양한 LLM을 ChatClient 추상화로 간단하게 Spring Boot 애플리케이션에 연동할 수 있다. 의존성 추가, API 키 설정, ChatClient 빈 등록, 서비스 호출의 4단계만으로 LLM 기반 API를 빠르게 구축 가능하다. 추상화 구조 덕분에 모델 교체(OpenAI → Anthropic 등)도 코드 변경 없이 설정만으로 유연하게 대응 가능하다.

Read
아키텍처는 어떻게 만들어지는가: 이벤트에서 시스템으로

애플리케이션 아키텍처는 비즈니스 요구사항과 기술적 제약을 고려하여 최적의 구조를 찾는 작업이며, 이를 통해 도메인 정의와 데이터 모델링을 포함한 프로젝트 진행됨. 데이터베이스 설계에는 도메인 간 관계, 정규화, 확장성을 고려하여 논리 모델링을 진행하고, 기술 스택 선택에서는 Java 21, Spring Boot, Kotlin 등을 결정함.멀티 모듈 구조, 애노테이션 기반의 인증, Virtual Thread를 활용한 FeignClient 등의 기술 채택과 코딩 컨벤션 정의 등이 이뤄짐.마지막으로 AWS SQS를 메시징 솔루션으로 선택하고, 기술 워크샵을 통해 최종 아키텍처를 확정함.

Read
플랫폼 백엔드 개발 가이드

Java 21 Virtual Thread + Spring Boot 3.5 + Spring Cloud 기반의 마이크로서비스 아키텍처로, 4개 독립 서비스 모듈과 공통 라이브러리로 구성된 백엔드 개발 가이드이다. @ParsedAuthToken + @ValidateUser 커스텀 애노테이션과 AOP를 조합해 JWT 파싱 및 사용자 검증 로직을 컨트롤러에서 완전히 분리한 것이 인증 설계의 핵심이다. 레이어별 메서드 명명 규칙(Controller → get*/save*, Service → find*/save*, Repository → find*/insert* 등)과 FeignClient를 Virtual Thread로 래핑하는 패턴을 팀 표준으로 정의한 실전 설계 가이드이다.

Read
Jasypt를 이용한 Spring Boot 프로퍼티 암호화

Jasypt를 사용하면 application.yml에 민감한 값을 ENC() 형태로 암호화 저장하고, 런타임에 자동 복호화하여 안전하게 사용할 수 있다. 암호화 키(jasypt.encryptor.password)는 코드에 두지 않고 반드시 환경변수나 VM 옵션으로 외부 주입해야 한다. 간단히 적용 가능하지만 키 관리, 알고리즘 변경, 복호화 범위(spring 하위 프로퍼티 제한) 등의 운영상 주의가 필요하다.

Read
블로그에 새로운 글이 발행되었습니다.