gRPC는 REST를 대체하는 기술이 아니라, 내부 서비스 간 고성능 통신을 위한 RPC 프레임워크로 HTTP/2와 Protobuf를 사용해 더 빠르고 효율적인 통신을 제공한다. gRPC는 Proto 파일 하나로 API 인터페이스, DTO, 직렬화 규칙을 정의하며, Java 코드를 자동 생성해 개발 생산성을 높인다. 실무에서는 보통 외부 API는 REST, 내부 마이크로서비스 간 통신은 gRPC를 사용하는 구조가 가장 널리 활용된다.
ReadRuby 스크립트와 상호작용하는 Spring Boot 애플리케이션에 JRuby를 내장하기 위한 포인트를 요약하면, WebSocket을 통한 stdout 출력, WebSocket을 통한 stdin 입력, `__FILE__ == $PROGRAM_NAME` 가드 처리, `terminate()` hang 방지, 무한루프 스크립트 종료, 워밍업 처리, 동시 세션 제한, 명령 주입 방지가 있다. JRuby는 Java 생태계에서 Ruby를 실행하는 강력한 방법으로, 각 세션별로 전용 `ScriptingContainer`를 생성하는 것이 중요하다.
ReadSpring AI Ops의 persistent repository cache를 활용한 Code Risk 분석과 Grafana Alerting 분석 흐름의 중요성을 강조합니다. Redis distributed lock을 사용하여 Git 작업 동시성 문제를 효과적으로 해결했으며, `preparePersistentRepository()` 메서드를 통해 동기화를 달성했습니다. 이를 통해 안정적인 분석 환경과 기능적인 fallback 정책을 유지하며 서비스의 가용성을 보장합니다.
ReadGrafana Alerting으로 장애 분석 기능 개발 중, Loki 로그와 JVM stack trace를 분석해서 소스 코드 수정 제안을 하는 기능 추가. 로그와 메트릭으로 원인 파악 후 소스 코드까지 확인 가능해짐. Source file resolve, source snippet 추출, AI 분석 결과와 소스 코드 비교 popup까지 구현하여 개선됨.
ReadAI 기반 운영 자동화 도구인 Spring AI Ops 개발과정 소개. 주요 기능은 Grafana Alerting과 Loki 로그 조회로 AI 장애 분석, GitHub git push로 코드 리뷰를 AI가 수행하는 것. Spring Boot, Kotlin, Spring AI, Redis, Java 21 Virtual Thread 등 기술 스택 사용. 중요 설계 포인트와 트러블슈팅 사례 포함. AI AutoConfiguration을 비활성화하고 Redis를 데이터 저장소로 사용함.
ReadLifelog 웹 앱은 Google Drive를 이미지 저장소로 사용하며, 느린 속도 문제를 해결하기 위해 Cache를 적용했다. Metadata API 호출 제거와 Nginx의 proxy_cache를 활용하여 이미지 캐싱을 개선했고, Cloudflare Cache Rule도 적용했다. 이로 인해 이미지 로딩 속도가 향상되었다.
ReadKafka로 게시글을 발행하고, WebSocket을 통해 실시간 알림을 구현했는데, HTTPS 운영서버에서는 WebSocket이 동작하지 않아 Nginx 설정을 추가하여 문제 해결함. Nginx가 WebSocket 업그레이드 요청에 필요한 HTTP 헤더를 백엔드로 전달하지 않아 발생한 문제로, Upgrade와 Connection 헤더를 설정해야 함. Nginx에 `/ws/` 전용 location 블록을 추가하여 `proxy_http_version`, `proxy_set_header` 등의 설정을 적용하고 서비스를 재시작해야 함.
ReadVultr 서버에 Grafana LGTM 스택(Loki, Prometheus, Tempo, Grafana)을 구성하여 Spring Boot 애플리케이션의 메트릭·로그·트레이스를 통합 관측했다. Virtual 환경 제약 속에서도 Docker 기반 인프라와 OpenTelemetry를 활용해 로그-트레이스-메트릭 간 연동까지 구현했다. 구축 과정에서 발생한 다양한 버전/설정 이슈를 해결하며 실무적인 트러블슈팅 경험과 운영 안정성을 확보했다.
ReadGoogle Drive 이미지 프록시에서 과도한 순차 API 호출로 인한 성능 저하를 캐시 + 병렬 처리로 개선했다. 폴더/파일 ID를 캐싱하고 Virtual Thread로 다운로드·메타 조회를 병렬화하여 응답 시간을 단축했다. 이후 Redis(Valkey) + Spring Cache로 확장하여 캐시 공유·TTL·운영 안정성까지 확보한다.
ReadHTTPS만으로는 개발자 도구·프록시 등에서 비밀번호 평문 노출 위험이 존재하므로, 클라이언트에서 RSA로 한 번 더 암호화하는 방식을 적용한다. 브라우저는 공개키로 암호화하고 서버는 개인키로 복호화하여 기존 인증 로직은 유지하면서 전송 보안을 강화할 수 있다. 다만 이는 HTTPS를 대체하지 않으며, 리플레이 공격·키 관리 등 추가적인 보안 고려가 필요하다.
Read