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를 데이터 저장소로 사용함.
Read38x38px PNG을 SVG 아이콘으로 만드는 방법을 나열한 게시글입니다. 방법은 macOS의 `sips` 명령어를 활용하는 방법부터 ImageMagick을 이용하는 방법, 그리고 Base64 인코딩 및 SVG 래퍼 생성하는 방법 등이 소개되어 있습니다. 게시글에 제공된 내용을 실행하면 SVG 문자열이 클립보드에 복사된다는 특징이 있습니다.
ReadLifelog 웹 앱은 Google Drive를 이미지 저장소로 사용하며, 느린 속도 문제를 해결하기 위해 Cache를 적용했다. Metadata API 호출 제거와 Nginx의 proxy_cache를 활용하여 이미지 캐싱을 개선했고, Cloudflare Cache Rule도 적용했다. 이로 인해 이미지 로딩 속도가 향상되었다.
ReadAWS 파트너 AI 클라우드 솔루션 컨퍼런스 참석 후, 제조 AI 트렌드와 Physical AI, Digital Twin, Agentic AI에 대한 인사이트를 얻음. AI Observability의 중요성과 Datadog과 Dynatrace의 AI 기반 시스템 운영 방법을 학습함. 현대오토에버의 스마트 안전 통합관제 시스템 및 플랫폼 서비스 엔지니어 관점에서의 Observability의 시사점을 살펴봄. AI가 엔지니어의 역할을 변화시키고 있다는 전반적인 생각을 얻음.
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를 활용해 로그-트레이스-메트릭 간 연동까지 구현했다. 구축 과정에서 발생한 다양한 버전/설정 이슈를 해결하며 실무적인 트러블슈팅 경험과 운영 안정성을 확보했다.
Read